着信SNMPトラップを収集するUbuntuサーバーがあります。現在、これらのトラップはPHPスクリプトを使用して処理され記録されます。
文書/etc/snmp/snmptrapd.conf
traphandle default /home/svr/00-VHOSTS/nagios/scripts/snmpTrap.php
このスクリプトは比較的長く、多くのデータベース操作が含まれています。通常、サーバーは1日に数千のトラップを受信するため、このスクリプトは過度のCPU時間を消費します。私が理解したところ、これはトラップが受信されるたびにPHPスクリプトの起動コストが高いためです。
私はこのスクリプトを書き直すように求められており、このスクリプトをデーモンとして実行することを検討しています。 Ubuntuデーモンを作成できます。私の質問は、snmptrapd.conf
ファイルを使用してこのデーモンにトラップハンドラをどのように渡すことができるかということです。
よろしくお願いします。
答え1
あなたの質問のために実際には混乱していますが、snmptrapdサービスを処理するためにPHPスクリプトを使用するべきではないと思います。
文書(/etc/snmp/snmptrapd.conf)布団SNMPトラップこのサービスは任意の実行レベル(3、4、5)で有効にすることができ、MySQLにトラップを記録するように設定できるため、別のデーモンを作成する必要はありません。
一方、PHPインタプリタを初期化し、SNMP、MySQL、およびその他の拡張機能をロードしてトラップを処理するよりも小さいシェルスクリプトがより効率的です。ここに一つあります。簡単な例、データベース処理を追加する必要があります(私はい完了)。
しかし、PHPを使って解決策を実装したい場合は、利用可能な解決策を見てください。PHP用のSNMP拡張