Last Update: "2009/04/30 08:21:05 makoto" | mrtg | SNMPD & MRTG reference - MRTG 2.9.22設定項目

net-snmp

以前には ucd-snmpd と呼ばれていたものが名前が変って net-snmp となりました。 snmpd の利用方法はいくつも考えられますが、一つは図のように mrtg を使って、情報を収集し、Web サーバで公開することです。 その場合には、次のようにするのが普通です。
  1. snmpd が動いていて、問合せがあれば、情報を送るようにしておく
  2. mrtg が、snmpd に問合せを送り、その情報に基づいて *.html, *.png の形式で情報を作成する
  3. 前項を cron 等でたびたび起動する
  4. apache 等の Web サーバにより、その *.html, *.png 等を 閲覧可能にしておく
PKG_PATH を設定してから
ttyp7:makoto@u 10:24:30/080427(~)# cat /root/.set-PKG_PATH #export PKG_PATH=ftp://ftp2.jp.netbsd.org/pub/pkgsrc/packages/NetBSD-4.0/amd64/All setenv PKG_PATH ftp://ftp2.jp.netbsd.org/pub/pkgsrc/packages/NetBSD-4.0/amd64/All ttyp7:root@u 10:28:13/080427(~)# source /root/.set-PKG_PATH
pkg_add net-snmp をすると、次のようになります。
ttyp7:root@u 10:28:19/080427(~)# pkg_add net-snmp tar: ustar vol 1, 618 files, 12503040 bytes read, 0 bytes written in 10 secs (1250304 bytes/sec) pkg_add: Warning: package `ftp://ftp2.jp.netbsd.org/pub/pkgsrc/packages/NetBSD-4.0/amd64/All/net-snmp-5.4.1nb1.tgz' was built for a different version of the OS: pkg_add: NetBSD/x86_64 4.0 (pkg) vs. NetBSD/x86_64 4.0.0_PATCH (this host) =========================================================================== The following files should be created for net-snmp-5.4.1nb1: /etc/rc.d/snmptrapd (m=0755) [/usr/pkg/share/examples/rc.d/snmptrapd] /etc/rc.d/snmpd (m=0755) [/usr/pkg/share/examples/rc.d/snmpd] =========================================================================== =========================================================================== $NetBSD: MESSAGE,v 1.1.1.1 2002/10/24 08:29:33 jlam Exp $ If you do not have an existing snmpd.conf configuration file, you may generate one using snmpconf(1), e.g.: /usr/pkg/bin/snmpconf -g basic_setup The resulting config file should be placed in: /usr/pkg/etc/snmpd.conf =========================================================================== ttyp7:root@u 10:29:13/080427(~)#

設定

pkg_add の後は /etc/rc.conf/snmpd と /usr/pkg/etc/snmpd.conf を用意します。
snmpd
ttyp7:root@u 10:30:18/080427(~)# cp -p /usr/pkg/share/examples/rc.d/snmpd /etc/rc.d
net-snmp-5.1.2nb3 よりも前の場合なら:
ttyp3:makoto@u 11:51:14/041214(...net/net-snmp)> sudo cp -p /usr/pkg/etc/rc.d/snmpd /etc/rc.d
snmpd.conf
設定例は次のところにあるので参考にします。
/usr/pkg/share/examples/net-snmp/EXAMPLE.conf
これを /usr/pkg/etc/snmpd.conf に写して設定します。設定例(変更例)としては次のようなものがあります
 #       sec.name  source          community
-com2sec local     localhost       COMMUNITY
-com2sec mynetwork NETWORK/24      COMMUNITY
+com2sec local     localhost       foovar
+com2sec mynetwork 192.168.1.0/24      public
http://www.jpring.net/jitaku/snmp-mrtg.html

起動

実際に起動して見ます。 /etc/rc.conf に設定のない時には次のようになってしまいます
ttyp3:makoto@u 11:51:52/041214(...net/net-snmp)> sudo /etc/rc.d/snmpd start /etc/rc.d/snmpd: WARNING: $snmpd is not set properly - see rc.conf(5).
その時でも、一時的に設定して起動出来ます。
ttyp3:makoto@u 11:52:00/041214(...net/net-snmp)> env snmpd=YES sudo /etc/rc.d/snmpd start Starting snmpd.
ps で見ると、次のように動いているのが分ります。
ttyp3:makoto@u 11:52:10/041214(...net/net-snmp)> ps ax |grep snmp 4950 ?? I 0:00.19 /usr/pkg/sbin/snmpd -Ls d -p /var/run/snmpd.pid
誤って通常権限で起動すると、/var/log/messages に次のように言われます
taormina snmpd[11859]: init_kmem: kvm_openfiles failed: /dev/mem: Permission denied
機械が起動する時に自動的に snmpd が動くようにするには /etc/rc.conf に次のように書いておきます。
snmpd=YES

log

放っておくと、/var/log/message に
Dec 26 12:21:46 hostname snmpd[494]: Connection from 192.168.1.100
というような字が沢山記録される。 これを 別の譜にしたいという時には、 これで snmpd からの通常のお知らせは /var/log/daemon に出るようになる。 また、もし /var/log/messages の方に出ないようにしたい時には 上の変更とともに、多分青字の追加が必要。
*.info;auth,authpriv,cron,ftp,kern,lpr,mail.none,daemon.none    /var/log/messages
コンソール画面に出ているものを抑えるにも、同様の変更が必要です。

mrtg

ネットワーク機械の方で snmpd を動かしておき、 mrtg でその情報を図示します。mrtg は別の機械で動かすことも可能です。

mrtg を定期的に動かす

0,5,10,15,20,25,30,35,40,45,50,55 * * * *  /usr/pkg/bin/mrtg /home/makoto/network/mrtg/gw.cfg
この gw.cfg (名前は一例)は /usr/pkg/bin/mrtgcfgmaker を使って作る。
ttyp0:makoto@u2  12:34:30/041214(/tmp)> mrtgcfgmaker --no-down hostname
--base: Get Device Info on public@hostname:
SNMP Error:
no response received
SNMPv1_Session (remote host: "hostname" [192.168.xx.yy].161)
                  community: "public"
                 request ID: 1570008514
                PDU bufsize: 8000 bytes
                    timeout: 2s
                    retries: 5
                    backoff: 1)
 at /usr/pkg/lib/perl5/site_perl/5.6.1/SNMP_util.pm line 570
SNMPWALK Problem for 1.3.6.1.2.1.1 on public@hostname:
 at /usr/pkg/bin/mrtgcfgmaker line 709
以上は、snmpd.conf の設定が不充分な時。 実際には次のように作ります
ttyp0:makoto@u2 9:30:43/051021(/tmp)> mrtgcfgmaker --no-down u2 > u2.cfg
--base: Get Device Info on public@u2:
--base: Vendor Id: 
--base: Populating confcache
--snpo: confcache public@u2: Descr gm0 --> 1
--snpo: confcache public@u2: Descr lo0 --> 2
--snpo: confcache public@u2: Descr fw0 --> 3
--snpo: confcache public@u2: Type 6 --> 1
--snpo: confcache public@u2: Type 24 --> 2
--snpo: confcache public@u2: Type 144 --> 3
--snpo: confcache public@u2: Ip 127.0.0.1 --> 2
--snpo: confcache public@u2: Ip 192.168.1.31 --> 1
--snpo: confcache public@u2: Eth 00-xx-65-43-ef-yy --> 1
--snpo: confcache public@u2: Eth  --> 2
--snpo: confcache public@u2: Eth  --> 3 (duplicate)
--base: Get Interface Info
--base: Walking ifIndex
--base: Walking ifType
--base: Walking ifAdminStatus
--base: Walking ifOperStatus
--base: Walking ifSpeed
ttyp0:makoto@u2 9:31:40/051021(/tmp)> 
これだけですと、WorkDir が設定されていないので、次のようになります。
ttyp0:makoto@u2  13:47:43/041214(/tmp)> mrtg hostname.cfg 
ERROR: "WorkDir" not specified in mrtg config file
そこで、WorkDir を、実際に書き出す位置に設定します。
ERROR: CFG Error in "workdir", line 19: Working directory /home/htdocs/www/mrtg/u2 does not exist
それは予め作っておきます。

snmpget

動作を確認する一つの方法は次のようにすることです
snmpget -v 1 -c COMMUNITY TARGET '.1.3.6.1.4.1.2021.10.1.5.3' UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 162
TARGET の部分には例えば機械の名前を入れます。ここで使った OID = .1.3.6.1.4.1.2021.10.1.5.3 は、次のようなもので CPU 使用率を意味します。
.1.3.6.1.4.1.2021.10.1.5.1  1 分間
.1.3.6.1.4.1.2021.10.1.5.2  5 分間
.1.3.6.1.4.1.2021.10.1.5.3 15 分間
こんな(良く分らない)数字を使わなくても、
snmpget -v 1 -c public pisa memTotalSwap.0
のような 名前で指定 することも出来ます。

snmpwalk

手軽に snmpd の動作を確認するには snmpalk を使うと簡単です
 snmpwalk -v 1 -c COMMUNITY TARGET OID
のように使います。 OID の部分は、
 .1.3.6.1.4.1.2021.11.50.0
のような数字とか、system というような包括的な名前などを入れます。 例えば、次のように入力します。
 snmpwalk -v 1 -c public hostname system
また例えば uptime を表示させたければ次のようにします
snmpwalk -Os -c COMMUNITY -v 1 HOSTNAME sysUpTime.0

man pages

snmpwalk(1)
snmpcmd(1)
variables(5)
RFC 1066 MIB Management Information Base
/usr/pkg/share/snmp/mibs/

参考

3. SNMPの要素(マネージャ/エージェント/MIB)
http://www.stackasterisk.jp/tech/systemManagement/snmp01_02.jsp
MRTGで行うサーバー監視 2004-08-28 (JPRING.NET)
http://www.jpring.net/jitaku/snmp-mrtg.html
MRTGの設定 (樹羅工房 jura.homeip.net)
http://jura.kb.homeip.net/redhat/mrtg/index.html
SNMPD & MRTG (絹)
http://www.ki.nu/software/NetBSD/mrtg/
MRTGによるサーバ監視(SuSE編)
http://www.aconus.com/~oyaji/suse/mrtg_suse.htm