0

私の問題は、この snmp4j トラップ送信者の警告ログ レベルがマイナー ログ レベルとして受信されることですが、警告ログ レベル メッセージを受信する必要があります。coldstart または warnstart pdu 通知を使用した場合のように、このエラーを解決できる人はいますか? ?

public TrapSenderVersion2(String trapIpDestination, int trapPort,
            String message) {
        try {
            String aMessage = message;
            // Create PDU
            PDU trap = new PDU();
            trap.setType(PDU.NOTIFICATION);
            // trap.setType(PDU.REPORT);

            String baseString = ".1.3.6.1.4.1.6400.";

            OID oid = new OID(baseString);
            trap.add(new VariableBinding(SnmpConstants.sysUpTime,
                    new TimeTicks(5000))); // put your uptime here
            trap.add(new VariableBinding(SnmpConstants.snmpTrapOID,
                    SnmpConstants.coldStart));
            trap.add(new VariableBinding(SnmpConstants.sysDescr,
                    new OctetString("Monitor app")));
            // Add Payload
            Variable messaage = new OctetString(aMessage);
            trap.add(new VariableBinding(oid, messaage));

            // need to specify the system up time
            // trap.add(new VariableBinding(SnmpConstants.sysUpTime,
            // new OctetString(new Date().toString())));
            // trap.add(new VariableBinding(SnmpConstants.snmpTrapOID, new OID(
            // Oid)));
            // trap.add(new VariableBinding(SnmpConstants.snmpTrapAddress,
            // new IpAddress(ipAddress)));

            // trap.add(new VariableBinding(new OID(oid), new OctetString(
            // "Major")));
            // trap.setType(PDU.NOTIFICATION);

            // Specify receiver
            Address targetaddress = new UdpAddress(trapIpDestination + "/"
                    + trapPort);
            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString("public"));
            target.setVersion(SnmpConstants.version2c);
            target.setAddress(targetaddress);

            // Send
            Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
            snmp.send(trap, target, null, null);
        } catch (IOException e) {
            System.out.println("Error Sending Trap: " + e.getMessage());
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws Exception {
        new TrapSenderVersion2("192.168.1.31", Integer.parseInt("162"),
                "Test Trap Message");
    }
}
4

1 に答える 1

0

まず、OID はドットで始まりません。エラーを回避し、プログラムのパフォーマンスを向上させるために、これを削除する必要があります。

あなたの質問に関して:SNMPは、トラップ/通知の「重大度クラス」のような概念を指定していません。したがって、ベンダー固有の TRAP-TYPE または NOTIFICATION-TYPE の MIB 仕様の一部である必要があります。SNMP 標準で重大度を持たないという考えは、受信者がイベントが重大かどうかを判断できる必要があるというものでした。

したがって、あなたの場合、送信者コードではなく、トラップ受信者アプリケーションで「ログレベル」を指定する必要があると思います。

于 2014-02-02T11:54:45.197 に答える