*MRTG [#ifb15a02]

RIGHT:更新日&lastmod();
 
MRTGを使用してGWになるVineLinuxマシンのトラフィックをモニタする。 
**準備 [#o4b8bc17]

準備としてはApache2をインストールして、 snmpを[[ここ:https://wwwism.dyndns.org/hp/linux/snmp.htm]]でインストールしたように設定する 

MRTGで使用するsnmpdの設定ファイルは

localhostが全ての情報が読めればよいから

/etc/snmp/snmpd.confで

 com2sec local localhost        private
 
 group   local_group   v1    local
 group   local_group   v2c   local
 group   local_group   usm   local
 
 view    view_all   included   .1
 
 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
 $ 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

**インターフェイスの様子 [#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]]

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS