>> HOME >> CentOS 4 MENU >> MRTG サーバー監視システム 1 (ネットワーク負荷 CPU使用率 空きメモリ DISK使用率)
障害の兆候を見逃さないために、NET-SNMPと MRTGを利用してサーバーの状況を外部から監視できるようにします。
監視する項目は
  • ネットワークトラフィック
  • CPU 使用率
  • メモリ使用量
  • HDD 使用量

 1. NET-SNMP インストール
 2. NET-SNMP 設定
1 ) NET-SNMP 設定ファイル /etc/snmp/snmpd.conf 編集
 3. NET-SNMP の起動と自動起動設定
1 ) NET-SNMP の起動
2 ) NET-SNMP の自動起動設定
 4. MRTG インストール
 5. MRTG の設定
1 ) MRTG 設定ファイルの生成
2 ) MRTG 設定ファイル /etc/mrtg/mrtg.cfg の編集
 6. CPU 使用率 監視の設定
1 ) MRTG 設定ファイル /etc/mrtg/mrtg.cfg の編集
 7. メモリ使用量 監視の設定
1 ) メモリ搭載量の取得
2 ) MRTG 設定ファイル /etc/mrtg/mrtg.cfg の編集
 8. ディスク使用率 監視の設定
1 ) MRTG 設定ファイル /etc/mrtg/mrtg.cfg の編集
 9. MRTG の監視ページ作成
1 ) MRTG の監視ページ作成実行
2 ) MRTG のインデックスページ作成
10. Apache の設定
1 ) MRTG アクセス設定ファイル /etc/httpd/conf.d/mrtg.conf の編集
2 ) Apache への設定反映
11. MRTG 自動実行について
1. NET-SNMP インストール
[root@linux ~]# yum -y -y install net-snmp 
Repository dag is listed more than once in the configuration
Setting up Install Process
Setting up repositories
dries                     100% |=========================|  951 B    00:00
dag                       100% |=========================| 1.1 kB    00:00
update                    100% |=========================|  951 B    00:00
base                      100% |=========================| 1.1 kB    00:00
addons                    100% |=========================|  951 B    00:00
extras                    100% |=========================| 1.1 kB    00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for net-snmp to pack into transaction set.
net-snmp-5.1.2-11.EL4.6.i 100% |=========================|  33 kB    00:00
---> Package net-snmp.i386 0:5.1.2-11.EL4.6 set to be updated
--> Running transaction check
--> Processing Dependency: libsensors.so.3 for package: net-snmp
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for lm_sensors to pack into transaction set.
lm_sensors-2.8.7-2.40.3.i 100% |=========================|  23 kB    00:00
---> Package lm_sensors.i386 0:2.8.7-2.40.3 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 net-snmp                i386       5.1.2-11.EL4.6   base              491 k
Installing for dependencies:
 lm_sensors              i386       2.8.7-2.40.3     base              426 k

Transaction Summary
=============================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 917 k
Downloading Packages:
(1/2): net-snmp-5.1.2-11. 100% |=========================| 491 kB    00:01
(2/2): lm_sensors-2.8.7-2 100% |=========================| 426 kB    00:01
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: lm_sensors                   ######################### [1/2]
  Installing: net-snmp                     ######################### [2/2]

Installed: net-snmp.i386 0:5.1.2-11.EL4.6
Dependency Installed: lm_sensors.i386 0:2.8.7-2.40.3
Complete!
2. NET-SNMP 設定
1 ) NET-SNMP 設定ファイル /etc/snmp/snmpd.conf 編集
[root@linux ~]# vi /etc/snmp/snmpd.conf 

  :
  :
####
# First, map the community name "public" into a "security name"

#       sec.name  source          community
# 変更
#com2sec notConfigUser  default       public
com2sec local localhost private
com2sec mynetwork 192.168.1.0/24 public

####
# Second, map the security name into a group name:

#       groupName      securityModel securityName
# 変更
#group   notConfigGroup v1           notConfigUser
#group   notConfigGroup v2c           notConfigUser
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork

####
# 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 all included .1 80

####
# 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 MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none

  :
  :
###############################################################################
# disk checks
#

# The agent can check the amount of available disk space, and make
# sure it is above a set limit.

# disk PATH [MIN=100000]
#
# PATH:  mount path to the disk in question.
# MIN:   Disks with space below this value will have the Mib's errorFlag set.
#        Default value = 100000.

# Check the / partition and make sure it contains at least 10 megs.

# コメントを外す
disk / 10000
# 別のファイルシステムも監視する場合は以下のように追記する( 例 /work )
disk /work 10000
3. NET-SNMP の起動と自動起動設定
1 ) NET-SNMP の起動
[root@linux ~]# service snmpd start 
snmpd を起動中:                                            [  OK  ]
2 ) NET-SNMP の自動起動設定
[root@linux ~]# chkconfig snmpd on 
[root@linux ~]# chkconfig --list snmpd 
snmpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
4. MRTG インストール
[root@linux ~]# yum -y install mrtg 
Repository dag is listed more than once in the configuration
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for mrtg to pack into transaction set.
mrtg-2.10.15-1.i386.rpm   100% |=========================|  57 kB    00:00
---> Package mrtg.i386 0:2.10.15-1 set to be updated
--> Running transaction check
--> Processing Dependency: libgd.so.2 for package: mrtg
--> Processing Dependency: gd for package: mrtg
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for gd to pack into transaction set.
gd-2.0.28-4.4E.1.i386.rpm 100% |=========================| 6.1 kB    00:00
---> Package gd.i386 0:2.0.28-4.4E.1 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 mrtg                    i386       2.10.15-1        base              914 k
Installing for dependencies:
 gd                      i386       2.0.28-4.4E.1    base              119 k

Transaction Summary
=============================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 1.0 M
Downloading Packages:
(1/2): gd-2.0.28-4.4E.1.i 100% |=========================| 119 kB    00:00
(2/2): mrtg-2.10.15-1.i38 100% |=========================| 914 kB    00:02
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: gd                           ######################### [1/2]
  Installing: mrtg                         ######################### [2/2]

Installed: mrtg.i386 0:2.10.15-1
Dependency Installed: gd.i386 0:2.0.28-4.4E.1
Complete!
5. MRTG の設定
1 ) MRTG 設定ファイルの生成
[root@linux ~]# cfgmaker --ifref=descr --ifdesc=descr public@192.168.1.11 > /etc/mrtg/mrtg.cfg 
--base: Get Device Info on public@192.168.1.11:
--base: Vendor Id:
--base: Populating confcache
--snpo: confcache public@192.168.1.11: Name lo --> 1
--snpo: confcache public@192.168.1.11: Name eth0 --> 2
--snpo: confcache public@192.168.1.11: Name sit0 --> 3
--snpo: confcache public@192.168.1.11: Descr lo --> 1
--snpo: confcache public@192.168.1.11: Descr eth0 --> 2
--snpo: confcache public@192.168.1.11: Descr sit0 --> 3
--snpo: confcache public@192.168.1.11: Type 24 --> 1
--snpo: confcache public@192.168.1.11: Type 6 --> 2
--snpo: confcache public@192.168.1.11: Type 131 --> 3
--snpo: confcache public@192.168.1.11: Ip 127.0.0.1 --> 1
--snpo: confcache public@192.168.1.11: Ip 192.168.1.11 --> 2
--snpo: confcache public@192.168.1.11: Eth  --> 1
--snpo: confcache public@192.168.1.11: Eth 00-0a-79-02-28-ae --> 2
--snpo: confcache public@192.168.1.11: Eth  --> 3 (duplicate)
--base: Get Interface Info
--base: Walking ifIndex
--base: Walking ifType
--base: Walking ifAdminStatus
--base: Walking ifOperStatus
--base: Walking ifSpeed
2 ) MRTG 設定ファイル /etc/mrtg/mrtg.cfg の編集
[root@linux ~]# vi /etc/mrtg/mrtg.cfg 

# Created by
# /usr/bin/cfgmaker --ifref=descr --ifdesc=descr public@192.168.1.11


### Global Config Options

#  for UNIX
# WorkDir: /home/http/mrtg
# MRTGによる編集結果HTML格納先ディレクトリを指定
WorkDir: /var/www/mrtg

#  or for NT
# WorkDir: c:\mrtgdata

### Global Defaults

#  to get bits instead of bytes and graphs growing to the right
# コメントを外す(コメント解除(グラフの推移方向 左→右))
Options[_]: growright, bits

EnableIPv6: no
# 日本語化
Language:eucjp

  :
  :
### Interface 2 >> Descr: 'eth0' | Name: 'eth0' | Ip: '192.168.1.11' | Eth: '00-0a-79-02-28-ae' ###

# 変更(項目名[192.168.1.2_eth0]⇒項目名[eth0])
Target[eth0]: \eth0:public@192.168.1.11:
SetEnv[eth0]: MRTG_INT_IP="192.168.1.11" MRTG_INT_DESCR="eth0"
MaxBytes[eth0]: 12500000
Title[eth0]: eth0 -- mbrsv01.mountainbigroad.jp
PageTop[eth0]: <H1>eth0 -- mbrsv01.mountainbigroad.jp</H1>
# 以下を全てコメント
# <TABLE>
#   <TR><TD>System:</TD>     <TD>mbrsv01.mountainbigroad.jp in Unknown (edit /etc/snmp/snmpd.conf)</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure /etc/snmp/snmp.local.conf)</TD></TR>
#   <TR><TD>Description:</TD><TD>eth0  </TD></TR>
#   <TR><TD>ifType:</TD>     <TD>ethernetCsmacd (6)</TD></TR>
#   <TR><TD>ifName:</TD>     <TD>eth0</TD></TR>
#   <TR><TD>Max Speed:</TD>  <TD>12.5 MBytes/s</TD></TR>
#   <TR><TD>Ip:</TD>         <TD>192.168.1.11 (mountainbigroad.jp)</TD></TR>
# </TABLE>
6. CPU 使用率 監視の設定
1 ) MRTG 設定ファイル /etc/mrtg/mrtg.cfg の編集
[root@linux ~]# vi /etc/mrtg/mrtg.cfg 

# 以下の全行を追加
### CPU Load Average ###
Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@192.168.1.11
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy
Options[cpu]: gauge, absolute, growright, noinfo, nopercent
YLegend[cpu]: CPU Load(%)
ShortLegend[cpu]: (%)
LegendI[cpu]: 1分間平均
LegendO[cpu]: 5分間平均
Legend1[cpu]: 1分間平均(%)
Legend2[cpu]: 5分間平均(%)
Title[cpu]: CPU使用率
PageTop[cpu]: <H1>CPU使用率</H1>
7. メモリ使用量 監視の設定
1 ) メモリ搭載量の取得
[root@linux ~]# free 
             total       used       free     shared    buffers     cached
Mem:        515720     364660     151060          0      43396     214296
-/+ buffers/cache:     106968     408752
Swap:      1048568          0    1048568
2 ) MRTG 設定ファイル /etc/mrtg/mrtg.cfg の編集
[root@linux ~]# vi /etc/mrtg/mrtg.cfg 

# 以下の全行を追加
### Memory Free ####
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:public@192.168.1.11
# 物理メモリ( Mem: ) の total値を指定する
MaxBytes1[mem]: 515720
# スワップメモリ( Swap: ) の total値を指定する
MaxBytes2[mem]: 1048568
Unscaled[mem]: dwmy
Options[mem]: gauge, absolute, growright, noinfo
YLegend[mem]: Mem Free(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: 空き物理メモリ[MBytes]
Legend2[mem]: 空きスワップメモリ[MBytes]
Title[mem]: 空きメモリ量
PageTop[mem]: <H1>空きメモリ量</H1>
8. ディスク使用率 監視の設定
1 ) MRTG 設定ファイル /etc/mrtg/mrtg.cfg の編集
[root@linux ~]# vi /etc/mrtg/mrtg.cfg 

# 以下の全行を追加
### Disk Used ####
Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.2:public@192.168.1.11
MaxBytes[disk]: 100
Unscaled[disk]: dwmy
Options[disk]: gauge, absolute, growright, nopercent, noinfo
YLegend[disk]: Disk Used(%)
ShortLegend[disk]: (%)
LegendI[disk]: / Disk Used
LegendO[disk]: /work Disk Used
Legend1[disk]: / Disk Used
Legend2[disk]: /work Disk Used
Title[disk]: ディスク使用率
PageTop[disk]: <H1>ディスク使用率</H1>
9. MRTG の監視ページ作成
1 ) MRTG の監視ページ作成実行
MRTG を実行し、MRTG による監視の閲覧ページを作成します。
MRTG は過去2回起動時のログを使用するため、初回起動から2回目までは必ず WARNING が出るので、MRTGの実行を3回行います。また、mrtg.cfg 修正後も、MRTGの実行を3回行う方がいいでしょう。
[root@linux ~]# mrtg /etc/mrtg/mrtg.cfg 
Rateup WARNING: /usr/bin/rateup Can't remove eth0.old updating log file
Rateup WARNING: /usr/bin/rateup Can't remove cpu.old updating log file
Rateup WARNING: /usr/bin/rateup could not read the primary log file for mem
Rateup WARNING: /usr/bin/rateup The backup log file for mem was invalid as well
Rateup WARNING: /usr/bin/rateup Can't remove mem.old updating log file
Rateup WARNING: /usr/bin/rateup Can't rename mem.log to mem.old updating log file
Rateup WARNING: /usr/bin/rateup could not read the primary log file for disk
Rateup WARNING: /usr/bin/rateup The backup log file for disk was invalid as well
Rateup WARNING: /usr/bin/rateup Can't remove disk.old updating log file
Rateup WARNING: /usr/bin/rateup Can't rename disk.log to disk.old updating log file

[root@linux ~]# mrtg /etc/mrtg/mrtg.cfg 
Rateup WARNING: /usr/bin/rateup Can't remove mem.old updating log file
Rateup WARNING: /usr/bin/rateup Can't remove disk.old updating log file

[root@linux ~]# mrtg /etc/mrtg/mrtg.cfg 
MRTG の各監視ページは以下に作成されます。
ネットワークトラフィック状況監視確認
http://mountainbigroad.jp/mrtg/eth0.html
CPU 使用率監視確認
http://mountainbigroad.jp/mrtg/cpu.html
メモリ空き容量監視確認
http://mountainbigroad.jp/mrtg/mem.html
ディスク空き容量監視確認
http://mountainbigroad.jp/mrtg/disk.html
2 ) MRTG のインデックスページ作成
各監視画面を統合したような見出しページを、MRTG 検出結果格納先ディレクトリ(WorkDir)に作成します。
[root@linux ~]# indexmaker --columns=1 --title="サーバ監視システム" \
--addhead="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-jp\">" \
/etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html 
10. Apache の設定
1 ) MRTG アクセス設定ファイル /etc/httpd/conf.d/mrtg.conf の編集
[root@linux ~]# vi /etc/httpd/conf.d/mrtg.conf 

#
# This configuration file maps the mrtg output (generated daily)
# into the URL space. By default these results are only accessible
# from the local host.
#
Alias /mrtg /var/www/mrtg

# 以下をコメント
#<Location /mrtg>
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
#  Allow from ::1
#  Allow from .example.com
#</Location>

# 以下を追加 ( .htaccess にてアクセス制限をかける )
<Directory /var/www/mrtg>
    Options None
    AllowOverride All
    Order deny,allow
    Allow from All
</Directory>
2 ) Apache への設定反映
[root@linux ~]# service httpd reload 
httpd を再読み込み中:                                      [  OK  ]
11. MRTG 自動実行について
MRTGを RPMパッケージからインストールした場合、5分間隔で MRTGを実行するように cronに登録されるため、自動起動にかかわる作業はありません。