SNMPを介してUSBUPSステータスを監視する方法
SNMPを介してUSBUPSステータスを監視する方法
USB接続のUPSを搭載したコンピューターがいくつかあります。 すべてのコンピューターはapcupsdプログラムを使用します。 すべてのユニットの電源の状態に関する情報を1か所に集約するとします。 snmpdはすでにそこで実行されているので、その機能を拡張することは論理的です。
以下の解決策は、 管理者のブログは、すべてのsnmpdユニットから一度にデータを収集します。
SNMPを介してUSBUPSステータスを監視するには、最初にsnmpデーモン構成を変更する必要があります。
準備
以下を設定snmpd.confに追加します。
#APC UPS
パス.1.3.6.1.4.1.318.1.1.1 / bin / sh /etc/snmp/apcupsd.sh
/etc/snmp/apcupsd.shスクリプトの内容は次のとおりです。
#!/ bin / sh -f#apcupsdがオンラインであることを確認します。 apcaccess> / dev / null 2>&1 || exit 0 PLACE = ".1.3.6.1.4.1.318.1.1.1" REQ = "$ 2"#要求されたOID# #割り当てられた値をログに記録するだけでSET要求を処理します。 #このような「割り当て」は永続的ではなく、#構文や要求された値も検証されないことに注意してください。 # if ["$ 1" = "-s"]; それから。 エコー$ * >> / tmp / passtest.log。 0を終了します。 fi# #GETNEXTリクエスト-次の有効なインスタンスを決定します。 # if ["$ 1" = "-n"]; それから。 のケース「$ REQ」。 $ PLACE | \ $ PLACE.0 | \ $ PLACE.0。* | \ $ PLACE.1 | \ $ PLACE.1.1.0 *)RET = $ PLACE.1.1.1.0;; $ PLACE.1 * | \ $ PLACE.2.0 | \ $ PLACE.2.0。* | \ $ PLACE.2.1 | \ $ PLACE.2.2.0 *)RET = $ PLACE.2.2.1.0;; $ PLACE.2.2.1 *)RET = $ PLACE.2.2.2.0;; $ PLACE.2.2.2 *)RET = $ PLACE.2.2.3.0;; $ PLACE.2.2.3 *)RET = $ PLACE.2.2.4.0;; $ PLACE.2 * | \ $ PLACE.3.0 * | \ $ PLACE.3.1 * | \ $ PLACE.3.2.0 *)RET = $ PLACE.3.2.1.0;; $ PLACE.3.2.1 * | \ $ PLACE.3.2.2 * | \ $ PLACE.3.2.3 *)RET = $ PLACE.3.2.4.0;; $ PLACE.3.2.4 *)RET = $ PLACE.3.2.5.0;; $ PLACE.3.2 * | \ $ PLACE.4.0 * | \ $ PLACE.4.1 * | \ $ PLACE.4.2.0 *)RET = $ PLACE.4.2.1.0;; $ PLACE.4.2.1 *)RET = $ PLACE.4.2.2.0;; $ PLACE.4.2.2 *)RET = $ PLACE.4.2.3.0;; $ PLACE.4.2.3 *)RET = $ PLACE.4.2.4.0;; $ PLACE.4.2。* | \ $ PLACE.5 * | \ $ PLACE.6 * | \ $ PLACE.7.0 * | \ $ PLACE.7.1 * | \ $ PLACE.7.2.0 * | \ $ PLACE.7.2.1 * | \ $ PLACE.7.2.2 *)RET = $ PLACE.7.2.3.0;; $ PLACE.7.2.3 *)RET = $ PLACE.7.2.4.0;; $ PLACE.7 * | \ $ PLACE.8.0 *)RET = $ PLACE.8.1.0;; *)終了0;; esac。 そうしないと。 # #GETリクエスト-有効なインスタンスを確認します。 # のケース「$ REQ」。 $ PLACE.1.1.1.0 | \ $ PLACE.2.2.1.0 | \ $ PLACE.2.2.2.0 | \ $ PLACE.2.2.3.0 | \ $ PLACE.2.2.4.0 | \ $ PLACE.3.2.1.0 | \ $ PLACE.3.2.4.0 | \ $ PLACE.3.2.5.0 | \ $ PLACE.4.2.1.0 | \ $ PLACE.4.2.2.0 | \ $ PLACE.4.2.3.0 | \ $ PLACE.4.2.4.0 | \ $ PLACE.7.2.3.0 | \ $ PLACE.7.2.4.0 | \ $ PLACE.8.1.0)RET = $ REQ;; *)終了0;; esac。 fi# #「プロセス」GET *リクエスト-ハードコードされた値を返します。 # エコー「$ RET」 のケース「$ RET」。 $ PLACE.1.1.1.0)echo "string"; apcaccess -u-pモデル; 出口0;; $ PLACE.2.2.1.0)echo "Gauge32"; apcaccess -u -p BCHARGE; 出口0;; $ PLACE.2.2.2.0)echo "Gauge32"; apcaccess -u -p ITEMP; 出口0;; $ PLACE.2.2.3.0)echo "Timeticks"; echo $(($(LC_ALL = C printf "%。* f" 0 $(apcaccess -u -p TIMELEFT))* 6000)); 出口0;; $ PLACE.2.2.4.0)echo "string"; apcaccess -u -p BATTDATE; 出口0;; $ PLACE.3.2.1.0)echo "Gauge32"; apcaccess -u -p LINEV; 出口0;; $ PLACE.3.2.4.0)echo "Gauge32"; apcaccess -u -p LINEFREQ; 出口0;; $ PLACE.3.2.5.0)echo "string"; apcaccess -u -p LASTXFER; 出口0;; $ PLACE.4.2.1.0)echo "Gauge32"; apcaccess -u -p OUTPUTV; 出口0;; $ PLACE.4.2.2.0)echo "Gauge32"; apcaccess -u -p LINEFREQ; 出口0;; $ PLACE.4.2.3.0)echo "Gauge32"; apcaccess -u -p LOADPCT; 出口0;; $ PLACE.4.2.4.0)echo "Gauge32"; apcaccess -u -p LOADPCT; 出口0;; $ PLACE.7.2.3.0)echo "string"; apcaccess -u -p SELFTEST; 出口0;; $ PLACE.7.2.4.0)echo "string"; apcaccess -u -p SELFTEST; 出口0;; $ PLACE.8.1.0)echo "Gauge32"; エコー1; 出口0;; *)echo "string"; エコー "ack..。 $ RET $ REQ "; 出口0;; #起こらないはずです。 esac。
OIDについて疑問がある場合は、それらを見つけることができます ここ. 一部のUPSモデルは、すべてのパラメーターまたは間違った形式を返さないため、コードに不正確な部分やスタブが含まれている可能性があることに注意してください。
これで準備が整いました。
SNMPを介してUSBUPSステータスを監視する方法
SNMPを介してUSBUPSステータスを監視するには、次のコマンドを実行します。 snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. 出力は次のようになります。
SNMPv2-SMI:: Enterprises.318.1.1.1.1.1.1.0 = STRING: "Smart-UPS 750"
SNMPv2-SMI:: Enterprises.318.1.1.1.2.2.1.0 = Gauge32:100
SNMPv2-SMI:: Enterprises.318.1.1.1.2.2.2.0 = Gauge32:36
SNMPv2-SMI:: Enterprises.318.1.1.1.2.2.3.0 =タイムティック:(432000)1:12:00.00
SNMPv2-SMI:: Enterprises.318.1.1.1.2.2.4.0 = STRING: "2020-05-14"
SNMPv2-SMI:: Enterprises.318.1.1.1.3.2.1.0 = Gauge32:227
SNMPv2-SMI:: Enterprises.318.1.1.1.3.2.4.0 = Gauge32:50
SNMPv2-SMI:: Enterprises.318.1.1.1.3.2.5.0 = STRING: "自動または明示的なセルフテスト"
SNMPv2-SMI:: Enterprises.318.1.1.1.4.2.1.0 = Gauge32:227
SNMPv2-SMI:: Enterprises.318.1.1.1.4.2.2.0 = Gauge32:50
SNMPv2-SMI:: Enterprises.318.1.1.1.4.2.3.0 = Gauge32:13
SNMPv2-SMI:: Enterprises.318.1.1.1.4.2.4.0 = Gauge32:13
SNMPv2-SMI:: Enterprises.318.1.1.1.7.2.3.0 =文字列: "いいえ"
SNMPv2-SMI:: Enterprises.318.1.1.1.7.2.4.0 = STRING: "NO"
SNMPv2-SMI:: Enterprises.318.1.1.1.8.1.0 = Gauge32:1
監視スクリプトをさらに構成すると、次の気の利いたグラフを取得できます。