4

システムにnet-snmp5.7.2をインストールし、アプリケーション用にapp_agent.confを作成し、

agentXSocket    udp:X.X.X.X:1610

エクスポートされたSNMPCONFIGPATH=path_to_app_agent.conf

また、/ usr / etc / snmp/snmp.confにsnmpd.confを記述しました

trap2sink  X.X.X.Y 
agentXSocket    udp:X.X.X.X:1610

/ etc /snmp/と/var/net-snmp/にさらに2つのsnmpd.confがあります

/ etc / snmpからの構成:

com2sec notConfigUser  default       public
com2sec notConfigUser  v1            notConfigUser
com2sec notConfigUser  v1            notConfigUser
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
access notConfigGroup "" any noauth exact systemview none none 
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat

/ var / net-snmpからの構成:

   setserialno 1322276014
   ifXTable .1 14:0 18:0x $
   ifXTable .2 14:0 18:0x $
   ifXTable .3 14:0 18:0x $
   engineBoots 14
   oldEngineID 0x80001f888000e17f6964b28450

snmpdとsnmptrapdを起動しました。今私のコードで私は呼んでいます

netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
init_agent("app_agent");
init_snmp("app_agent");

init_snmpは警告をスローしています

警告:agentxマスターエージェント([NIL])への接続に失敗しました:

なんでわからないの?助けてくれてありがとう

4

6 に答える 6

5

私は今、quagga と ospfd でこの問題に遭遇しましたstrace -f -p PID

connect(14, {sa_family=AF_FILE, path="/var/agentx/master"}, 110) = -1 EACCES (Permission denied)

だから私:

$ ls -al /var/agentx/
total 8
drwx------   2 root root 4096 Sep 12 20:50 .
drwxr-xr-x. 27 root root 4096 Sep 12 20:13 ..
srwxrwxrwx   1 root root    0 Sep 12 20:50 master

そして私:

$ chmod 755 /var/agentx/

すぐに zebra と ospfd が Agentx サブネットに接続しました。

$ tail -10f /var/log/quagga/zebra.log
2014/09/12 20:52:59 ZEBRA: snmp[info]: NET-SNMP version 5.5 AgentX subagent connected

$ tail -10f /var/log/quagga/ospfd.log
2014/09/12 20:52:59 OSPF: snmp[info]: NET-SNMP version 5.5 AgentX subagent connected

これは RHEL6 で quagga-0.99.23-2014062401 を実行しています。お役に立てれば。

于 2014-09-13T04:09:11.793 に答える
1

unix Sockets であろうと Tcp:localhost:750 であろうと、同様の問題がありましたが、同じエラーメッセージが表示されました。

/var/log/quagga/ospfd.log:  warning, failed to connect to Master AgentX [nill] or [tcp:localhost:750].

SELINUX を無効にすることで問題を解決しました。

于 2015-10-05T14:02:33.650 に答える
0

これはあなたの問題に対する答えではありませんが、snmpd サービスが適切に起動しないかダウンしたときに、「警告: agentx マスター エージェント ([NIL]) に接続できませんでした:」というメッセージが表示されました。私の SNMP サブエージェントでは、彼らが提供するサンプル example-demon.c を使用しました。ループごとに agent_check_and_process(0) を処理しているときに、このメッセージがノンストップで (約 1 秒ごとに) 表示されることがわかりました。

while (true) {
    agent_check_and_process(0); /* 0 == don't block */
}

これが私がそれを修正した方法です。

netsnmp_transport *snmpTransport;
while( true ) {
        // Check to see snmpd is still running
        snmpTransport = netsnmp_transport_open_client("agentx", NULL);
        if (snmpTransport == NULL)
        {
            // Just went down?
            if (snmpAgentDown == false)
            {
                snmp_log( LOG_INFO, "Net-SNMP Agent is down\n" );
                snmpAgentDown = true;
            }

            Sleep(5000); // Sleep for a 5 sec
        } else
        {
            if (snmpAgentDown)
            {
                snmp_log( LOG_INFO, "Net-SNMP Agent is back up\n" );
                snmpAgentDown = false;
            }

            // Close connection test
            snmpTransport->f_close(snmpTransport); // This burn me without; its needed
            netsnmp_transport_free(snmpTransport);

            // Process SNMP request and notifications
            agent_check_and_process( 0 ); // 0 == don't block, 1 = block
            Sleep(1); // Sleep for 1ms; Need to sleep thread, but need subAgent to be responsive too
        }
        i++;
    }

snmpd がダウンした場合、私のアプリはそれがダウンしていることを検出し、agent_check_and_process() を処理せず、「警告: agentx マスター エージェント ([NIL]) への接続に失敗しました:」が表示されないようにします。snmpd が戻ってくると、それを処理します。

最後の注意: net-snmp-5.7.2 パッケージの subagent.c ファイル subagent_open_master_session() 関数に基づいたコードであると判断しました。snmpTransport->f_close(snmpTransport) も必要であり、snmp_close() が subagent_open_master_session() 関数の最後で行ったことに従って決定します。

于 2021-02-10T22:49:55.730 に答える