Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
MRTGによるサーバ監視(SuSE編)
MRTGによるサーバ監視(SuSE編)
SuSE でも RedHat と同様に ucdsnmp と mrtg を使用してサーバとルータの NAT
テーブル数を監視してみました。 結論から言えば、RedHat と何も変わりはないので敢えてコンテンツにするまでもありませんが、取り敢えず、細かいところのメモということで残しておくことにしました。
MRTG は、ルータ等のトラヒックをグラフで表示するツールです。ucdsnmp と
mrtg でサーバのトラヒック、CPU使用率、空きメモリ量、ディスク使用率を測るとともに、以前使用していた
NTT-ME BA8000 Pro が異常に NAT テーブルの開放が遅く、容量が 2048 しかないのに
おやじのところでは 2000 を超えることも合ったので、NAT テーブル数を監視するようにしていました。現在は、同じ
NTT-ME の MN8300W (と言っても、BA8000 Pro は Planex、MN8300W は 住友電工の
OEM 品なので全く違うものです。)に変えましたのでこのような問題は発生してませんが、引き続き監視することにしました。下記は、現在の状況ですが、グラフをクリックすると詳細情報を見ることができます。
HDDがよく壊れるので、smartmontoolsを利用してHDDの温度監視をするとともに、sensors(lm_sensors)を利用してCPUとケース内温度の監視もしてみました。温度監視の設定等については、
こちら を参照ください。
トラヒック
CPUロードアベレージ
CPU使用率
空きメモリ量
ディスク使用率
NAPTセッション数
HDD温度
CPU&Case温度
■必要なソフトやモジュール
ucdsnmp を使って mrtg を動かすには、下記のソフトやモジュールが必要ですので、YaST
でインストールされているか調査して、インストールされてなければインストールしてください。
なお、MN8300W は SNMP をサポートしていないので、上記の NAPT セッション数は簡単な
Perl スクリプトを書いて、ルータから取得したデータで描画したものです。
ソフト・モジュール名
概 要
ucdsnmp
SNMPエージェント
mrtg
SNMPマネージャ・グラフ化ツール
perl
mrtgはperlで記述されている
gd
グラフィック描画用ライブラリ
libpng
PNG形式のイメージ作成用ライブラリ
zlib
圧縮ライブラリ
crond
定期起動用デーモン
■ucdsnmp の設定
まずは、ucdsnmp の SNMP エージェント機能を動かすため、/etc/snmpd.conf
を設定します。と言っても、デフォルトの snmpd.conf にはほとんど何も設定されていませんので、/usr/share/doc/packages/ucdsnmp
ディレクトリ内にある EXAMPLE.conf というファイルを、/etc ディレクトリに
snmpd.conf という名前でコピーして設定していきます。一応、デフォルトの snmpd.conf
はバックアップしておきます。
# cd /etc
# mv snmpd.conf snmpd.conf.bak
# cp /usr/share/doc/packages/ucdsnmp/EXAMPLE.conf ./snmpd.conf
# chmod 600 snmpd.conf
設定しなければならない項目は以下のとおりです。
コミュニティ名
セキュリティグループ
ビュー
アクセス権限
システム情報
ここでの前提は、localhost を監視するものとして設定していきます、言い換えればサーバ機本体をサーバ機で監視するということになりますが、他のサーバも監視するのであれば、ターゲットでも同様の設定が必要になります。但し、そのとき必要なのは
SNMP エージェント機能だけですから、上記の netsnmp 以外( mrtg 以下)は不要です。
コミュニティ名
コミュニティ名は、下記の com2sec 行で管理範囲とともに設定する。コミュニティ名は、デフォルトでは「COMMUNITY」となっているが、一般的にローカル環境では「private」 、グローバル環境では「public」 を使うことが多いらしいが、snmp v1/2 ではコミュニティ名だけで接続できるので、セキュリティ上は変更したほうがよいとのこと。ここでは、説明のため
localhostを「 private」 、家庭内の LAN から接続できるコミュニティ名を「public」 とし、 NETWORK/24 のところは、家庭内で使用しているサブネットを指定した。但し、今回はサーバ機以外に監視対象はないため、localhost
の設定のみを生かして他はコメントアウトした。(青字 は削除、赤字 は追加、緑字 は変更したものです。)
# sec.name source community
com2sec local localhost COMMUNITY
com2sec mynetwork NETWORK /24 COMMUNITY
↓変更
# sec.name source community
com2sec local localhost private
# com2sec mynetwork 192.168.1.0 /24 public
セキュリティグループ
セキュリティグループは、group 行で設定するが、4項のアクセス権限で各グループ権限が付与される。ここでは、localhost
でのモニタだけのための設定にしてある。
# sec.model sec.name
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork
↓変更
# sec.model sec.name
group MyROGroup v1 local
group MyROGroup v2c local
group MyROGroup usm local
# group MyRWGroup v1 local
# group MyRWGroup v2c local
# group MyRWGroup usm local
# group MyROGroup v1 mynetwork
# group MyROGroup v2c mynetwork
# group MyROGroup usm mynetwork
ビュー
view 行では管理情報の公開範囲を指定するが、デフォルトでは全て公開という設定になっている。今回は、localhost
のみなのでそのままとした。
# incl/excl subtree mask
view all included .1 80
アクセス権限
ここでは、access 行で、group 行で設定した各グループに対してのアクセス権限を設定する。ここでは、読み書きできる
MyRWGroup そのものが未定義なのでデフォルトのままでも良いが、一応、読込み権限だけの
MyROGroup を残し MyRWGroup はコメントアウトした。認証も不要なので、「noauth」のままとした。
# context sec.model
sec.level match read write notif
access MyROGroup "" any
noauth exact all none none
access MyRWGroup "" any
noauth exact all all none
↓変更
# context sec.model
sec.level match read write notif
access MyROGroup "" any
noauth exact all none none
# access MyRWGroup "" any
noauth exact all all none
システム情報
syslocation 行と syscontact 行で、機器の場所や用途(管理用なので極端なこととを言えばなんでも良い)などと、管理者のメールアドレス情報を登録する。
syslocation Right here, right now.
syscontact Me <me@somewhere.org>
↓変更
syslocation Home server
syscontact oyaji <oyaji@localhost>
■ucdsnmp の起動
ucdsnmp をインストールすれば起動スクリプトもインストールされるので、自動起動するよう設定して起動確認します。
# chkconfig snmpd on
# chkconfig --list snmpd
snmpd 0:off 1:off 2:on
3:on 4:off 5:on 6:off
snmpd を起動し、ps で起動した確認をします。/usr/sbin/snmpd -c /etc/snmpd.conf -r ・・・・ の行が 出ていれば起動されています。
# /etc/init.d/snmpd start
Starting snmpd
done
# ps ax | grep snmpd
3110 pts/6 S 0:00 /usr/sbin/snmpd -c /etc/snmpd.conf -r -A -l /var/log/ucd-snmpd.log
-P /var/run/snmpd.pid
3116 pts/6 R 0:00 grep snmpd /etc/rc.d/init.d/snmpd
Top Pageへ