スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NSTIを利用してNagiosからTrapの履歴を調べる

Nagiosで受信したTrapを管理・検索してみる


前回、機器から受信したTrapに応じてNagisでアラートを検知する事ができるようになった。
メールアラートが飛ぶのでそれを見る事でTrap内容を確認可能となるが、過去のTrap履歴は見れない。
(厳密には/var/log/snmptt/snmptt.logにのこっているけど)
なので、受信したTrapをDBに保存し検索を容易にする。検索を容易にしてくれるWebインタフェースにNSTIというものがあるのでこれを利用します。

NSTIは簡単に言うと、DBに保存したSNMPTrapのログを検索・閲覧できるGUIと思えばいいと思う。
実は現状このNSTIはとくにNagiosと連携して無く、単独で動きます(笑)
DBへの保存は、前回利用したSNMPTTを利用して行います。

- NagiosでのTrap受信・DB保存への流れ -
① Trapを受信(snmptrapd)
 ↓
② Trapの種類を判断し処理を行う(snmptt)
 DBにログを保存する
 
③ NSTIからDBに保存されたログを見に行く



■前提条件
 ・Ubuntu 12.04 Server
 ・NagiosCore 3.4.1
 ・NSTI RC1.4
 ・SNMPTT v1.3




● 事前準備 必要パッケージのDL、DBのインストール

・nsti-rc1.4.tar.gzをダウンロード、解凍する。
ダウンロードディレクトリに移動
$cd ./Download/
$tar xvf nsti-rc1.4.tar.gz
$cd nsti
※以降、特に断りがない場合解凍したnstiディレクトリで作業する前提とします。


・MySqlのインストール
$sudo apt-get install mysql-server
※途中で、MySQLのrootパスワードの入力を求められる。

・PHP5-mysqlのインストール
$sudo apt-get install php5-mysql


●MySqlの初期設定
・snmpttデータベースの作成
$ mysql -u root -p
Enter password:
mysql>
create database snmptt;
Query OK, 1 row affected (0.00 sec)

・アクセス権、パスワードの設定
mysql> grant all on snmptt.* to 'SNMPTT'@'localhost' identified by 'SNMPTTPASS';
Query OK, 0 rows affected (0.01 sec)
mysql>
\q
Bye
※上記パラメタの説明
 いずれも後ほどの設定で利用します。
 SNMPTT : DBにアクセスするためのユーザIDです。
 SNMPTTPASS : 上記ユーザIDに対するパスワードです。
適時自分の環境に合わせたID/PASSWORDに置き換えてください。


・初期データの入力
$ mysql -u SNMPTT -p snmptt < ./dist/snmptt-1.2.sql
Enter password:
$
$ mysql -u SNMPTT -p snmptt < ./dist/snmptt_unknown.sql
Enter password:
※SNMPTTには先ほど設定したユーザIDを指定します。


●SNMPTTの設定
 /etc/snmp/snmptt.iniの以下のパラメタを編集・確認する。(一部は前回設定しています)
log_enable = 1
leg_file = /var/log/snmptt/snmptt.log
unknown_trap_log_enable = 1
unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log
mysql_dbi_enable = 1
mysql_dbi_host = localhost
mysql_dbi_database = snmptt
mysql_dbi_table = snmptt
mysql_dbi_table_unknown = snmptt_unknown
mysql_dbi_username = SNMPTT
mysql_dbi_password = SNMPTTPASS



● NSTIの設定

Webインタフェース用の設定を行います。
$sudo cp ./dist/nsti.conf /etc/apache2/conf.d/

Webアクセス用のPHPファイルをリネームして、コピーします。
$cp ./dist/header.php.core ./header.php

・./etc/config.iniの編集
ファイルの後ろの方にある[database]のhost, user, password, name, tableSnmptt, tableSnmpttUnkを編集・確認します。
;# Enter here your information that were used to connect to your database
[database]
host = localhost
user = SNMPTT
password = SNMPTTPASS
name = snmptt
tableSnmptt = snmptt
type = mysql
;# Ignore this option, when you don`t use a table for unknown-Traps in your database
tableSnmpttUnk = snmptt_unknown


・nstiディレクトリの移動
設定が完了したNTIディレクトリを移動させ、フィアル所有者を変更します。
$cd ..
$sudo mv ./nsti /usr/local
$sudo chown -R root:root /usr/local/nsti



●サービスの再起動
$sudo service apache2 restart
$sudo service snmptt restart


以上で完了です。
Trapを送信したあとWebブラウザからインタフェースにアクセスして見てください。
http://127.0.0.1/nsti/index.php

NSTI画面


ここで1つ気がつく事があります。
LinkDown含む全てのTrapが"Normal"となっており全てグリーンになっています。
前回のNagiosへの通知では、"/etc/snmp/snmptt.conf.IF-MIB"でNagiosに渡す際にCritical、Warningなどを数字のパラメータで指定しました。
今回は同じく"/etc/snmp/snmptt.conf.IF-MIB"で同様に対象のTrapをどのように扱うかを指定する必要があります。
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Critical
FORMAT A linkDown trap signifies that the SNMP entity, acting in $*
EXEC /usr/local/nagios/libexec/submit_check_result $r TRAP 2 "Link Down on interface $1. Admin State: $2. Operational state: $3."
SDESC
A linkDown trap signifies that the SNMP entity, acting in
an agent role, has detected that the ifOperStatus object for
one of its communication links is about to enter the down
state from some other state (but not from the notPresent
state). This other state is indicated by the included value
of ifOperStatus.
Variables:
1: ifIndex
2: ifAdminStatus
3: ifOperStatus
EDESC


赤字箇所を変更してあげる事によって、NSTIのSeverityパラメータを与える事ができます。(初期状態では"Normal")
CriticalにするとNSTI画面では赤色表示になるはずです。





※アクセス権がうんとかというエラーが出てくる場合の対処・・・

WebでNSTIにアクセスした際に、Permisionがどうのとおこられる事があります。(というか多分おこられる)
その場合の対応方法は2つあります。
① nsti/etc/config.ini ファイル内の"useAuthentification=0"にする。
② HTTPの認証エラーの用なので、利用する場合は/etc/apache2/conf.d/nsti.confを編集して正しく認証されるようにしてあげればよい。
 例)”Allow from all” の行の下にnagios.confを例に下記を入れてみた。この場合、Nagiosアクセスで設定したパスワードを利用する。
 
Alias /nsti "/usr/local/nsti/"


Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "NSTI Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

</Directory>

この四行でパスワードを聞かれ正常にアクセスが可能となる。
※Apachの再起動が必要です。





●Nagiosとの連携
最初にも書きましたがこのNSTIはNagiosとは特に連携しません。
それもなんだかなぁという感じなので、強引にリンクを張ってみます。
service定義の中の"notes_url"を利用して、NSTIでIPのフィルタをかけた状態をマクロを利用してLinkを張ります。
※ホストグループに対して一括して定義する場合は、この手法は利用できませんね。私の利用ではその他の絡みもあり、コアスイッチ個別にTrapのサービスを指定する記述をしているので利用できます。

define service{
use generic-service
host_name test-sw00
service_description TRAP
is_volatile 1
max_check_attempts 1
check_command check_dummy!0!"OK"
notification_options w,u,c,f,r
notes_url /nsti/index.php?trapSelect=&severity=&category=&hostname=$HOSTADDRESS$
}


リンクすると、サービス名の横にアイコンが出ます。
※画像の例はaction_urlのアイコンになっているかもしれませんが気にしないでください。
Link画面

これをクリックすると、NSTIの画面が新規に開きます。
NSTIフィルタ画面
Hostのところに対象ノードのIPアドレスでフィルタされたTrap一覧が表示されます。




以上で完了です。



------- 追記 -------
 一部間違いがありましたので、こちらも見てください。




スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

Author:Opecha-DaDa
ニッチな技術メモ的なブログになりつつありますが、だからこそあなたのお役に立てる内容があれば幸いです。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。