*MRTG [#ifb15a02] RIGHT:更新日&lastmod(); MRTGを使用してGWになるVineLinuxマシンのトラフィックをモニタする。 **準備 [#o4b8bc17] 準備としてはApache2をインストールして、 snmpを[[ここ:https://wwwism.dyndns.org/hp/linux/snmp.htm]]でインストールしたように設定する snmpはnet-snmpでもよい(Vine 5.xから) -net-snmp-devel -net-snmp -net-snmp-utils をrpmでインストール MRTGで使用するsnmpdの設定ファイルは localhostが全ての情報が読めればよいから /etc/snmp/snmpd.confで ##com2sec notConfigUser default public com2sec local localhost private #### # Second, map the security name into a group name: # groupName securityModel securityName ##group notConfigGroup v1 notConfigUser ##group notConfigGroup v2c notConfigUser group local_group v1 local group local_group v2c local group local_group usm local #### # 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 view_all included .1 #### # 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 local_group "" any noauth exact view_all none none とする。 監視対象の機器に対してSNMPリクエスト(iso(1).org(3).dod(6).internet(1).mgmt(2).mib2(1).intreface(2).ifTable(2).ifEntry(1) ifInOctets(10).I/Fポート(1) がMRTGでは送られる。 それ以外にもzlib,libpng,GDを使用するため zlib-devel,libpng-devel,gd,gd-devel をrpmインストールしておく **Download/Install [#z33302cc] [[ここ:http://oss.oetiker.ch/mrtg/]]から mrtg-2.12.2.tar.gzをDownload $ tar zxvf mrtg-2.12.2.tar.gz $ cd mrtg-2.12.2 $ ./configure (略) ---------------------------------------------------------------- Config is DONE! Type 'make' to compile the software ... that wishlist mentioned above does really exist. So if you feel like showing your appreciation for MRTG, this is the place to go. I just love CDs and DVDs -- Tobi Oetiker <tobi@oetiker.ch> ---------------------------------------------------------------- $ make $ su # make install ***設定ファイルの作成 [#m2f90326] cfgmaker --output=(出力ファイル) (コミュニティ)@(ホスト) # /usr/local/mrtg-2/bin/cfgmaker --output=/usr/local/mrtg-2/lib/mrtg.cfg private@localhost --base: Get Device Info on private@localhost: --base: Vendor Id: --base: Populating confcache --coca: populate confcache private@localhost: --coca: store in confcache private@localhost_ Descr lo --> 1 --coca: store in confcache private@localhost_ Descr eth0 --> 2 --coca: store in confcache private@localhost_ Descr eth1 --> 3 --coca: store in confcache private@localhost_ Type 24 --> 1 --coca: store in confcache private@localhost_ Type 6 --> 2 --coca: store in confcache private@localhost_ Type 6 --> 3 (duplicate) --coca: store in confcache private@localhost_ Ip 10.99.99.143 --> 2 --coca: store in confcache private@localhost_ Ip 127.0.0.1 --> 1 --coca: store in confcache private@localhost_ Ip 192.168.100.1 --> 3 --coca: store in confcache private@localhost_ Eth --> 1 --coca: store in confcache private@localhost_ Eth 00-0c-29-03-44-1a --> 2 --coca: store in confcache private@localhost_ Eth 00-0c-29-03-44-24 --> 3 --base: Get Interface Info --base: Walking ifIndex --base: Walking ifType --base: Walking ifAdminStatus --base: Walking ifOperStatus --base: Walking ifMtu --base: Walking ifSpeed --base: Writing /usr/local/mrtg-2/lib/mrtg.cfg # cd /usr/local/mrtg-2/lib ***mrtg.cfgを編集 [#n8adc960] # for UNIX # WorkDir: /home/http/mrtg WorkDir: /usr/local/apache2054/htdocs/mrtg <--変更(グローバル変数) (略) ### Global Defaults # to get bits instead of bytes and graphs growing to the right # Options[_]: growright, bits EnableIPv6: no Language: eucjp <--追加(グローバル変数) IconDir: /mrtg/icons/ <--追加(グローバル変数) ###################################################################### (IPアドレス,インターフェイスを変更した場合は以下を修正できるはず。iptableを INPUTでsnmpをDROPさせてしまう設定をし確認とれず。snmpを再起動の必要があるかも) ### Interface 2 >> Descr: 'eth0' | Name: '' | Ip: '192.168.101.1' | Eth: '00- 03\-99-88-d4-27' ### Target[localhost_2]: 2:private@localhost: SetEnv[localhost_2]: MRTG_INT_IP="192.168.101.1" MRTG_INT_DESCR="eth0" MaxBytes[localhost_2]: 1250000 <--(注1) [MaxBytes1[localhost_2]: 1250000 <--(注2) [MaxBytes2[localhost_2]: 125000 <--(注2) (省略) <tr> <td>Ip:</td> <td>192.168.101.1 ()</td> </tr> (注1) 通常このインタフェースポートが通信できる最大値を1秒当たりのバイト数で記述する。 返された値がもしMaxBytesよりも大きい場合はその値は無視される (注2)値が2つある場合はMaxBytes1,2のようにするとそれぞれのMaxBytesが設定できる。 転送スピードの場合は1が受信2が送信になり、表示グラフの%の値がこれをベースに 表示される。 ***mrtgのフォルダ作成と画像のコピー [#i5346fe8] # mkdir -p /usr/local/apache2054/htdocs/mrtg/icons # cp /usr/local/mrtg-2/share/mrtg2/icons/*.png /usr/local/apache2054/htdocs/ mrtg/icons/ **起動/運用 [#ed2775d3] 1回,2回はlogがないためエラーするが、3回目にはうまく動作する。 [1回目] # /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg [LANGの環境変数を変更しているときは(UTF-8にしている時等) # env LANG=C /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg で起動する] Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for localhost_2 Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for localhost_2 was invalid as well Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove localhost_2.old updating log file Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename localhost_2.log to localhost_2.old updating log file Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for localhost_3 Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for localhost_3 was invalid as well Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove localhost_3.old updating log file Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename localhost_3.log to localhost_3.old updating log file [2回目] # /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove localhost_2.old updating log file Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove localhost_3.old updating log file [3回目] # /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg ***アクセス [#vc878a57] http://10.99.99.143/mrtg/localhost_2.html ***cronで5分ごとにデータを収集 [#ffe06baa] */5 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg LAN側についてはhttp://(サーバ名)/mrtg/localhost_2.html WAN側についてはhttp://(サーバ名)/mrtg/localhost_3.html でアクセスする snmpで実行されるごとに以下のようなsyslogをはきだす Jan 12 18:04:18 minipc last message repeated 4 times これを回避するには /etc/rc.d/init.d/snmpd のファイルを開き、OPTIONSを次のように変更 &color(red){ucd-snmp};では 変更前:OPTIONS="-s -l /dev/null -P /var/run/snmpd -a" 変更後:OPTIONS="-l /dev/null -P /var/run/snmpd -a" &color(red){net-snmp};では 変更前:OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd -a" 変更後:OPTIONS="-Le -Lf /dev/null -p /var/run/snmpd -a" ''オプション表示'' # /usr/sbin/snmpd --help (略) L <LOGOPTS> toggle options controlling where to log to e: log to standard error o: log to standard output n: don't log at all f file: log to the specified file s facility: log to syslog (via the specified facility) **トラフィック以外のモニタ [#ke10024b] /usr/local/mrtg-2/lib/mrtg.cfgに以下のように追加 ***CPUのロードアベレージ [#u21b1f0f] #----------------------------------------------------------------- # CPUのロードアベレージ #----------------------------------------------------------------- Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:private@local host: ##SetEnv[cpu]: URL="http://localhost/mrtg/cpu.html" <--表示するWebページを指 定?? MaxBytes[cpu]: 100 Unscaled[cpu]: dwmy <--データに合わせて拡大縮小しない Options[cpu]: gauge, absolute, noinfo, nopercent <--パラメータについてを参照 YLegend[cpu]: CPU Load(%) <--Y軸の軸の名前(ラベル)を指定 ShortLegend[cpu]: (%) <--単位の表示 LegendI[cpu]: 1分間平均 LegendO[cpu]: 5分間平均 Legend1[cpu]: 1分間平均(%) <--ページの下の方のラベル Legend2[cpu]: 5分間平均(%) <--ページの下の方のラベル Title[cpu]: CPU使用率 SNMP + MRTG PageTop[cpu]: <H1>CPU使用率 SNMP + MRTG</H1> ''CPUロードアベレージはMIBデータでは'' 1分 : .1.3.6.1.4.1.2021.10.1.5.1 5分 : .1.3.6.1.4.1.2021.10.1.5.2 15分 : .1.3.6.1.4.1.2021.10.1.5.3 ***ディスク使用状況 [#h6d8e3cc] HDDについては/etc/snmp/snmpd.confに以下用にパーティションを追加 disk / 10000 <---.1.3.6.1.4.1.2021.9.1.9.1 disk /boot 1000 <---.1.3.6.1.4.1.2021.9.1.9.2 #----------------------------------------------------------------- # ディスク使用状況 #----------------------------------------------------------------- Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.2:private@localhost: ##SetEnv[disk]: URL="http://localhost/mrtg/disk.html" MaxBytes[disk]: 100 Unscaled[disk]: dwmy Options[disk]: gauge, absolute, nopercent, noinfo YLegend[disk]: Disk Used(%) ShortLegend[disk]: (%) LegendI[disk]: / Disk used LegendO[disk]: /boot Disk Used Title[disk]: ディスク使用率 NET-SNMP + MRTG PageTop[disk]: <H1>ディスク使用率 NET-SNMP + MRTG</H1> ***メモリ使用状況 [#v8644e6a] #----------------------------------------------------------------- # メモリ使用状況(グラフ化するのは実メモリおよびスワップの空き領域) # MaxByteには実験機の総スワップ量を指定 #----------------------------------------------------------------- Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:private@localhost: ##SetEnv[mem]: URL="http://localhost/mrtg/mem.html" MaxBytes1[mem]: 384944 <-- 実メモリ(TOPコマンドで調べる) MaxBytes2[mem]: 530136 <-- SWAPメモリ Unscaled[mem]: dwmy Options[mem]: gauge, absolute, noinfo YLegend[mem]: Mem Free(Bytes) ShortLegend[mem]: Bytes kilo[mem]: 1024 <-- kiloがデフォルトで1000 kMG[mem]: k,M,G,T,P <-- スケールの単位(K,M,G,T,P)を正しく表示させる LegendI[mem]: Real LegendO[mem]: Swap Legend1[mem]: 空き物理メモリ[MBytes] Legend2[mem]: 空きスワップメモリ[MBytes] Title[mem]: 空きメモリ量 NET-SNMP + MRTG PageTop[mem]: <H1>空きメモリ量 SNMP + MRTG</H1> ''パラメータについて'' Options: growright -> 現在の時間をグラフの右側に設定する。 gauge -> 取得したデータの値を前回の値との差分を計算せずそのまま使用する。 (ディスク容量やメモリ使用率のグラフに使用) absolute -> 取得したデータの値を前回の値との差分を計算せずそのまま使用 する。gaugeとは異なり、データを計測時間間隔で割ったものを 使用したい場合に指定する。 noinfo -> 出力するページにデバイス名や時刻情報を出力しない bits -> 縦軸の値をbitsとして扱う dorelpercent-> 百分率にしたグラフ[(第1data/第2data)x100]を線として追加する unknaszero -> データ取得できなかった値を0として扱う withzeroes -> 通常0である値は無視されますが、このオプションを指定するこ とでデータを無視しない **外部プログラム(hddtemp)でHDDの温度のモニタ [#zbb41fa5] 以下のような温度モニタ起動シェルを作成 /usr/local/mrtg-2/bin/hddtemp.sh #!/bin/sh hddtemp=`/usr/local/sbin/hddtemp -n /dev/hda` echo $hddtemp echo $hddtemp uptime | awk '{print $3 $4}' echo uso5001 ''温度用のMRTGの設定ファイルを作成'' /usr/local/mrtg-2/lib/hddtemp.cfg Language: eucjp IconDir: /mrtg/icons/ EnableIPv6: no Refresh: 300 WorkDir: /home/okada/public_html/hddtemp <--データが格納されるディレクトリ #----------------------------------------------------------------- # HDD温度状況 #----------------------------------------------------------------- Target[hddtemp]: `/usr/local/mrtg-2/bin/hddtemp.sh` ##SetEnv[hddtemp]: URL="http://localhost/mrtg/hddtemp.html" MaxBytes[hddtemp]: 100 Unscaled[hddtemp]: dwmy Options[hddtemp]: gauge YLegend[hddtemp]: Temp (Celsius) ShortLegend[hddtemp]:° ##kilo[hddtemp]: 1024 ##kMG[hddtemp]: k,M,G,T,P LegendI[hddtemp]: HDD温度 LegendO[hddtemp]: HDD温度 Legend1[hddtemp]: HDD温度[℃] Legend2[hddtemp]: HDD温度[℃] Title[hddtemp]: HDD温度 hddtemp + MRTG PageTop[hddtemp]: <H1> HDD温度 hddtemp + MRTG</H1> ***cronで5分ごとにデータを収集 [#t2be9a00] */5 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/hddtemp.cfg ***CPU Core温度 (i3) [#s6438155] #----------------------------------------------------------------- # CPU(Core 0,1)温度状況 #----------------------------------------------------------------- Target[cputemp]: `/usr/bin/sensors | egrep "Core 0:|Core 1:" | awk '{print $3}' | sed -e 's/+//' -e 's/[^0-9+\.].*//'` MaxBytes[cputemp]: 100 Title[cputemp]: Core 0, Core 1 温度状況 PageTop[cputemp]: <h1>CPU(Core0, Core1)の温度</h1> Options[cputemp]: absolute,gauge,nopercent,noinfo #WithPeak[cputemp]: ymw unscaled[cputemp]: dwmy YLegend[cputemp]: Temperature ShortLegend[cputemp]: C LegendI[cputemp]: Core 0 LegendO[cputemp]: Core 1 Legend1[cputemp]: Core 0 Legend2[cputemp]: Core 1 **インターフェイスの様子 [#l1118984] # snmpwalk localhost private interface interfaces.ifNumber.0 = 3 <--ポートは全部で3つ interfaces.ifTable.ifEntry.ifIndex.1 = 1 interfaces.ifTable.ifEntry.ifIndex.2 = 2 interfaces.ifTable.ifEntry.ifIndex.3 = 3 interfaces.ifTable.ifEntry.ifDescr.1 = lo interfaces.ifTable.ifEntry.ifDescr.2 = eth0 <--インデックス番号2がイーサポート interfaces.ifTable.ifEntry.ifDescr.3 = eth1 interfaces.ifTable.ifEntry.ifType.1 = softwareLoopback(24) interfaces.ifTable.ifEntry.ifType.2 = ethernetCsmacd(6) <--これがMRTGのTYPEに表示される。 interfaces.ifTable.ifEntry.ifType.3 = ethernetCsmacd(6) interfaces.ifTable.ifEntry.ifMtu.1 = 16436 interfaces.ifTable.ifEntry.ifMtu.2 = 1500 <--MTU interfaces.ifTable.ifEntry.ifMtu.3 = 1500 interfaces.ifTable.ifEntry.ifSpeed.1 = Gauge32: 10000000 interfaces.ifTable.ifEntry.ifSpeed.2 = Gauge32: 10000000 <--速度は10Mbps interfaces.ifTable.ifEntry.ifSpeed.3 = Gauge32: 10000000 interfaces.ifTable.ifEntry.ifPhysAddress.1 = interfaces.ifTable.ifEntry.ifPhysAddress.2 = 0:c:29:3:44:1a <--MACアドレス interfaces.ifTable.ifEntry.ifPhysAddress.3 = 0:c:29:3:44:24 (略) ***メモリの状態情報 [#j8d08c8c] # snmpget localhost private .1.3.6.1.4.1.2021.4.4.0 enterprises.ucdavis.memory.memAvailSwap.0 = 530136 <--SWAPが530136kフリー # snmpget localhost private .1.3.6.1.4.1.2021.4.6.0 enterprises.ucdavis.memory.memAvailReal.0 = 130968 <--物理メモリが130968kフリー **net-snmpの場合は以下のようなコマンドで情報を得る。 [#zb38031e] $ rpm -qa | grep snmp net-snmp-5.2.1.2-0vl1 net-snmp-devel-5.2.1.2-0vl1 net-snmp-utils-5.2.1.2-0vl1 $ snmpget -v 2c -c private localhost .1.3.6.1.4.1.2021.4.6.0 UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 31136 **参考 [#t91dc20c] MRTGマニュアル -------------------------------------------------------------------------------- RIGHT:[[元ページ:https://wwwism.dyndns.org/hp/linux/mrtg.htm]]