MRTGによるサーバ監視(SuSE編)

NET-SNMP > MRTG

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 品なので全く違うものです。)に変えましたのでこのような問題は発生してませんが、引き続き監視することにしました。下記は、現在の状況ですが、グラフをクリックすると詳細情報を見ることができます。
なお、SNMPやMRTGに関しては、SNMPによるネットワークモニタリングで詳しく解説されているので、こちらを参考すればよいでしょう。
HDDがよく壊れるので、smartmontoolsを利用してHDDの温度監視をするとともに、sensors(lm_sensors)を利用してCPUとケース内温度の監視もしてみました。温度監視の設定等については、こちらを参照ください。



トラヒック
day

CPUロードアベレージ
day

CPU使用率
day

空きメモリ量
day

ディスク使用率
day

NAPTセッション数
day

HDD温度
day

CPU&Case温度
day



■必要なソフトやモジュール

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
設定しなければならない項目は以下のとおりです。
  1. コミュニティ名
  2. セキュリティグループ
  3. ビュー
  4. アクセス権限
  5. システム情報 
ここでの前提は、localhost を監視するものとして設定していきます、言い換えればサーバ機本体をサーバ機で監視するということになりますが、他のサーバも監視するのであれば、ターゲットでも同様の設定が必要になります。但し、そのとき必要なのは SNMP エージェント機能だけですから、上記の netsnmp 以外( mrtg 以下)は不要です。
  1. コミュニティ名

     コミュニティ名は、下記の 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

  2. セキュリティグループ

     セキュリティグループは、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


  3. ビュー

     view 行では管理情報の公開範囲を指定するが、デフォルトでは全て公開という設定になっている。今回は、localhost のみなのでそのままとした。

    #        incl/excl subtree mask
    view all included  .1      80

  4. アクセス権限

     ここでは、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


     
  5. システム情報 

     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
続いて、MRTGの設定を行います。


Top Pageへ