以前、Nagios を使用して Linux および Windows サーバーを監視する方法について説明しました。この記事では、Nagios を使用してアクティブなセッションと VPN デバイスの温度を監視する方法を確認します。 nagios check_snmp プラグインを使用して、ハードウェアに関するほぼすべてを監視できます。
1. VPN デバイスのホスト、ホストグループ、およびサービスを定義するための cfg ファイルを特定します
新しい vpn.cfg ファイルを作成するか、既存の .cfg ファイルの 1 つを再利用できます。この記事では、VPN サービスとホストグループの定義を既存の switch.cfg ファイルに追加しました。以下に示すように、nagios.cfg ファイルの switch.cfg 行がコメント化されていないことを確認してください。
# grep switch.cfg /usr/local/nagios/etc/nagios.cfg cfg_file=/usr/local/nagios/etc/objects/switch.cfg
2. switch.cfg に VPN デバイスの新しいホストグループを追加
次の ciscovpn ホストグループを /usr/local/nagios/etc/objects/switch.cfg ファイルに追加します。
define hostgroup{ hostgroup_name ciscovpn alias Cisco VPN Concentrator }
3. switch.cfg に VPN デバイスの新しいホストを追加
この例では、/usr/local/nagios/etc/objects/switch.cfg ファイルで 2 つのホストを定義しました。1 つはプライマリ用、もう 1 つはセカンダリ Cisco VPN コンセントレータ用です。それに応じてアドレス ディレクティブを VPN デバイスの ip-address に変更します。
define host{ use generic-host host_name cisco-vpn-primary alias Cisco VPN Concentrator Primary address 192.168.1.7 check_command check-host-alive max_check_attempts 10 notification_interval 120 notification_period 24x7 notification_options d,r contact_groups admins hostgroups ciscovpn } define host{ use generic-host host_name cisco-vpn-secondary alias Cisco VPN Concentrator Secondary address 192.168.1.9 check_command check-host-alive max_check_attempts 10 notification_interval 120 notification_period 24x7 notification_options d,r contact_groups admins hostgroups ciscovpn }
4. switch.cfg で VPN アクティブ セッションと温度を監視する新しいサービスを追加
「Temperature」サービスと「Active VPN Sessions」サービスを /usr/local/nagios/etc/objects/switch.cfg ファイルに追加します。
define service{ use generic-service hostgroup_name ciscovpn service_description Temperature is_volatile 0 check_period 24x7 max_check_attempts 4 normal_check_interval 10 retry_check_interval 2 contact_groups admins notification_interval 960 notification_period 24x7 check_command check_snmp!-l Temperature -o .1.3.6.1.4.1.3076.2.1.2.22.1.29.0,.1.3.6.1.4.1.3076.2.1.2.22.1.33.0 -w 37,:40 -c :40,:45 } define service{ use generic-service hostgroup_name ciscovpn service_description Active VPN Sessions is_volatile 0 check_period 24x7 max_check_attempts 4 normal_check_interval 5 retry_check_interval 1 contact_groups admins notification_interval 960 notification_period 24x7 check_command check_snmp!-l ActiveSessions -o 1.3.6.1.4.1.3076.2.1.2.17.1.7.0,1.3.6.1.4.1.3076.2.1.2.17.1.9.0 -w :70,:8 -c :75,:10 }
5.コマンドラインから check_snmp を検証
Check_snmp プラグインは、NET-SNMP パッケージの「snmpget」コマンドを使用します。以下に示すように、net-snmp がシステムにインストールされていることを確認します。そうでない場合は、NET-SNMP Web サイトからダウンロードしてください。
# rpm -qa | grep -i net-snmp net-snmp-libs-5.1.2-11.el4_6.11.2 net-snmp-5.1.2-11.el4_6.11.2 net-snmp-utils-5.1.2-11.EL4.10
以下に示すように、check_snmp がコマンドラインから機能することを確認してください。
# /usr/local/nagios/libexec/check_snmp -H 192.168.1.7 \ -P 2c -l Temperature -w :35,:40 -c :40,:45 \ -o .1.3.6.1.4.1.3076.2.1.2.22.1.29.0,.1.3.6.1.4.1.3076.2.1.2.22.1.33.0 Temperature OK - 35 38 | iso.3.6.1.4.1.3076.2.1.2.22.1.29.0=35 iso.3.6.1.4.1.3076.2.1.2.22.1.33.0=38 # /usr/local/nagios/libexec/check_snmp -H 192.168.1.7 \ -P 2c -l ActiveSessions -w :80,:40 -c :100,:50 \ -o 1.3.6.1.4.1.3076.2.1.2.17.1.7.0,1.3.6.1.4.1.3076.2.1.2.17.1.9.0 ActiveSessions CRITICAL - *110* 20 | iso.3.6.1.4.1.3076.2.1.2.17.1.7.0=110 iso.3.6.1.4.1.3076.2.1.2.17.1.9.0=20
この例では、次のパラメータが check_snmp に渡されます:
- -H, –hostname=ADDRESS ホスト名、IP アドレス、または UNIX ソケット (絶対パスである必要があります)
- -P, –protocol=[1|2c|3] SNMP プロトコル バージョン
- -l, –label=STRING プラグインからの出力のプレフィックス ラベル。すなわち、Terature または ActiveSessions
- -w, –warning=INTEGER_RANGE(s) WARNING ステータスにならない範囲
- -c, –critical=INTEGER_RANGE(s) CRITICALステータスにならない範囲
- -o, –oid=OID 値を照会するオブジェクト識別子または SNMP 変数。デバイスのマニュアルを参照して、デバイスでサポートされ、利用可能なすべての oid を確認してください。 2 つ以上の oid がある場合は、カンマで区切ります。
ActiveSessions の例では、2 つの OID が監視されています。つまり、VPN LAN-2-LAN トンネル用 (iso.3.6.1.4.1.3076.2.1.2.17.1.7.0) と PPTP セッション用 (iso.3.6.1.4.1.3076.2.1.2.17.1.9.0) です。上記の例では、VPN LAN-2-LAN アクティブ セッションがクリティカル リミットの 100 を超えています。
オブジェクト識別子 (OID) は、インターネット標準に基づくルートとブランチを持つ階層的な管理情報ベース (MIB) ツリーに配置されます。
6.構成を検証し、nagios を再起動します
nagios の設定を確認して、警告やエラーがないことを確認してください。
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check
nagios サーバーを再起動して、VPN デバイスの監視を開始します。
# /etc/rc.d/init.d/nagios stop Stopping nagios: .done. # /etc/rc.d/init.d/nagios start Starting nagios: done.
以下に示すように、Nagios Web UI (http://{nagios-server}/nagios) から VPN デバイスの ActiveSessions と Temperature のステータスを確認します。
図 – VPN デバイスのステータスを示す Nagios Web UI
7.トラブルシューティング
問題: check_snmp は Linux コマンド ラインから問題なく動作しますが、Nagios Web UI には次のエラーが表示されます:
Status Information: SNMP problem - No data received from host CMD: /usr/bin/snmpget -t 1 -r 5 -m '' -v 1 [authpriv] 192.168.1.7:161
解決策: switch.cfg ファイル内の check_snmp プラグインの check_command 定義が正しく定義されていることを確認してください。 check_snmp コマンドの引数は、/usr/local/nagios/etc/commands.cfg の check_snmp 定義と一致する必要があります
check_command check_snmp!Temperature!.1.3.6.1.4.1.3076.2.1.2.22.1.29.0,.1.3.6.1.4.1.3076.2.1.2.22.1.33.0!37,:40!:40,:45 [Note: This is wrong, as it is passing 4 arguments to check_snmp command The value after the exclamation is considered as one argument. !{argument1}!{argument2}] check_command check_snmp!-l Temperature -o .1.3.6.1.4.1.3076.2.1.2.22.1.29.0,.1.3.6.1.4.1.3076.2.1.2.22.1.33.0 -w 37,:40 -c :40,:45 [Note: This is correct, as it is passing 1 argument to check_snmp command The value after the exclamation is considered as one argument. !{argument1}]
以下に示す check_snmp コマンドの定義では、$ARG1$ 引数は 1 つだけです。したがって、switch.cfg では、check_snmp を定義する際に、上記のように引数を 1 つだけ渡す必要があります。
# 'check_snmp' command definition define command{ command_name check_snmp command_line $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$ }
推奨読書
これらは、最新の Nagios 3 をカバーする最高の 2 冊の本です。Nagios の詳細な理解を得るために、これらの本を両方とも読むことを強くお勧めします。