** SNMP + MRTGについて [#q359a1b4]
- SNMP(Simple Network Management Protocol)は、ネットワークに接続されて機器類を監視するために~
作成されたプロトコルで、このプロトコルを使用することによってハードウエアが物理的に壊れたとか、~
ネットワーク回線が不調である等々をソフトウエアから見る(監視)することができる。
- MRTG(Multi Router Traffic Grapher)は、その名の通りルーターを流れるデータ量を起点単位に数値の~
統計を取りグラフ化してくれるツールです。MRTGは、SNMPマネージャの機能をもっているため、SNMPが~
組み込まれているハードウエアなりソフトウエアに対しエージェント機能を使用し、数値の統計を~
取り込む事が可能です。使用例としては、ネットワーク監視、ディスク監視、CPU負荷監視等の用途に~
使用することができます。
: 前提条件 | COLOR(RED){''net-snmp, mrtg''}パッケージがインストール((パーケッジの[[インストール方法>パーケッジのインストールの巻]]はこちらを参照))されていることが条件。~
パッケージの確認は、COLOR(RED){''rpm -q net-snmp''}コマンドで確認できるよ。~
** snmp.conf を編集する [#sc86aae6]
- オリジナルの設定ファイルを必ずバックアップしておく。
# cd /etc/snmp
# cp snmpd.conf snmpd.conf.org
- COLOR(RED){''/etc/snmp/snmpd.conf''} ファイルを編集する。
####
# First, map the community name "public" into a "security name"
# sec.name source community
#com2sec notConfigUser default public
com2sec local localhost private
com2sec mynetwork 192.168.0.0/24 public
####
# Third, create a view for us to let the group have rights to:
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
#view systemview included .1.3.6.1.2.1.1
#view systemview included .1.3.6.1.2.1.25.1.1
view all included .1 80
####
# Finally, grant the group read-only access to the systemview view.
# group context sec.model sec.level prefix read write notif
#access notConfigGroup "" any noauth exact systemview none none
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none
####
# Second, map the security name into a group name:
# groupName securityModel securityName
#group notConfigGroup v1 notConfigUser
#group notConfigGroup v2c notConfigUser
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork
# Check the / partition and make sure it contains at least 10 megs.
disk / 10000
- SNMPを起動する。(ついでに起動時に自動的になるようにも設定)
# /etc/init.d/snmpd start
# /sbin/chkconfig snmpd on
** mrtg.cfg を編集する [#ma6612ce]
- 通常は、COLOR(RED){''/usr/bin/cfgmaker''} コマンドで mrtg.cfg ファイルを作成するが、~
大部分を修正&追加するのでここでは1から作成してみる。基本定義部分は必ず必要だがそれ以外は~
適時必要に応じて定義する。
- COLOR(RED){''/etc/mrtg/mrtg.cfg''} ファイルを編集する。
-- 基本定義部分
WorkDir: /var/www/mrtg
Options[_]: growright, noinfo
EnableIPv6: no
Language:eucjp
-- ネットワークトラフィック情報
### Interface eth0 / ns ###
Target[eth0]: \eth0:public@192.168.0.xxx:
SetEnv[eth0]: MRTG_INT_IP="192.168.0.xxx" MRTG_INT_DESCR="eth0"
MaxBytes[eth0]: 12500000
Title[eth0]: eth0 -- ns
PageTop[eth0]: <H1>eth0 -- ns</H1>
-- CPU使用率情報
### CPU Load Average / ns ###
Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@192.168.0.xxx
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy
Options[cpu]: gauge, absolute, growright, noinfo, nopercent
YLegend[cpu]: CPU Load(%)
ShortLegend[cpu]: (%)
LegendI[cpu]: 1分間平均
LegendO[cpu]: 5分間平均
Legend1[cpu]: 1分間平均(%)
Legend2[cpu]: 5分間平均(%)
Title[cpu]: CPU使用率 -- ns
PageTop[cpu]: <H1>CPU使用率 -- ns</H1>
-- メモリ使用率情報
### Memory Free / ns ####
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:public@192.168.0.xxx
MaxBytes1[mem]: 483228 ← freeコマンドによる実メモリ合計値
MaxBytes2[mem]: 983032 ← freeコマンドによるスワップ合計値
Unscaled[mem]: dwmy
Options[mem]: gauge, absolute, growright, noinfo
YLegend[mem]: Mem Free(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: 空き物理メモリ[MBytes]
Legend2[mem]: 空きスワップメモリ[MBytes]
Title[mem]: 空きメモリ量 -- ns
PageTop[mem]: <H1>空きメモリ量 -- ns</H1>
-- ディスク使用率情報
### Disk Used / ns ####
Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.1:public@192.168.0.xxx
MaxBytes[disk]: 100
Unscaled[disk]: dwmy
Options[disk]: gauge, absolute, growright, nopercent, noinfo
YLegend[disk]: Disk Used(%)
ShortLegend[disk]: (%)
LegendI[disk]: / Disk used
LegendO[disk]: / Disk Used
Legend1[disk]: / Disk used
Legend2[disk]: / Disk used
Title[disk]: ディスク使用率 -- ns
PageTop[disk]: <H1>ディスク使用率 -- ns</H1>
** MRTGを実行する [#x6831a2e]
- MRTGで参照したい情報(上記の設定)を COLOR(RED){''/etc/mrtg/mrtg.cfg''} ファイルに定義を行ったら~
必ず下記のコマンドを実行してください。このコマンドは3回実行しないとエラー表示が消えませんので~
注意してください。※3回実行するのは、統計情報を更新するファイルが正しく作成されないからです。
# mrtg /etc/mrtg/mrtg.cfg
# mrtg /etc/mrtg/mrtg.cfg
# mrtg /etc/mrtg/mrtg.cfg
- 統計情報は、Web(Apache)から参照するのを前提としています。~
そのため COLOR(RED){''/etc/httpd/conf.d/mrtg.conf''} ファイルを編集しディレクティブ、アクセス権などを設定する必要があります。
# vi /etc/httpd/conf.d/mrtg.conf
- 設定が終了したら、Apacheの再起動を行います。
# /etc/init.d/httpd restart
- Web上から統計情報を確認してみます。
http://サーバIPアドレス/mrtg/eth0.html
http://サーバIPアドレス/mrtg/cpu.html
http://サーバIPアドレス/mrtg/mem.html
http://サーバIPアドレス/mrtg/disk.html
** mrtg.cfg の定義内容について [#b81203fd]
- 統計情報をグラフ化するための情報は、snmpエージェントより取得するか、自分で同じ書式にて~
値を作成しMRTGでその情報をグラフ加工するのの2通りあります。
- Target セクション(snmpエージェントより取得する方法)
Target[xxx]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.1:public@192.168.0.xxx
xxx には、mrtgで管理する単位を指定します。この xxx がmrtgコマンドによって、xxx.htmlと作成されます。
.1.3.6.1.4.1.2021.9.1.9.1 は、snmpのMIB情報を指定します。
:public@192.168.0.xxx は、どのアドレス、コミニティを指定します。
- Target セクション(自分で作成したプログラムから取得する方法)
Target[xxx]: `/home/script/hoge.pl``
グラフ化に使用するのは、第1,2パラメタしか実際は使用しないので下記のような
プログラムでグラフ化することができます。実際には処理結果の値を設定しますよね(w
#!/usr/bin/perl
printf "20\n5\n\n\n";
- Title セクション
Title[xxx]: ディスク使用率 -- ns
xxx には、mrtgで管理する単位を指定します。この xxx がmrtgコマンドによって、xxx.htmlと作成されます。
ディスク使用率 -- ns は、タイトルです。
- 他にもグラフ化パラメタは沢山あります。下記URLを参照してみては如何?
-- [[SNMPによるネットワークシステムの監視第03回:MRTGの設定>http://www.stackasterisk.jp/tech/systemManagement/snmp03_05.jsp#3_3]]
** MRTG のトップインデックスを作成する [#l60ca8d9]
- 個別に作成した統計情報をトップインデックスにて一覧でみることができます。
indexmaker --columns=1 \
--addhead="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-jp\">" \
/etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
- 上記で作成されると下記URLで一覧化された全ての情報を参照できるはずです。
http://サーバIPアドレス/mrtg
** snmp を使用したシステム監視 [#h5444386]
- 自分で作成したshやプログラムなどを定期的に実行し、その情報を外部から簡単に参照したいと~
いう要望はどのシステムでもあります。snmp では、そういう要件を簡単にできます。
- サンプルにも書かれていますが、COLOR(RED){''snmpd.conf''} の exec セクションに以下の様に定義します。~
snmpwalk コマンドを実行すると、そのホストでコマンドが実行され結果が mib に格納されます。~
※snmpwalk コマンドを連打してもある一定の時間以上は、複数回実行されないみたいです。
-- snmpd.conf
exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest
-- 値の参照と実行
% snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.50
enterprises.ucdavis.50.1.1 = 1
enterprises.ucdavis.50.2.1 = "shelltest"
enterprises.ucdavis.50.3.1 = "/bin/sh /tmp/shtest"
enterprises.ucdavis.50.100.1 = 35
enterprises.ucdavis.50.101.1 = "hello world."
enterprises.ucdavis.50.101.2 = "hi there."
enterprises.ucdavis.50.102.1 = 0
- MRTG で、上記の結果の値を取得しグラフ化する場合は、以下のような Target セクションになります。
Target[xxx]: .1.3.6.1.4.1.2021.50.101.1&.1.3.6.1.4.1.2021.50.101.2:public@192.168.0.xxx
: こうすると | たとえば /tmp/shtest で値を返すだけではなく、snmptrap コマンドも併用して~
使うとかなり強固なシステム監視ができるかもしれません。
-- [[http://www.gulf.or.jp/~too/freebsd/EXAMPLE.conf.jp.txt]]
-- [[Net-SNMPの設定方法>http://www.boreas.dti.ne.jp/~mishiro/agent.html]]
** その他 [#g370892b]
- snmpwalk コマンドは、COLOR(RED){''net-snmp-utils''} パッケージに含まれます。
** 参考にさせて頂いたサイト様 [#g0d01030]
-- [[ネットワークトラフィック監視ツール導入(NET-SNMP+MRTG) - Fedoraで自宅サーバー構築>http://fedorasrv.com/mrtg.shtml]]
-- [[snmptrap について>http://www.sea-bird.org/doc/Qube3J/net_snmp_trap.html]]
-- [[SNMP + MRTG について>http://www.sea-bird.org/doc/Qube3J/snmp_mrtg.html]]