
第7回 障害の兆候を見逃さないためのサーバ監視
アイティーブースト(http://www.itboost.co.jp/)
2003/3/15
SNMPによるネットワークシステムの監視
ネットワークを構成するすべての機器の状態を把握し、ネットワークが正常に機能しているか否かを監視するにはSNMPというプロトコルを利用するのが便利です。このプロトコルはもともとネットワークの構成を管理するために開発されたもので、スイッチやルータなどの多くのネットワーク機器がSNMPに対応しています(注)。
| 注:SNMP対応のネットワーク機器は高価で、個人ユーザーを対象に出荷されている安価なハブなどは対応していないことが多いのが現状です。一般的にSNMP対応のネットワーク機器は「インテリジェントHUB」のように、「インテリジェント〜」と呼ばれ、逆にSNMPに対応していない機器は「ノンインテリジェント〜」といった名称で呼ばれています。 |
■SNMPの要素:マネージャ/エージェント/MIB
SNMPは、マネージャ(NMS:Network Management Station)とエージェントという2種類の機器あるいはソフトウェアがネットワークを通じて情報のやりとりを行います。マネージャはネットワーク上に存在するエージェントに対して情報提供を要求し、情報を収集・管理します。エージェントはマネージャの要求を解釈し、必要な情報を提供します。
このエージェントとマネージャでやりとりする情報は、MIB(Management Information Base)と呼ばれる管理データベースを基にしています。エージェントが持っている情報は機器の種類によって標準的なMIBが定義されていますが、各ベンダ独自のMIBも定義されています。MIBによるデータはツリー構造で分類されています。SNMPが利用するのは.iso.org.dod.internetから広がる情報で、特に.iso.org.dod.internet.mgmt.mib2および.iso.org.dod.internet.mgmt.private.enterprise.ucdavis以下の情報が有用です。
![]() |
| 図2 エージェントとMIB |
![]() |
| 図3 MIBの構造 |
■net-snmpのインストール
Linuxの場合、net-snmp(注)というソフトウェアをインストールしてSNMPを実装するのが一般的です。
| 注:以前はucd-snmpと呼ばれていましたが、バージョン5以降はnet-snmpとして普及しています。 |
ここではnet-snmpのWebサイト(http://net-snmp.sourceforge.net/)よりnet-snmp-5.07.tar.gzを入手し、インストールします。ダウンロードしたアーカイブを展開し、作成されるnet-snmp-5.07ディレクトリに移動してconfigureスクリプトを実行します。
# tar zxvf net-snmp-5.07.tar.gz |
configureスクリプトを実行すると、その処理の1つとしてソフトウェアの基本構成や管理者のアドレスなどを対話的に入力し、include/net-snmp/net-snmp-config.hを作成するためのメッセージが表示されます。
************** Configuration Section ************** |
ここではSNMPのデフォルトバージョンを選択します。
*** Default SNMP Version: |
連絡先として、管理者のメールアドレスを指定します。
*** System Contact Information: |
システムのロケーションを指定します。管理するシステムに対して区別しやすい文字を入力すれば構いません。
*** System Location: |
ログファイルの場所を指定します。デフォルトは/var/log/snmpd.logです。
*** Logfile location: |
設定ファイルの場所を指定します。デフォルトは/var/net-snmp/snmpd.confです。
*** snmpd persistent storage location: |
configureスクリプトが終了したら、make、make installを実行します。
# make |
■net-snmpの設定
上記のようにインストールした場合、設定ファイルは/usr/local/share/snmp/snmpd.confになります。しかし、このファイルはデフォルトでは存在しないので、新規にファイルを作成することになります。
設定内容は比較的複雑です。セキュリティに関する設定は下記の4つからなります。
| com2sec | : | セキュリティ名 | |
| group | : | グループ名 | |
| view | : | 取得を許可する情報の範囲 | |
| access | : | グループに対するアクセス権 |
●com2sec
com2sec行は、ネットワークの範囲とコミュニティ名という2つの値を「セキュリティ名」という形で定義します。コミュニティ名は特定のネットワークに付ける名前のことですが、SNMPではこれが情報にアクセスするためのパスワードとなります。そのため、デフォルトのコミュニティ名は絶対に使用しないようにしましょう。
以下の例では、セキュリティ名local(localhost:127.0.0.1)に対してprivate、セキュリティ名securenet(192.168.0.0/24)に対してsecureというコミュニティ名の設定を行っていますが、実際はもっと分かりにくいコミュニティ名にすることを推奨します。
# セキュリティ名 ネットワーク コミュニティ名 |
●group
group行は、セキュリティ名とSNMPのセキュリティモデルをグループ名で定義します。セキュリティモデルとしては「v1」「v2」「usm」が存在し、それぞれSNMPバージョン1、2、3に対応しています。
書式は以下のとおりですが、先に指定したlocalとsecurenetという2つのセキュリティ名をlocal_group、secure_groupとして定義しています。
このグループ名は後述するaccess行でのアクセス許可の設定で使用されます。
|
|
|
||||||
| ↓ | ↓ | ↓ |
group local_group v1 local |
●view
view行はSNMPで取得可能な情報の範囲を指定します。第4フィールドのMIBのオブジェクトIDと第5フィールドのマスクによって範囲を指定できます。
下記の例では、.iso(1)以下の全情報(実質的には.iso(1).org(3).dod(6).internet(1))を取得できるview_allと、.iso(1).org(3).dod(6).internet(1).mgmt(2).mib2(1)以下の全情報を取得できるview_mib2、.iso(1).org(3).dod(6).internet(1).private(4).enterprises(1).ucdavis(2021)以下の全情報を取得できるview_ucdavisというviewを定義しています。このview名は、後述するaccess行でアクセス許可の設定に使用します。
|
|
|
||||||
| ↓ | ↓ | ↓ |
view view_all included .1 80 |
●access
access行はアクセス許可のための設定です。書式は以下のとおりです(2行になっていますが、実際は1行で記述します)。
access グループ名 Context モデル 認証設定 Contextマッチの方法 read権限 |
下記の例では、local_groupに対してすべてのMIBの読み込み、secure_groupはview_mib2で定義されている情報の読み込みを許可する設定を行っています。
access local_group "" any noauth exact view_all |
●そのほかの設定
上記以外に必要な設定として、syscontactとsyslocationがあります。syslocation行はSNMPエージェントの基本情報を表す任意の文字列を入力します。例えば、ホスト名やサーバの設置場所など、サーバを識別しやすい名前にしておきましょう。
syscontact行は連絡先なので、システム管理者のメールアドレスを入れておきます。
syslocation Red Hat Linux 8.0 |
すべてを設定したファイルの内容は、下記のようになります。
com2sec local localhost private |
なお、SNMPの設定ファイル(/etc/snmp/snmpd.conf)にはパスワードに相当するコミュニティ名が記述されるため、セキュリティを考慮してパーミッションを600としておきます。
# chmod 600 /etc/snmp/snmpd.conf |
設定ファイルを作成したら、以下のようにSNMPデーモン(snmpd)を起動します。
# /usr/local/sbin/snmpd -s -l /dev/null
-P /var/run/snmpd -a |
|
オプション
|
機能
|
|
|
-s
|
syslogを有効にする | |
|
-P ファイル名
|
プロセスIDを保存するファイル名 | |
|
-l
|
snmpdの出力を送るファイル名の指定 | |
|
-a
|
送信元IPアドレス(NMS)をログに記録する | |
| 表3 snmpdのオプション | ||
■SNMPエージェントからの情報取得
●MIB情報の検索
net-snmpdパッケージには簡易SNMPマネージャとしてsnmpwalkやsnmpgetなどのコマンドが用意されています。これらを使用して、リモートのシステムからSNMPで情報を取得することができます。
snmpwalkの書式は以下のとおりです。コミュニティ名の個所には、設定ファイルのcom2sec行で指定したコミュニティ名を入力します。
# snmpwalk -c <コミュニティ名> <ホスト名>
[ 検索範囲 ] |
以下のように実行すると、SNMPの情報一覧が取得できます。動作しない場合はログを確認してみましょう。
# snmpwalk -c private localhost |
# snmpwalk -v1 -c private localhost | head |
●MIBの名前解決
SNMPを利用するうえで、MIBシンボル名⇔オブジェクトID名の変換が必要な場合があります。その際に利用するのがsnmptranslateコマンドです。これは、どのようなMIBシンボル名があるのかを一覧したい場合にも利用できます。
# snmptranslate 1.3.6.1.2.1.25.3 |
| オブジェクトIDをMIBシンボル名に変換する場合 |
# snmptranslate -On HOST-RESOURCES-MIB::hrDevice |
| MIBシンボル名を数値(オブジェクトID)に変換する場合 |
# snmptranslate -On -IR hrDevice |
| オブジェクトIDの全体パスを表示せずにオブジェクトIDを表示 |
# snmptranslate -Td .1.3.6.1.2.1.1.1 |
| 指定したMIBシンボル名/オブジェクトIDの詳細を表示 |
# snmptranslate -Tp |
| 指定したMIBシンボル名/オブジェクトID以下のツリー構造を表示 |
◆
今回は、システムに関するさまざまな情報の取得方法を紹介しました。次回は、具体的にどのような情報を取得し、どのようにデータを活用していけばいいのかを紹介していきます。
|
3/3
|
|
|
||||||
|
||||||
| 連載 Linux管理者への道 |
| Linux Squareフォーラム Linux/システム学習関連記事 |
| 連載:Windowsユーザーに教えるLinuxの常識(全12回) Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授! |
|
| 連載:LFSで作って学ぶLinuxの仕組み(全4回) 管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する |
|
| 連載:Linux管理者への道(全8回) 「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう |
|
| Linux Squareフォーラム全記事インデックス |
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


