はじめに
ユーザ数とプロセス数、ロードアベレージ、メモリ使用量、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ファイルを出力します。
この時点では、以下のようなグラフが作成されます。
以下では割愛しますが、/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を確認すると以下のような表示になります。