MRTGの設定

投稿者: | 2011年7月11日
Pocket

はじめに

ユーザ数とプロセス数、ロードアベレージ、メモリ使用量、IO負荷、Apacheのプロセス数を取得します。

サーバ環境

製品名 Dell OPTIPLEX SX280
CPU Intel Pentium4 CPU 2.8GHz
メモリ 3GB(PC2-5300U(1GB) x 1枚、PC2-5300U(2G) x 1枚)
ストレージ IBM SATA 160GB

インストール

root@labo:~# aptitude install mrtg
以下の新規パッケージがインストールされます:
  libio-socket-inet6-perl{a} libsnmp-session-perl{a} libsocket6-perl{a} mrtg
更新: 0 個、新規インストール: 4 個、削除: 0 個、保留: 47 個。
562 kB のアーカイブを取得する必要があります。展開後に 1,753 kB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] Y

・・・

パッケージの設定

 lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu mrtg を設定しています tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
 x                                                                                                                                                     x
 x MRTG 設定ファイルが MRTG を動作させているユーザ (デフォルトでは 'root') 以外のユーザから読み取れるようになっている場合、このファイルは SNMP のコミ  x
 x ュニティ名を含んでいるためにセキュリティ上のリスクになる可能性があります。                                                                          x
 x                                                                                                                                                     x
 x 何かそうしたくない特別な理由 (例えば 'mrtg-rrd' のようなサードパーティ製のツールがファイルを読み取る必要がある場合など) がない限り、このファイルを  x
 x root ユーザの所有にし、このユーザのみが読み取れるようにしておくのをお勧めします。                                                                   x
 x                                                                                                                                                     x
 x /etc/mrtg.cfg を root ユーザの所有にして、このユーザだけが読み取れるようにしますか?                                                                 x
 x                                                                                                                                                     x
 x                                             <はい>                                               <いいえ>                                           x
 x                                                                                                                                                     x
 mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

設定ファイルの生成

root@labo:~# mkdir -p /var/www/mrtg
root@labo:~# cfgmaker --global 'WorkDir: /var/www/mrtg' --output /etc/mrtg.cfg public@localhost

cfgmakerの最初の引数は設定ファイルのWorkDir変数を設定するものです。ポーリングを行う機器から集めたあらゆるデータを保管する場所を指定します。

2番目の引数にはcfgmakerの出力(設定ファイル)を送る場所を指定します。

最後の引数はポーリングを行う機器とコミュニティを指定します。

設定ファイルの修正

cfgmakerはコマンドラインで指定した機器に対して1.3.6.1.2.1.2にsnmpwalkを行い、ポーリング対象となる機器の一覧を表す論理的なエントリを作ります。

本環境では以下の4IFありますが、使用しているのはeth0だけですので他は全て削除してしまいます。

root@labo:~# snmpwalk -c public -v 1 localhost .1.3.6.1.2.1.2.2.1.2
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
IF-MIB::ifDescr.4 = STRING: pan0

WorkDirが冗長だったり不要なHTMLコードがあったりするので全て削除します。

[]内には後々、フィルタリングできるようにlinuxserverという文字列を入れるように統一しておきます。

root@labo:~# vi /etc/mrtg.cfg
# Created by
# /usr/bin/cfgmaker --global "WorkDir: /var/www/mrtg" --output /etc/mrtg.cfg public@localhost

Options[_]: growright,bits

EnableIPv6: no
WorkDir: /var/www/mrtg

### Interface 2 >> Descr: 'eth0' | Name: 'eth0' | Ip: '192.168.0.111' | Eth: '00-0f-1f-e9-8a-52' ###

Target[linuxserver.eth0]: 2:public@localhost:
SetEnv[linuxserver.eth0]: MRTG_INT_IP="192.168.0.111" MRTG_INT_DESCR="eth0"
MaxBytes[linuxserver.eth0]: 12500000
Title[linuxserver.eth0]: Traffic Analysis for 2 -- labo
PageTop[linuxserver.eth0]: <h1>Traffic Analysis for 2 -- labo</h1>

設定ファイルを修正したら、以下のようにmrtgコマンドを実行します。

root@labo:~# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
2011-07-03 20:31:52, Rateup WARNING: /usr/bin/rateup could not read the primary log file for localhost_2
2011-07-03 20:31:52, Rateup WARNING: /usr/bin/rateup The backup log file for localhost_2 was invalid as well
2011-07-03 20:31:52, Rateup WARNING: /usr/bin/rateup Can't remove localhost_2.old updating log file
2011-07-03 20:31:52, Rateup WARNING: /usr/bin/rateup Can't rename localhost_2.log to localhost_2.old updating log file
root@labo:~# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
2011-07-03 20:31:54, Rateup WARNING: /usr/bin/rateup Can't remove localhost_2.old updating log file
root@labo:~# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
root@labo:~#

3回実施するとエラーが出なくなります。

root@labo:~# ls -al /var/www/mrtg/
合計 140
drwxr-xr-x 2 root root  4096 2011-07-03 20:31 .
drwxr-xr-x 3 root root  4096 2011-07-03 19:27 ..
-rw-r--r-- 1 root root  1395 2011-07-03 20:31 localhost_2-day.png
-rw-r--r-- 1 root root  1375 2011-07-03 20:31 localhost_2-month.png
-rw-r--r-- 1 root root  1432 2011-07-03 20:31 localhost_2-week.png
-rw-r--r-- 1 root root  1709 2011-07-03 20:31 localhost_2-year.png
-rw-r--r-- 1 root root  5926 2011-07-03 20:31 localhost_2.html
-rw-r--r-- 1 root root 48211 2011-07-03 20:31 localhost_2.log
-rw-r--r-- 1 root root 48211 2011-07-03 20:31 localhost_2.old
-rw-r--r-- 1 root root   538 2011-07-03 20:31 mrtg-l.png
-rw-r--r-- 1 root root   414 2011-07-03 20:31 mrtg-m.png
-rw-r--r-- 1 root root  1759 2011-07-03 20:31 mrtg-r.png

ファイルが作成されました。

localhost_2.htmlにアクセスするとグラフが表示されます。

root@labo:~# less /etc/cron.d/mrtg
*/5 *   * * *   root    if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi

cronはインストールで自動登録されていました。

グラフの追加

ユーザ数とプロセス数

まずはじめにOIDを確認します。

ユーザ数

root@labo:~# snmpwalk -c public -v 1 localhost .1.3.6.1.2.1.25.1.5.0
HOST-RESOURCES-MIB::hrSystemNumUsers.0 = Gauge32: 1

プロセス数

root@labo:~# snmpwalk -c public -v 1 localhost .1.3.6.1.2.1.25.1.6.0
HOST-RESOURCES-MIB::hrSystemProcesses.0 = Gauge32: 113

mrtg.cfgを再度修正します。

root@labo:~# vi /etc/mrtg.cfg

省略

### User & Process

Target[linuxserver.users]: 1.3.6.1.2.1.25.1.5.0&1.3.6.1.2.1.25.1.6.0:public@localhost
MaxBytes[linuxserver.users]:200
Options[linuxserver.users]: gauge, growright
Title[linuxserver.users]: debian(dell) : Number of users and processes
YLegend[linuxserver.users]: Users/Processes
LegendI[linuxserver.users]:  Users:
LegendO[linuxserver.users]:  Processes;
PageTop[linuxserver.users]: <h1>Number of users and processes</h1>

末尾に上記を追加しました。増加していく値の場合はcounterですが、瞬間値をとる場合はgaugeを使用します。YLegendはY軸のラベル、LegendIは第一パラメータのグラフの下に付く凡例、LegendOは第二パラメータのグラフの下に付く凡例です。

root@labo:~# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg

上記コマンドをエラーがなくなるまで繰り返します(3回が目安)。

root@labo:~# indexmaker --title "Linux Server" --filter name=~'linuxserver' --output /var/www/mrtg/index.html /etc/mrtg.cfg

上記コマンドを実行すると、mrtg.cfgで定義されているグラフの一覧となるhtmlファイルを出力します。

この時点では、以下のようなグラフが作成されます。

2 graph

以下では割愛しますが、/etc/mrtg.cfgを修正するたびに、必ず上記二つのコマンドを実行します。

apacheのプロセス数

/etc/snmp/snmpd.confにて

proc apache2

を設定すると、prCountにてプロセス数(以下の例では4つ)が取得できます。

root@labo:/var/www/mrtg# snmpwalk -c public -v 1 localhost prTable
UCD-SNMP-MIB::prIndex.1 = INTEGER: 1
UCD-SNMP-MIB::prNames.1 = STRING: apache2
UCD-SNMP-MIB::prMin.1 = INTEGER: 0
UCD-SNMP-MIB::prMax.1 = INTEGER: 0
UCD-SNMP-MIB::prCount.1 = INTEGER: 4
UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrMessage.1 = STRING:
UCD-SNMP-MIB::prErrFix.1 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrFixCmd.1 = STRING:

OIDは以下の通りです。

root@labo:/var/www/mrtg# snmptranslate -On -IR prCount
.1.3.6.1.4.1.2021.2.1.5

mrtg.cfgに追加します。

root@labo:~# vi /etc/mrtg.cfg

省略

### Apache Process Num

Target[linuxserver.users]: 1.3.6.1.4.1.2021.2.1.5&1.3.6.1.4.1.2021.2.1.5:public@localhost
MaxBytes[linuxserver.users]:20
Options[linuxserver.users]: gauge, growright
Title[linuxserver.users]: debian(dell) : Number of Apache processes
YLegend[linuxserver.users]: Apache Processes
LegendI[linuxserver.users]:  Processes:
PageTop[linuxserver.users]: <h1>Number of Apache Processes</h1>

ロードアベレージ

MRTGは少数値を扱えないので、ロードアベレージを100倍した値(.1.3.6.1.4.1.2021.10.1.5.x)を使用します。

root@labo:/var/www/mrtg# snmpwalk -c public -v 1 localhost .1.3.6.1.4.1.2021.10.1.5
UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 101
UCD-SNMP-MIB::laLoadInt.2 = INTEGER: 103
UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 100

上から順に、1分平均、5分平均、15分平均です。

root@labo:~# vi /etc/mrtg.cfg

省略

### Load Average
Target[linuxserver.load]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@localhost
MaxBytes[linuxserver.load]: 10000
Options[linuxserver.load]: gauge,nopercent,noinfo,growright
YLegend[linuxserver.load]: load Average
YTicsFactor[linuxserver.load]: 0.01
Factor[linuxserver.load]: 0.01
ShortLegend[linuxserver.load]: pt.
LegendI[linuxserver.load]: 1 minutes average
LegendO[linuxserver.load]: 5 minutes average
Legend1[linuxserver.load]: 1 minutes average
Legend2[linuxserver.load]: 5 minutes average
Title[linuxserver.load]: load Average
PageTop[linuxserver.load]: <h1>Load Average</h1>

メモリ使用量

root@labo:~# vi /etc/mrtg.cfg

省略

### Memory
Target[linuxserver.mem]: 1.3.6.1.4.1.2021.4.6.0&1.3.6.1.4.1.2021.4.6.0:public@localhost:
MaxBytes[linuxserver.mem]: 3105452
Options[linuxserver.mem]: gauge,growright
Title[linuxserver.mem]: Available Memory (real)
PageTop[linuxserver.mem]: <h1>Available Memory real on WebServer</h1>
YLegend[linuxserver.mem]: Available Memory
ShortLegend[linuxserver.mem]: Mbyte
LegendI[linuxserver.mem]: real memory available

IO

diskIONRead (1.3.6.1.4.1.2021.13.15.1.1.3) と diskIONWritten (1.3.6.1.4.1.2021.13.15.1.1.4)を取得します。

root@labo:~# vi /etc/mrtg.cfg

省略

### Disk IO
Target[linuxserver.io]: 1.3.6.1.4.1.2021.13.15.1.1.3.1&1.3.6.1.4.1.2021.13.15.1.1.4.1:public@localhost:
MaxBytes[linuxserver.io]: 200000
Options[linuxserver.io]: growright
Title[linuxserver.io]: Disk I/O
PageTop[linuxserver.io]: <h1>Disk I/O</h1>
YLegend[linuxserver.io]: Disk I/O
ShortLegend[linuxserver.io]: blocks/s
LegendI[linuxserver.io]:read
LegendO[linuxserver.io]:write

ここまでで、indexmakerを使用して作成したindex.htmlを確認すると以下のような表示になります。

all graph

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です