スポンサーサイト

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

Nagiosのバージョンアップ

Nagiosをバージョンアップしてみる


以前インストールしたときは3.4.1だったNagios-Coreがいつの間にやら3.4.4になっていた。
脆弱性が発見されたよという連絡を受けたのがきっかけで必要にかられてバージョンアップを行ったのでメモ。


3.x→3.xへのバージョンアップは非常に簡単。
公式の手順書をそのとおりやればアップデート完了。
参考:公式手順
一応日本語化しているのでそのへんを再度実施する。


-環境-
 Ubuntu12.04 Server
 NagiosCore 3.4.1(バージョンアップ前)
 NagiosCore 3.4.4(バージョンアップ後)





1.ファイルのダウンロード
まずはファイルをダウンロードします。
$wget http://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.4.4/nagios-3.4.4.tar.gz


2.解凍・日本語パッチ適用

ファイルを解凍します。
$tar xvf nagios-3.4.4.tar.gz


以前と同じ日本語パッチ(ももーいさん作成)をダウンロードし、解凍したnagiosフォルダにコピーします。
※手順は以前と同じ
※気づきませんでしたが3.4.3バージョンがupされてましたので活用させて頂きます。
 ありがとうございます。m(_ _)m
$cp nagios-jp-3.4.3.patch.gz ./nagios
$cd ./nagios
$gzip -dc nagios-jp-3.4.3.patch.gz | patch -p1



3.インストール
これまた前回(※./html/Makefile.inの編集のあたり)と同じく、パッチを当てた場合うまく行かない箇所があるので一部をコメントアウトします。
インストールを行ったあと、取りこぼしのファイルを手動でコピーします。
$sudo ./configure --with-command-group=nagcmd
$sudo make all
$sudo make install
$sudo cp -p ./html/includes/rss/{AUTHORS,INSTALL,TROUBLESHOOTING,CHANGES,NEWS,cookbook,ChangeLog,README} /usr/local/nagios/share/includes/rss/
$sudo chown nagios:nagios /usr/local/nagios/share/includes/rss/*



これで完了です。
念の為、"$ sudo service apache2 restart"でWebサービスを再起動してアクセスするとNagiosのトップページのバージョンが変わっていることがわかります。



気づいた点では、検索した時に表示件数が複数ページに渡った際に、ページ遷移がうまく行かなかったのが正しくなりました。地味に嬉しいです。





スポンサーサイト

Nagiosでインタフェース監視

Nagiosで監視対象ノードのインタフェースLink状態を監視する


以前しれっとNagiosプラグインをインストールします。
なんて書いたけど、それだけではうまく行かないところに関していまさらながら補足。



check_ifstatusプラグインを利用すると、対象ノードのインタフェースのステータスを簡単に監視することができます。check_snmpで対象ノードのMIBを取得しても同じことができますが、より簡単にせって出来ます。
ただ、このプラグインは追加でNet-SNMPが必要となるため、そのままではエラーが出てしまいます。

ちなみに、NagiosプラグインをDLして解凍するとその中に「REQUIREMENTS」というファイルができるのですが,
そこにプラグインを追加するために必要となるモジュール/ソフトなどの条件が記載されています。

- 環境 -
 Ubuntu 12.04 Server
 Nagios 3.4.1
 NagiosPlugins 1.4.16
 NetSNMP 6.0.1





1.Net-SNMPをダウンロード・解凍
$wget http://cpan.perl.org/modules/by-authors/id/D/DT/DTOWN/Net-SNMP-v6.0.1.tar.gz
$tar xvf Net-SNMP-v6.0.1.tar.gz



2.Net−SNMPのインストール

Net-SNMPを解凍したディレクトリに移動します。
$cd Net-SNMP-v6.0.1

インストールを行います。
$sudo perl Makefile.PL
$sudo make test
$sudo make install


これで完了です。


check_ifstatusの利用方法は
/usr/local/nagios/libexec/check_ifstatus --help
と実行すると表示されます。


●設定例
具体的な例として次の例の設定の場合次のようになります。

 インタフェース監視対象
  ホスト名:SW-1
  コミュニティ名:public
  非監視インタフェース(のifindex):10111,10112

 ※ホスト設定、generic-service設定は省略。


command.cfg
define command{
command_name check_ifstatus
command_line $USER1$/check_ifstatus -H $HOSTADDRESS$ -C $ARG1$ -u $ARG2$
}

※ -C:コミュニティ名
  -u : 監視対象外のインタフェース(ifindex)


ホストまたはサービス設定ファイル
define service{
use generic-service
host_name SW-1
service_description Check I/F Link Status
check_command check_ifstatus!Public!10111,10112
notes_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$
}



notes_urlに記載しているのは、nagiosgraphに保存したこのインタフェースのLink状態取得結果のグラフにLinkを
貼る目的です。必須ではありません。




●補足

スイッチのインタフェースを表す番号:ifindexを調べるためにはいくつか方法があります。
例えばCiscoスイッチなら
"show snmp mib ifmib ifindex"コマンドで調べることができます。
#show snmp mib ifmib ifindex 
GigabitEthernet0/41: Ifindex = 10141
GigabitEthernet0/14: Ifindex = 10114
GigabitEthernet0/43: Ifindex = 10143
GigabitEthernet0/16: Ifindex = 10116
GigabitEthernet0/34: Ifindex = 10134
(略)



その他、snmpwalkコマンドを使う
$snmpwalk -v 2c -c public 192.168.0.100  1.3.6.1.2.1.31.1.1.1.1
iso.3.6.1.2.1.31.1.1.1.1.1 = STRING: "Vl1"
iso.3.6.1.2.1.31.1.1.1.1.898 = STRING: "Vl898"
iso.3.6.1.2.1.31.1.1.1.1.2100 = STRING: "Vl2100"
iso.3.6.1.2.1.31.1.1.1.1.10101 = STRING: "Gi0/1"
iso.3.6.1.2.1.31.1.1.1.1.10102 = STRING: "Gi0/2"
iso.3.6.1.2.1.31.1.1.1.1.10103 = STRING: "Gi0/3"
iso.3.6.1.2.1.31.1.1.1.1.10104 = STRING: "Gi0/4"
iso.3.6.1.2.1.31.1.1.1.1.10105 = STRING: "Gi0/5"
iso.3.6.1.2.1.31.1.1.1.1.10106 = STRING: "Gi0/6"
iso.3.6.1.2.1.31.1.1.1.1.10107 = STRING: "Gi0/7"
iso.3.6.1.2.1.31.1.1.1.1.10108 = STRING: "Gi0/8"
(略)


あとは、対象機器のMIBを調べるなどですかね。

OIDがわからなければ強引な方法として
"$snmpwalk -v 2c -c public 192.168.0.100 . | grep Gigabit"
のように全OIDを検索して、Grepでそれっぽいキーワードを探し出すなどもありかもです。

SNMPTTの設定 補足(訂正)

SNMPTTの設定で一部訂正


SNMP-Trapを管理するところで行ったNSTIを利用してNagiosからTrapの履歴を調べるNagiosでTrap検知するに関する内容で
以下2点の間違いがありましたので、訂正いたします。

1.LinkTrapをsnmott.conf.IF-MIBとして追加したが、これだけだと情報が重複する
2.CiscoのLinkTrapは含まれる情報が少し異なる。




まず1について。
SNMPTRAPのエントリの画像でもわかるとおりLinkDownが2つ存在する(Trapの1行目と2行目)。
NSTIフィルタ画面



これは、
/etc/snmpディレクトリ配下にある
"snmptt.conf"と"snmptt.conf.IF-MIB"それぞれにLinkDownTrapに関する記述があるため、それぞれのフィルタが出力するからです。
※置き換えや、snmptt.confを編集した人は関係ないかもしれません。

例:問題の箇所
snmptt.conf
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal
FORMAT Link down on interface $1. Admin state: $2. Operational state: $3
#EXEC qpage -f TRAP notifygroup1 "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.
EDESC

snmptt.conf.IF-MIB
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



また、ひとつはCriticalとなっているが、ひとつはNormalのままで同じLinkDownTrapで状態が多少異なるものが2つ上がってきてしまっている。
これの対策は簡単で、どちらかをコメントアウトするなり消すなりすればOK。
どちらを消すかは環境に合わせて判断してください。







つぎに2について。

簡単に言うと、Cisco機器が飛ばしてくるLinkTrapは標準で採用されているMIBを拡張した形式のものが採用されているらしい。
通常その場合は、ベンダMIBなどの固有MIBにするのが普通らしいですが、LinkTrapに関しては標準のLinkTrapのMIB値(OID)をそのまま利用しているらしく、前回の設定のまま行うと表示が多少おかしくなる。


通常のLinkTrapで送られる内容
1: ifIndex
2: ifAdminStatus
3: ifOperStatus


CiscoのLinkTrapで送られる内容
1: ifIndex
2: ifDescr
3: ifType
4: locIfReason

これからわかるとおり、2番目以降が異なるため、SNMPTTのFORMATで指定する"$x"の箇所がずれてくるため、表示される内容がずれてきたりしちゃいます。


表示例
CiscoのLinkTrapを通常のSNMPTTの設定で受診した場合
Thu Oct 25 15:49:48 2012 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" 10.82.12.85 - Link down on interface 10005.  Admin state: FastEthernet1/0/5.  Operational state: 6 


本来なら、ifAdminStatusが場所に、ifDescrが入っているため表示がStatusではなくIF名となってしまっています。


なので、CiscoのMIBをダウンロードしてきてsnmpttconvertmibコマンドで生成してあげれば良い。
http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=ja&step=2&mibName=CISCO-GENERAL-TRAPS

必要となるMIBは
CISCO-SMI
OLD-CISCO-INTERFACES-MIB
OLD-CISCO-SYSTEM-MIB
OLD-CISCO-TCP-MIB
OLD-CISCO-TS-MIB
CISCO-GENERAL-TRAPS

あたりになります。


すべてダウンロードしたら、"/usr/share/mibs/cisco"にフォルダを作成し、ファイルを配置します。
今回はその他のMIBにあわせて、実際には"/var/lib/mibs/cisco"にファイルを配置しそのディレクトリにシンボリックリンクを設定しました。
$ ll /usr/share/mibs/
lrwxrwxrwx 1 root root 19 10月 19 18:03 cisco -> /var/lib/mibs/cisco/
lrwxrwxrwx 1 root root 18 6月 7 2010 iana -> /var/lib/mibs/iana/
lrwxrwxrwx 1 root root 18 6月 7 2010 ietf -> /var/lib/mibs/ietf/


$sudo snmpttconvertmib --in=/usr/share/mibs/cisco/CISCO-GENERAL-TRAPS.my --out=/etc/snmp/snmptt.conf.CISCO-GENERAL-TRAPS



生成された"snmptt.conf.CISCO-GENERAL-TRAPS"ファイルを追加で読み込むように/etc/snmp/snmptt.iniを編集するか、前述のファイルの内容を利用し"/etc/snmptt/snmptt.conf"などに追記(変更)する等で編集してください。

こちらのサイトですごく詳しく解説してあります。
http://ricemalt.blog98.fc2.com/blog-entry-21.html


続きを読む

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一覧が表示されます。




以上で完了です。



続きを読む

NagiosでTrap検知する

UbuntuServerで動かしているNagiosでTrap検知をしてみる

少し前に書いたNagiosで、Ping監視や各サービス監視、SNMPポーリングでの監視はできていますが機能エンハンスとしてTrapを受信・アラートを出す機能を追加したのでメモ。

Nagiosはプラグインの実行結果をもとにCritical、Okなどのステータスを判断します。Trapの場合は監視対象の装置が一方的に送信してくるためにそのような処理ができないため別のアプローチをとる必要があります。Nagiosで監視する場合には具体的に以下のような流れになるようです。


- NagiosでのTrap受信・アラートまでの簡単な流れ -

① Trapを受信(snmptrapd)
 ↓
② Trapの種類を判断し処理を行う(snmptt)
 処理の一連として、nagios.cmdファイルにログを吐き出す(nagios:submit_check_result利用)
 ↓
③ Nagiosが定期的にnagios.cmdをチェックし該当する(nagios: check_dummy利用
 ↓
④ アラート検知





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




● snmptrapdのインストール&設定
まず、Trapを受信するためのサービス"snmptrapd"をインストールします。Ubuntuでは"snmptt"をインストールすると一緒にインストールされます。
$sudo apt-get install snmptt

すると、/etc/snmp/snmptrapd.confという設定ファイルができるのでこれを編集します。具体的には、最後の行に以下を追加。(※必要に応じてファイルをバックアップしてください。)
traphandle default /usr/sbin/snmptthandler
authCommunity log,execute,net public

ここではコミュニティ名をpublicとしました。
設定の意味は受信したTrapに対してログ出力、コマンドの実行、別のネットワークの転送を許します、という意味らしいです。




● snmpttのインストール&設定

SNMPTTをインストールしますが、先ほどすでにインストール済みなので設定ファイルを変更します。

・ SNMPTTの設定ファイル/etc/snmp/snmptt.iniを変更・確認

確認箇所は以下の通り。
log_enable = 1
log_file = /var/log/snmptt/snmptt.log
log_system_enable = 1 (snmpttの動作ログを残す場合=1)
log_system_file = /var/log/snmptt/snmpttsystem.log
unknown_trap_log_enable = 1 (認識できないTrapをログとして保存する場合=1)
unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log

また、処理するTrapを指定するための設定ファイルを指定する。すでに指定されている/etc/snmp/snmptt.confに追記する手もあるが、新規に別ファイルとして作成する。ここでは、LinkUP,Downを検知するためのファイルを"snmptt.conf.IF-MIB"という名前で別出しにする。

[TrapFiles]
# A list of snmptt.conf files (this is NOT the snmptrapd.conf file). The COMPLETE path
# and filename. Ex: '/etc/snmp/snmptt.conf'
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
/etc/snmp/snmptt.conf.IF-MIB



・/etc/snmp/snmptt.confの編集

snmptt.confに記載されているTrap以外はUnknownとして扱うため、監視したいTrap毎に記述する必要がある。mibファイルから生成することも可能。
Ubuntuの場合"/usr/share/mibs/"の配下にMIBファイルがある(NagiosでSNMPプラグインをインストールしていれば)のでこれを利用する。
$sudo snmpttconvertmib --in /usr/share/mibs/ietf/IF-MIB --out /etc/snmp/snmptt.conf.IF-MIB

でMIBファイルからsnmpttconf形式に変換したファイルを生成してくれる。これをsnmptt.confに追記するか、snmptt.iniで読み込むように編集してあげる(一番下の辺り)。今回は後者。



・SNMPTTがnagios.cmdにログを書き込むよう設定する

snmptt.conf(snmptt.conf.IF-MIB 等)のFORMATとSDESCの間に下記行を追加して、SNMPTTが"submit_check_result"を利用し"nagios.cmd"にログを書き込むようにする。
今回は別ファイルとした"/etc/snmp/snmptt.conf.IF-MIB"を編集する
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal
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

重要!! 追加行の説明
・青文字の"TRAP"は後ほどのNagios設定のサービス名とあわせる必要があります。
・TRAPの後ろで指定する数字は、NagiosがこのTrapの状態をどう認識するかを指定する重要なパラメータです。
 0:OK
 1:Warning
 2:Critical
 3:Unknown
を意味します。上記例だと、LinkDonwをCriticalとして認識させる事を意味します。



● Nagios側での受信設定

submit_check_resultでログを出力するための設定を行う。

・submit_check_resultをコピーする

Nagiosインストール時のパッケージを解凍したディレクトリからsubmit_check_resultをコピーする。コピー元は自分の環境に合わせてください。
$sudo cp ~/Download/nagios/contrib/eventhandlers/submit_check_result /usr/local/nagios/libexec


・submit_check_resultを編集する

submit_check_resultは"/usr/local/nagios/var/rw/nagios.cmd" に書き込みを行うがUbuntuの場合(sudo)ファイルアクセスの際にアクセス権が無いためアクセスできない。
そのため一部変更が必要。
"submit_check_result"の最後の行を下記のように変更する。
#`$echocmd $cmdline >> $CommandFile`
`$echocmd $cmdline | sudo -u nagios tee -a $CommandFile`

※特にUbuntuはここが重要になります。Nagiosのサービスを稼働させた際に/usr/local/nagios/var/nagios.cmdができるのですがこのファイルは所有者がnagios:nagcmdでアクセス権が660(rw/rw/-)になっています。そのためこのままではファイルアクセスが出来ずNagiosにログが渡せません。
参考:sudoを利用する事の短所



・Nagiosでコマンド、サービス定義を行う
ここまできて、Nagios側でサービスを監視するための設定を行います。

コマンドの定義
check_dummyを利用するため、コマンド定義をします。(Nagisファイル:command.cfg)
define command{
command_name check_dummy
command_line $USER1$/check_dummy $ARG1$ $ARG2$
}



サービスの定義
実際に監視するサービスを定義します。
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
}


※ Max_check_attemptsは1にしないとアラートが飛ばないです



●サービスの起動

関連サービスを再起動します。
$sudo service nagios restart
$sudo service snmptt restart
$sudo /usr/sbin/snmptrapd -On



●SNMPTRAPDの自動起動設定

snmptrapdはサーバ起動時に自動でサービスが開始するように設定する。初期状態ではされません。
"/etc/defualt/snmpd"を編集します。
編集箇所は以下2つ


TRAPDRUN=yes

TRAPDOPTS="-On -Lsd -p /var/run/snmptrapd.pid"

※この場合再起動しないと確かめられませんが・・。


以上で完了です。


Trapを発生させてみて確認してください。
私は実機でLinkTrapを発生させましたが、こんな方法もあるみたいです。


確認のポイント
① snmpttのログ確認
"/var/log/snmptt/snmptt.log"にTrapが記載されていること。

② /usr/local/nagios/var/rw/nagios.cmdのファイル更新時間が最新になること。

②が確認できれば、Nagiosにログが渡っているはずです。アラートを飛ばすようにしていればNagiosのトップ画面から警報・通知・イベントログなどでも確認できます。

それでも、受信等されない場合"netstat -an"でUDPポート162が開いている事、最悪はtcpdumpなどでSNMP-Trapパケットが到達している事を確認しているなどが必要になるかもしれません。


サービス監視画面<正常時>
正常画面


サービス監視画面<LinkDonwTrap受信時>
アラート検知

検知時はCriticalで赤くなりますが次回のサービスチェックのタイミングでLiinkDonwのままでもOKとなりグリーンになります。そのためアラート(メール)などで飛ばさないとタイミングによっては監視画面からは正常となってしまう場合があるので運用にきおつける必要があります。

プロフィール

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

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

この人とブロともになる

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