SNMP対応サービスを監視するPerlスクリプトがあります。
それが機能する方法は、複数のサービスを含む構成ファイルがあり、各サービスには収集するメトリックのリストがあります。
例:
[switch]
switch_stuff1 = 1.3.6.1.2.1.7.1.0
switch_stuff2 = 1.3.6.1.2.1.7.4.0
switch_stuff3 = 1.3.6.1.2.1.6.2.0
switch_stuff4 = 1.3.6.1.2.1.6.3.0
switch_stuff5 = 1.3.6.1.2.1.6.5.0
[router]
router_stuff1 = 1.3.6.1.2.1.6.8.0
router_stuff2 = 1.3.6.1.2.1.6.8.0
router_stuff3 = 1.3.6.1.2.1.6.9.0
[database]
db_stuff1 = 1.3.6.1.2.1.6.4.0
db_stuff2 = 1.3.6.1.2.1.6.5.0
スクリプトは構成ファイルをループし、すべてのメトリックの情報を取得して、出力をCSVファイルに書き込みます。
さて、私が助けを必要としていることに。
SNMPパスでワイルドカードを使用して収集できるようにするロジックを実装するように依頼されました。したがって、私の設定ファイルは次のようになる必要があります。
[switch]
switch_stuff1 = 1.5.1.6.*
switch_stuff2 = 1.45.*.12
したがって、コレクションが発生すると、どういうわけか次のようにループします。
switch_stuff1
1.5.1.6.0 – found, continue
1.5.1.6.1 – found, continue
1.5.1.6.2 – not found, stop
switch_stuff2
1.45.0.12 – found, continue
1.45.1.12 – found, continue
1.45.2.12 – found, continue
1.45.3.12 – not found, stop
私は現在Net::SNMPライブラリを使用しています:
http://metacpan.org/pod/Net::SNMP
これは可能でしょうか?get_entriesメソッドまたはget_tableメソッドを使用して「snmpwalk」をシミュレートすることを考えていましたが、それが機能するかどうかはよくわかりません。
誰かが助けてくれるか、少なくとも私を正しい方向に向けることができれば、それは大いにありがたいです。
ありがとうございました。