SNMP
その他UNIX系
SNMPとは
SNMPは、様々な機器をネットワーク経由で監視するためのプロトコルです。
機器といってもルータからマシンそのものまで様々で、機器が提供する情報についても様々です。
SNMP を使用すると、その機器のトラフィック等の情報を引き出すことが出来るので、どの時間帯にトラフィックがどのくらい高いのか等の情報を得ることができます。
情報を提供する側には、当然情報を提供する仕組みが存在し、これは一般的に「SNMP エージェント」と呼ばれます。
逆に、機器から情報を引き出す側は「SNMP マネージャー」と呼ばれます。
SNMP 対応ルータのようなものには最初から SNMP エージェントが組み込まれていますので特に何もしなくても SNMP マネージャーの方の設定だけで SNMP で監視できます。
が、例えば Linux には SNMP エージェントは入っていないので、Linux マシンののトラフィック、CPU 使用率等を監視しようとした場合には、まずはじめに SNMP エージェントを組み込むことから始める必要があります。
Linux 用の SNMP アプリケーションとしては net-snmp があります。
net-snmp には SNMP エージェントも SNMP マネージャーも含まれていますので、とりあえずnet-snmpがあれば SNMP を使用して監視することが可能です。
インストール
net-snmp-5.0.5 の例です。
まず、NET-SNMP公式サイトからアーカイブを取得し、展開します。
% gzip -dc net-snmp-5.0.5.tar.gz | tar xvf -
展開したディレクトリに移動し、後は以下のとおり。
% ./configure % make % su # umask 022 # make install
設定
SNMP エージェントである snmpd の設定は snmpd.conf (デフォルトでは /usr/local/share/snmp/snmpd.conf)で行います。
net-snmp に EXAMPLE.conf というファイルがあるので、これを snmpd.conf としてコピーして使います。
snmpd.conf の主な設定は以下のとおり。
設定項目 | 設定例 | 解説 | ||||
---|---|---|---|---|---|---|
コミュニティ | com2sec local localhost public com2sec mynetwork 192.168.0.0/24 public com2sec admin 192.168.0.1 public | コミュニティは実際に SNMP を使って通信をする際に識別子となるもの。これを設定しなければ通信が行えないので設定は必須。com2sec の後の文字列はセキュリティ名。その次のは接続を許すマシンの指定。IP アドレス以外でも、ホスト名や例のようにネットマスク指定もOK。ここで指定されていないマシンからは接続不可である。最後がコミュニティ名。ここで指定した名前で接続可能となる。 | ||||
グループ | group ahost v1 admin group ahost v2c admin group ahost usm admin group MyGroup v1 mynetwork group MyGroup v2c mynetwork group MyGroup usm mynetwork | "コミュニティの設定で指定したセキュリティ名に対してグループを設定します。ここで設定したグループがどのような権限を持つのかは access 句で設定します。ちなみに、v1 | v2c | usm はセキュリティモデルと呼ばれるもので、それぞれ SNMP プロトコルのバージョン 1 | 2 | 3 に対応します。" |
ビュー | view all included .1 80 | SNMP の情報の公開する部分の設定ですが、よく知りません(/o\)とりあえず、普通はそもそも SNMP の情報は外部には公開しないものですし、デフォルト(全部公開)でOKみたいです。 | ||||
アクセス権限 | access ahost "" any noauth exact all all none | グループのアクセス権限の設定です。access の後がグループ名。右から3番目が read 権限で、その次が write 権限。右から5番目の noauth ってのは認証方式らしいです。noauth は文字通り認証無し。セキュリティを高めたい人は設定しましょう。それ以外は知りません。(/o\) | ||||
システム情報 | syslocation koumei2 syscontact koumei2@xxx.com | syslocation はシステムの場所とか、そのシステムを表すものを書きます。syscontact は通常は管理者のアドレス情報を書きます。 | ||||
ディスク情報 | disk / 10000 disk /home 10000 | 提供するディスク情報をパーティションごとに設定します。最後の数値は、残り容量の境界条件です。残りのディスク容量がこの数値(KB)以下になった時に、エラーフラグが立ちます。 |
実行方法
snmpd は基本的には単にコマンドを実行するだけでOKです。
# snmpd
これでデーモンとして常駐するので設定変更を行ったりした際には kill -HUP 等で再起動します。
また、デフォルトではログが /var/log/snmpd.log に出力されます。
snmpwalk
snmpwalk は SNMP マネージャーとして使用するコマンドです。
指定したコミュニティから SNMP を使用して機器の情報を取得します。
例えば、server1 というサーバの public というコミュニティからディスク情報を取得するには以下のようにします。
% snmpwalk -v 1 -c public server1 .1.3.6.1.4.1.2021.9
-v 1 は SNMPv1 を使用するという明示的な指定なので、環境によっては必要ありません。
また、.1.3.6.1.4.1.2021.9 は OID ツリーと呼ばれるもので、SNMP の情報の位置を意味します。
OID ツリーについては RFC なり他のサイトなりで調べてください(/o\)
snmpwarkは直接的にはsnmpd が正しく動いているかの確認程度でしか使用しないことが多いと思います。
たいていの場合には、snmpwalkを単に使うのではなく、MRTG 等の統計情報作成機能を持つような SNMP マネージャを使用してsnmpの情報を使用します。
主要OID
ほぼ、サーバ監視項目でよく使う SNMP の MIB オブジェクト ID まとめのパクリです(/_\;)
たま~にですが必要となることがあり、その度に調べるのも面倒なのでメモ。
メモリ関連
OID | 監視項目名 | 説明 |
---|---|---|
.1.3.6.1.4.1.2021.4.3 | memTotalSwap | スワップファイルの確保容量(キロバイト単位) |
.1.3.6.1.4.1.2021.4.4 | memAvailSwap | スワップファイルの未使用容量(キロバイト単位) |
.1.3.6.1.4.1.2021.4.5 | memTotalReal | 搭載されている実メモリ(キロバイト単位) |
.1.3.6.1.4.1.2021.4.6 | memAvailReal | 空き実メモリ(キロバイト単位) |
.1.3.6.1.4.1.2021.4.11 | memTotalFree | 総空きメモリ(実空きメモリ+スワップ空き容量)。キロバイト単位 |
.1.3.6.1.4.1.2021.4.13 | memShared | 総共有メモリの容量(キロバイト単位) |
.1.3.6.1.4.1.2021.4.14 | memBuffer | 総バッファメモリの容量(キロバイト単位) |
.1.3.6.1.4.1.2021.4.15 | memCached | 総キャッシュメモリ容量(キロバイト単位) |
システム・ステータス関連
OID | 監視項目名 | 説明 |
---|---|---|
.1.3.6.1.4.1.2021.11.3 | ssSwapIn | スワップインにかかった時間(キロバイト/秒) |
.1.3.6.1.4.1.2021.11.4 | ssSwapOut | スワップアウトにかかった時間(キロバイト/秒) |
.1.3.6.1.4.1.2021.11.5 | ssIOSent | ブロックデバイスへの送信にかかった時間(ブロック/秒) |
.1.3.6.1.4.1.2021.11.6 | ssIOReceive | ブロックデバイスからの受信にかかった時間(ブロック/秒) |
.1.3.6.1.4.1.2021.11.7 | ssSysInterrupts | 1秒間にかかった割り込みの回数。クロック割り込みも含む |
.1.3.6.1.4.1.2021.11.8 | ssSysContext | 1秒間に切り替えられたコンテキストスイッチの回数 |
.1.3.6.1.4.1.2021.11.9 | ssCpuUser | ユーザーがCPUを使っている割合(百分率) |
.1.3.6.1.4.1.2021.11.10 | ssCpuSystem | システムがCPUを使っている割合(百分率) |
.1.3.6.1.4.1.2021.11.11 | ssCpuIdle | CPUがアイドルである割合(百分率) |
ロードアベレージ関連
OID | 監視項目名 | 説明 |
---|---|---|
.1.3.6.1.4.1.2021.10.1.3.1 | laLoad.1 | 1分平均ロードアベレージ |
.1.3.6.1.4.1.2021.10.1.3.2 | laLoad.2 | 5分平均ロードアベレージ |
.1.3.6.1.4.1.2021.10.1.3.3 | laLoad.3 | 15分平均ロードアベレージ |
ディスク関連
OID | 監視項目名 | 説明 |
---|---|---|
1.3.6.1.4.1.2021.9.1.2 | dskPath | 調査対象となるパス名。disk行の調査するパス名に指定した値 |
1.3.6.1.4.1.2021.9.1.3 | dskDevice | dskPathが含まれるデバイス名。/dev/hda1など |
1.3.6.1.4.1.2021.9.1.6 | dskTotal | dskDeviceで指定されるデバイスが格納できる最大容量。キロバイト単位 |
1.3.6.1.4.1.2021.9.1.7 | dskAvail | dskDeviceで指定されるデバイスの現在の空き容量。キロバイト単位 |
1.3.6.1.4.1.2021.9.1.8 | dskUsed | dskDeviceで指定されるデバイスの現在の利用容量。キロバイト単位 |
1.3.6.1.4.1.2021.9.1.9 | dskPercent | dskDeviceで指定されているディスクの使用率を百分率で示した値 |
1.3.6.1.4.1.2021.9.1.10 | dskPercentNode | dskDeviceで指定されているディスクのiノードの使用率を百分率で示した値 |