Net-SNMP のインストール

SNMPエージェントを実装したソフトウェア。監視対象としたい機器にインストールする。今回はサーバへ、インストールを行なった。

ダウンロード

ダウンロードサイトから入手する。rpm は上手く行かなかったので、tar でダウンロードした。ダウンロードしたアーカイブ名は、net-snmp-5.1.2.tar.gz である。

構築

$ ./configure

途中で設定項目の質問が出てくるが、後で設定ファイルにて変更できるので、適当に答えておく。

$ make
(中略)
# make install

10分ほどで、問題なく終了した。

設定

設定ファイルは、アーカイブの中にある EXAMPLE.conf を用いる。

[root@pokota net-snmp-5.1.3]# cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf

設定内容を一部変更する。

まずは、ネットワーク範囲とコミュニティ名を記述する。ネットワーク範囲は環境に合わせて記述し、コミュニティ名は任意のものを記述する。

#       sec.name  source          community
com2sec local     localhost       private
com2sec mynetwork 192.168.0.0/24  public

名称や連絡先を設定する。内容は適当でよい。デフォルトのままでもよい。

syslocation Chiba
syscontact Me <******@din.or.jp>

なお、実際の運用では、localhost にのみ応えるようにしている。

起動

以下のコマンドで起動する。

[root@pokota snmp]# /usr/local/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd
-a
-Lsd
syslog へ出力を行なう
-Lf
snmpd の出力先
-p
PIDの場所
-a
送信元アドレスの取得を行なう

起動スクリプト

自動起動設定を行なう。起動スクリプトについては、NET-SNMPのインストール(マロンくん.NET) に掲載されていたものを、拝借した。

先のスクリプトを、/etc/rc.d/init.d/snmpd として置く。そして、chkconfig コマンドで確認をする。

[root@pokota snmp]# /sbin/chkconfig --list
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
httpd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
(中略)
ypxfrd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
snmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

snmpd が追加されている。snmpd を自動起動するように、設定する。

[root@pokota snmp]# /sbin/chkconfig snmpd on
[root@pokota snmp]# /sbin/chkconfig --list
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
httpd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
(中略)
ypxfrd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
snmpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off

バージョン

インストールを試みて、度重なる失敗に各種バージョンを入れてみた。原因については、不明のまま。根深そうなので、バージョンを変えることで対応してきた。ちなみに環境は、下記OSを利用している。

5.1.3

Net-SNMP 起動後に、PDU作成失敗のメッセージが出力される。バージョン5.1.3にて、発生した。

Jul  2 19:53:03 pokota snmpd[25373]: pdu failed to be created

5.2.1.2

起動はするが、snmpwalk を実行すると、異常状態になる。syslog を見ると、CPU などの情報を取るために、kernel が動作している過程で、問題が起きている模様。そのため、プロセスのステータスがD(割込み不可の待機状態)になる。2chのスレッドにも、VineLinux2.6 で、VineSeed にあった5.2.1 を入れて同様の現象が報告されていることから、 何かしら問題があるものと思われる。以下に、その時のsyslog を掲載する。

Jul  3 02:17:23 pokota  7月  3 02:17:23 snmpd: snmpd起動 succeeded
Jul  3 02:17:23 pokota snmpd[8707]: NET-SNMP version 5.2.1.2
Jul  3 02:23:32 pokota snmpd[8707]: Received SNMP packet(s) from UDP: [127.0.0.1
]:32769
Jul  3 02:23:32 pokota kernel: Unable to handle kernel paging request at virtual
 address 00010002
Jul  3 02:23:32 pokota kernel:  printing eip:
Jul  3 02:23:32 pokota kernel: c01eb6c0
Jul  3 02:23:32 pokota kernel: *pde = 00000000
Jul  3 02:23:32 pokota kernel: Oops: 0000
Jul  3 02:23:32 pokota kernel: CPU:    0
Jul  3 02:23:32 pokota kernel: EIP:    0010:[bond_ioctl+124/776]    Tainted: P
Jul  3 02:23:32 pokota kernel: EIP:    0010:[<c01eb6c0>]    Tainted: P
Jul  3 02:23:32 pokota kernel: EFLAGS: 00010206
Jul  3 02:23:32 pokota kernel: eax: cb70ff44   ebx: 00010000   ecx: 00000000   e
dx: c01eb644
Jul  3 02:23:32 pokota kernel: esi: 00008948   edi: cb70ff44   ebp: bfffda1c   e
sp: cb70fec4
Jul  3 02:23:32 pokota kernel: ds: 0018   es: 0018   ss: 0018
Jul  3 02:23:32 pokota kernel: Process snmpd (pid: 8707, stackpage=cb70f000)
Jul  3 02:23:32 pokota kernel: Stack: cff0a800 00008948 cb70ff44 bfffda1c 000000
01 cb70ff64 00000000 cb70ff00
Jul  3 02:23:32 pokota kernel:        cb70ff44 cb70ff54 cb70ff64 cb70ff44 000089
48 cb70ff44 bfffda1c c0235dd5
Jul  3 02:23:32 pokota kernel:        cff0a800 cb70ff44 00008948 cb70ff44 cb70e0
00 00000000 c0235fa3 cb70ff44
Jul  3 02:23:32 pokota kernel: Call Trace:    [dev_ifsioc+853/876] [dev_ioctl+43
9/872] [inet_ioctl+435/452] [sock_ioctl+33/40] [sys_ioctl+539/564]
Jul  3 02:23:32 pokota kernel: Call Trace:    [<c0235dd5>] [<c0235fa3>] [<c02628
f7>] [<c022ec25>] [<c0143e47>]
Jul  3 02:23:32 pokota kernel:   [system_call+51/56]
Jul  3 02:23:32 pokota kernel:   [<c01085c3>]
Jul  3 02:23:32 pokota kernel:
Jul  3 02:23:32 pokota kernel: Code: 66 83 7b 02 01 75 14 8b 54 24 40 8b 42 68 5
0 e8 88 ec ff ff

5.1.2

ようやく正常に動いた。なお、以前のバージョンのファイルはきちんと削除しておく。

デーモン起動時に、コマンドラインの段階でエラーが出て起動しない場合は、ライブラリなどが、以前のものが混在していないか、チェックをする。

動作確認

ログ

snmpd.conf の内容に誤りがある場合、syslog(/var/log/messages) にエラーメッセージが出力される(或いは、/var/log/snmpd.log など)。今回は、ネットワーク指定を正しく行なわなかったため、下記のようなメッセージが出力された。

Jul  2 17:07:54 pokota snmpd[24961]: Error opening specified endpoint "udp:161"

snmpd.conf 修正後の再起動では、きちんと前のプロセスを終了させておく。単に kill しただけでは、終了せずにトラップされてしまうので、-9 オプション(強制終了) を付けておく。

snmpwalk

snmpwalk コマンドで、動作確認をする。SNMPエージェントが自身を監視対象とする場合は、localhostを指定する。

[root@pokota log]# /usr/local/bin/snmpwalk -v 2c -c private localhost
-v
SNMPプロトコルのバージョン。1,2c,3 があるが、3は SecurityName の指定など必要なので、1 や 2c を利用しておく
-c
コミュニティ名

UDPポート

udp161番ポート(SNMP)が開いていることを確認する。

[root@pokota net-snmp]# netstat -a --udp
稼働中のインターネット接続 (サーバと確立)
Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態
(中略)
udp        0      0 *:snmp                  *:*
(以下略)

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-08-12 (日) 19:40:59