SNMP - ぷちWiki

最終更新日時:

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ノードの使用率を百分率で示した値