タイトルのままです。
あるサーバ①で特定のスクリプトを実行した結果を他のサーバ②で取得します。
サーバ①の設定
SNMPで返値を見る為のスクリプトを書いておきます。
今回は、pingでサーバ②との通信レイテンシ(ミリ秒)を計るスクリプトにしました。
# mkdir /script # vi /script/ping-sec-count.sh -----スクリプト中身----- #! /bin/sh ping -c 1 -w 10 52.197.***.*** | awk -F '[= ]' 'NR==2{print $10}' ------------------------ # chmod +x /script/ping-sec-count.sh
SNMPエージェントをインストール。
# yum install net-snmp
下記のように設定ファイルに追記します。
# vi /etc/snmp/snmpd.conf -----下記を追記----- # サーバ②のIPアドレスを記載 rocommunity monitor 52.197.***.***/32 # 返値を見たいスクリプトを記載 extend ping-sec-count /script/ping-sec-count.sh
上部の記述の意味としては、情報を取得するだけ(read-only=ro)の、
52.197.×××.×××/32からのアクセスを許可する、
「monitor」という名前のcommunity(グループ)を定義しています。
スクリプト行の「ping-sec-count」に関しては後ほど分かります。
snmpdを起動します。
# /etc/init.d/snmpd start
サーバ②の設定
snmpwalkコマンドが使えるよう、下記インストールを実施。
# yum install net-snmp-utils
サーバ①のIPアドレスを指定して、スクリプトの返値を見てみます。
# snmpwalk -v 1 -c monitor 52.193.***.*** nsExtendOutputFull
「-v 1」はSNMPバージョン1を表します。
バージョン1の認証方法は「コミュニティ名」なので、
「-c monitor」とすることで認証が通り、情報を取得できるようになります。
「nsExtendOutputFull」は取得する情報(スクリプトの返値)を指定しています。
[コマンド実行結果]
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."ping-sec-count" = STRING: 0.446
スクリプトの返値が表示されました!
サーバ①のsnmpd.confで書いた「ping-sec-count」も、ここに表示されています。
Exec format error
私がちょっとはまったエラーです。
サーバ②でsnmpwalkを実行すると「Exec format error」と表示されてしまいます。
# snmpwalk -v 1 -c monitor 52.193.***.*** nsExtendOutputFull
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."ping-sec-count" = STRING: /script/ping-sec-count.sh: Exec format error
サーバ①側のスクリプト先頭にシバン(#! /bin/sh)を記載すると直りました。
ちゃんと書いてるよ!と思っても、案外「!」が抜けてたりして。
その他
全体的な情報取得
# snmpwalk -v 1 -c monitor 52.193.***.*** nsExtendObject
NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendCommand."ping-sec-count" = STRING: /script/ping-sec-count.sh
NET-SNMP-EXTEND-MIB::nsExtendArgs."ping-sec-count" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendInput."ping-sec-count" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."ping-sec-count" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."ping-sec-count" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."ping-sec-count" = INTEGER: run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."ping-sec-count" = INTEGER: permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."ping-sec-count" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."ping-sec-count" = STRING: 0.377
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."ping-sec-count" = STRING: 0.377 ←今回取得した値
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."ping-sec-count" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."ping-sec-count" = INTEGER: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ping-sec-count".1 = STRING: 0.377
MIBを含めた全体的な情報を取得
# snmpwalk -v 1 -c monitor 52.193.***.*** nsExtendObject -On
.1.3.6.1.4.1.8072.1.3.2.1.0 = INTEGER: 1
.1.3.6.1.4.1.8072.1.3.2.2.1.2.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING: /script/ping-sec-count.sh
.1.3.6.1.4.1.8072.1.3.2.2.1.3.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING:
.1.3.6.1.4.1.8072.1.3.2.2.1.4.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING:
.1.3.6.1.4.1.8072.1.3.2.2.1.5.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: 5
.1.3.6.1.4.1.8072.1.3.2.2.1.6.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: exec(1)
.1.3.6.1.4.1.8072.1.3.2.2.1.7.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: run-on-read(1)
.1.3.6.1.4.1.8072.1.3.2.2.1.20.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.3.2.2.1.21.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: active(1)
.1.3.6.1.4.1.8072.1.3.2.3.1.1.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING: 0.339
.1.3.6.1.4.1.8072.1.3.2.3.1.2.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING: 0.339 ←今回取得した値
.1.3.6.1.4.1.8072.1.3.2.3.1.3.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: 1
.1.3.6.1.4.1.8072.1.3.2.3.1.4.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: 0
.1.3.6.1.4.1.8072.1.3.2.4.1.2.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116.1 = STRING: 0.339
MIBを指定してスクリプトの返値を取得
# snmpwalk -v 1 -c monitor 52.193.***.*** .1.3.6.1.4.1.8072.1.3.2.3.1.2.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."ping-sec-count" = STRING: 0.368
投稿者プロフィール
- 2015年8月入社。弊社はインフラ屋ですが、アプリも作ってみたいです。