** 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]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS