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

&color(red){Target[cpu]のような指定は 統計情報名が cpuとなりこの名前がhtmlファイルの名前になる cpu.html};

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

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