印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux net-snmp が動かない

SNMP のパッケージ net-snmp をインストールしたが,反応がない。ucd-snmp の設定ファイルをそのまま持ち込んだのがいけなかった。net-snmp の設定の書式は ucd-snmp と少し違うようだ。

■ ■ ■

SNMP (Simple Network Management Protocol) はネットワーク機器を監視するためのプロトコルである。何が嬉しいかというと,SNMP デーモンをサーバで動かしておけば,サーバのディスク容量やトラフィック量などをネットワーク経由でモニタすることができ,MRTG でグラフ化することができるからである。Windows 用の SNMP エージェントもある(nlog(n): Windows XP の SNMP サービス)。Vine Linux 3.1 には,SNMP のパッケージが2種類用意されている。ucd-snmp と net-snmp である。Net-SNMP の History によると,Net-SNMP は UCD-SNMP の後継となっているようだ。私は今まで ucd-snmp しか使ったことがなかったが,新しい方の net-snmp を導入してみることにした。

Vine Linux 3.1 ではデフォルトでインストールされないが,ネットワーク経由で簡単にインストールすることができる。

# apt-get install net-snmp

net-snmp-5.1.1 がインストールされる。実際の動作をコマンドで確認したいので,ユーティリティもインストールしておく。snmpwalk コマンドはユーティリティパッケージ net-snmp-utils に入っている。

# apt-get install net-snmp-utils

net-snmp の設定ファイルは ucd-snmp と同じ /etc/snmp/snmp.conf である。すぐに使ってみたかったので,以前に使っていた ucd-snmp 用の snmp.conf の主要部分をそのまま貼り付けて snmpd の起動を行った。

# /etc/init.d/snmpd start

これで上手く動作すれば問題はない。setup コマンドで次回の OS リブート時に自動的に snmpd が起動するように設定すれば作業終了である。しかし,思い通りに動作しなかった。以下はこの対処のメモである。

動作確認のために,snmpwalk コマンドを入力したが,反応がない。net-snmp の snmpwalk コマンドは,ucd-snmp に比べてオプションの書式が厳密になっているので注意。例えばコミュニティー名の前には「-c」をつけなければならない。

$ snmpwalk -v 1 -c private localhost
Timeout: No Response from localhost

原因が分からないので,ログをとってみることにした。snmpd は /etc/init.d/snmpd スクリプトから起動される。デフォルトでは,ログを LOG_DAEMON 経由でとるか,/dev/null に出力するようになっているので(つまりログを採るようになっていないので),テキストファイルに出力するように変更する。/etc/init.d/snmpd を編集し,ログの出力先を /var/log/snmpd.log にする。

# OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd -a" # デフォルト設定をコメントアウト
OPTIONS="-Lsd -Lf /var/log/snmpd.log -p /var/run/snmpd -a"

snmpd を再起動すると,ログには次のようにメッセージが出力された。

$ cat /var/log/snmpd.log
/etc/snmp/snmpd.conf: line 104: Error: missing notifyView parameter
/etc/snmp/snmpd.conf: line 105: Error: missing notifyView parameter
net-snmp: 2 error(s) in config file(s)
NET-SNMP version 5.1.1

snmpd.conf の104行目と105行目は次のようになっていた。

# (ucd-snmp では問題ないが net-snmp ではエラーとなる)
access  MyROGroup ""     any       noauth    exact  all    none
access  MyRWGroup ""     any       noauth    exact  all    all

これは ucd-snmp の設定をそのままコピーした部分である。この記述が違うらしい。MyROGroup は読み込み専用グループ,MyRWGroup は読み込み書き込み可能グループという意味だと思われる。上に書いてあるサンプルを見ると,

##                context sec.model sec.level prefix read   write  notif
#access MyROGroup ""      any       noauth    0      all    none   none
#access MyRWGroup ""      any       noauth    0      all    all    all

となっていて,比べてみるとフィールドの数が1つ足りないことが分かった。それならばと思い,サンプルのコメントをそのまま外してみることにした。しかし,エラーになってしまった。

(上記のコンフィグレーションのコメント「#」を外した場合)
$ cat /var/log/snmpd.log
/etc/snmp/snmpd.conf: line 104: Error: bad prefix match parameter "0", should be: exact or prefix - installing anyway
/etc/snmp/snmpd.conf: line 105: Error: bad prefix match parameter "0", should be: exact or prefix - installing anyway
net-snmp: 2 error(s) in config file(s)
NET-SNMP version 5.1.1

「『0』というプリフィックスパラメータがいかん,exact か prefix にしろ」と言っている。そこで,ucd-snmp の例にもう1つフィールドを追加することにした。

access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    all

これで上手くいった。snmpwalk にも応えてくれるようになった。

snmpd を再起動すると,ログが一旦クリアされて新たに出力されるようになっている。つまり,追記されないので古いログは残らないのである。再起動する度にログが消えるのはどうかとおもったが,ログファイルが大きくならないのはいいことだと解釈することにした。ちなみに,どうしても古いログを残しておきたい場合には,syslog 経由で出力する方法をとればよい。

Posted by n at 2005-05-25 23:07 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?