Net-SNMP snmpd 検査では、拡張 sh スクリプト出力はどの OID を確認しますか?

Net-SNMP snmpd 検査では、拡張 sh スクリプト出力はどの OID を確認しますか?

スクリプトで確認された条件がtrueの場合、「空」をエコーするシェルスクリプトを使用してextend-shNet-SNMPの機能を拡張しました。ただし、この文字列(および)snmpdを含む複数のOIDがあるようです。監視する正しいOIDは何ですか?ここで最良の方法は何ですか?ちなみに「バックアップ」は名札だけです。また、Net-NMP でも同様の動作を見ることができます。nsExtendOutput1Line."backup"nsExtendOutputFull."backup"nsExtendOutLine."backup".1ウィキペディア存在する値の検索部分。

答え1

どのOIDを使用するかは、スクリプト出力の内容、関心のある部分、およびこれらのOIDを確認する監視システム内で処理しやすい部分によって異なります。

SNMPのOIDは(標準化された)名前にすぎません。彼らはsnmpdそれを知っています。

OIDには内部的に文字列が含まれているため、通常、文字列は文字数を数え、各文字にASCIIコードを追加して数値に変換されます。たとえば、"hello"(5文字の長さ)は次のようになります。5.104.101.108.108.111.

snmptranslateを使用してこれを確認できます。

% snmptranslate .1.3.6.1.4.1.8072.1.3.2.3.1.1.5.104.101.108.108.111
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello"

しかし、質問に戻ります。検証用に構成できるさまざまなOIDは、extend拡張スクリプトの実行から複数​​の属性を取得するのに役立ちます。

すべての機能を表示するには、2行を出力し、次のように設定された任意の値を返す実行可能shスクリプトを検討してください。extend hello /usr/local/sbin/myscript

#!/bin/sh
echo today
date
exit 33

snmpwalkを介した出力は次のとおりです。

% snmpwalk -v2c -c mysecretcommunity localhost .1.3.6.1.4.1.8072.1.3.2.3.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello" = STRING: today
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello" = STRING: today
Sat Dec 19 15:59:59 UTC 2015
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello" = INTEGER: 2
NET-SNMP-EXTEND-MIB::nsExtendResult."hello" = INTEGER: 33

したがって、確認できるOIDは次のとおりです。

NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello"

これ最初スクリプト出力行。興味のあるスクリプトの出力が1行だけである場合、または重要なデータがすべて最初の行にある場合は、この方法を使用してください。

NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello"

スクリプトが複数行を印刷してそれらをすべて記録する必要がある場合は、この方法がより良い可能性があります。

NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello"

これ数字スクリプト出力の行数です。出力に何行があるかを知りたい場合は、このオプションを使用してください。スクリプトが処理するファイルごとに 1 行を印刷し、処理されるファイルの数だけに興味がある場合は、これが必要な場合があります。

NET-SNMP-EXTEND-MIB::nsExtendResult."hello"

スクリプトが失敗したか成功したかを確認し、適切な終了コードを返したことを確認したい場合、このOIDはそのコードを返します。

NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".1 = STRING: today
NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".2 = STRING: Sat Dec 19 16:02:44 GMT 2015

興味のある情報を含む特定の行がわかっている場合は、上記のOIDを使用して特定の行番号を取得できます。

これらの項目とそれ以上は、システムの次の場所にあるこのOIDのMIBファイルで利用可能で文書化されている必要があります(やや技術的な方法ではありません)。/usr/share/snmpd/mibs/NET-SNMP-EXTEND-MIB.txt

したがって、すべては、実行するスクリプトで処理および/または監視する必要がある項目によって異なります。

SNMP は UDP を介して行われるため、設定されたタイムアウト内に応答が表示されない場合、多くのエージェントがタイムアウトするか、要求を再送信します。可能複数回実行したり、監視ステーションに結果を表示せずに実行することができます。非常に短い実行スクリプト(つまり、すべての場合に数秒で完了)にのみこの機能を使用することをお勧めします。

別のアプローチはバックグラウンドプロセスを開始し、〜しなければならない適切なロック方法により同時実行を防止します。後者がより多くの質問をした場合は、実行したい作業に応じて他のトピックでより良い回答を得ることができるようです。

関連情報