2009 9月 27

NDOUtilsとは、Nagiosのデータをデータベースに格納するためのアドオンだ。
今回は、このNagiosのデータをデータベースに格納してくれるNDOUtilsのインストール方法を紹介する。
Nagiosのアドオンは、このNDOUtilsが出力したデータベースからデータを読み出すタイプが多いので、是非インストールしておきたい。
このブログを書いている現在時点でのNDOUtilsの最新版は1.4b8 だ。
以前、インストールしたNagios(3.1.0)にインストールを行う。
サーバOSは、CentOS 5.3 である。



ダウンロード

今回必要なものは以下の通りだ。

●NDOUtils:ndoutils-1.4b8.tar.gz(本家Nagiosサイトのダウンロードページ

ダウンロードしたtarballは、どこで解凍してもいいが、ここでは/usr/local/src に置くものとする。

インストールマニュアル

NDOUtilsのインストールマニュアルは、NDOUtilsのtarball(ndoutils-1.4b8.tar.gz)に含まれている。
tarballを解凍すると以下のファイルの中にインストールマニュアルがある。

./ndoutils-1.4b8/docs/NDOUtils Documentation.pdf
./ndoutils-1.4b8/docs/NDOUtils Documentation.odt

ちなみに下のはOpenOffice版だ。
Nagios→NDOUtils→MySQLの構成パターンはいろいろあるが、今回は同一サーバ内のMySQLにデータ保存することとして構築した。
そのあたりは、上記のマニュアルを参照して欲しい。
全ての作業は特に断りがない限りrootアカウントで行うものとする。

システム要求

NDOUtilsのインストールマニュアルによれば、以下の通り。

・Nagios2.x or 3.x
・MySQL

MySQLは、Nagios Pluginsのインストールの時にインストール済みだ。
インストールしてない場合は、インストールが必要だ。

コンパイル

# cd /usr/local/src
# tar xvzf ndoutils-1.4b8.tar.gz
# cd ndoutils-1.4b8
# ./configure
# make

インストール

NDOUtilsのインストールは、必要なファイルをNagios環境にコピーすることで行う。

# cd src
# cp file2sock log2ndo ndo2db-3x ndomod-3x.o /usr/local/nagios/bin
# chown nagios.nagios /usr/local/nagios/bin/*

nagiosデータベースとユーザ作成

nagiosデータベースとnagiosデータベースに対してSELECT, INSERT, UPDATE, DELETE権限を持ったユーザ(nagiosadmin)を作成する。
赤字部分は入力したパスワード(実際は表示されない)
※MySQLのrootユーザのパスワードは、設定したものを使用する。
※もし設定していなければ、Enterキーを押すだけでいい。

# mysql -uroot -p
Enter password: rootpasswd
mysql> CREATE DATABASE nagios;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON nagios.* TO nagiosadmin@localhost
-> IDENTIFIED BY 'adminpasswd';
mysql> exit;

データテーブルの作成

NDO2DBデーモンにデータを保持させるために必要なデータテーブルを作成する。
そのためのスクリプトがNDOUtilsには用意されているので、それを起動する。

# cd ../db
# ./installdb -unagiosadmin -padminadmin -hlocalhost -dnagios

nagios.cfgに設定を追加

~/ndoutils-1.4b8/config/nagios.cfgにNagiosからデータを取得するための設定が書かれている。
ここに書かれているbroker_moduleの設定をNagios本体の /usr/local/nagios/etc/nagios.cfgに追加する。
下の例では、broker_moduleの設定がconfig_fileのところで2行に改行されているように見えるかもしれないが、本来は改行されてはいない。
今回はNagios(3.1.0)に組み込むので、下の方のコメントアウトされているbroker_moduleの設定を使用する。

# cd ../config
# cat nagios.cfg
# SAMPLE NAGIOS CONFIG SNIPPET FOR NDOMOD
#
# In order to have Nagios run the NDOMOD event broker module, you'll need
# to place a statement like the one found below in your main Nagios
# configuration file (nagios.cfg). Adjust the paths, etc. to suit your needs.

# Uncomment the line below if you're running Nagios 2.x
broker_module=/usr/local/nagios/bin/ndomod-2x.o config_file=/usr/local/nagios/etc/ndomod.cfg

# Uncomment the line below if you're running Nagios 3.x
#broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg

broker_moduleの設定を/usr/local/nagios/etc/nagios.cfgに追加する。
以下の例では、247行目に追加した。

# vi /usr/local/nagios/etc/nagios.cfg
229 #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
230 # WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING
231 #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
232 #
233 # Do NOT overwrite modules while they are being used by Nagios or Nagios
234 # will crash in a fiery display of SEGFAULT glory. This is a bug/limitation
235 # either in dlopen(), the kernel, and/or the filesystem. And maybe Nagios...
236 #
237 # The correct/safe way of updating a module is by using one of these methods:
238 # 1. Shutdown Nagios, replace the module file, restart Nagios
239 # 2. Delete the original module file, move the new module file into place, restart Nagios
240 #
241 # Example:
242 #
243 # broker_module= [moduleargs]
244
245 #broker_module=/somewhere/module1.o
246 #broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
247 broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
248

マニュアルでは、以下の設定も追加するようになっているが、今回は既に記述されていたので追加しなかった。

event_broker_options=-1

※この設定がないとMySQLにデータが保存されない。

NDOUtilsの設定ファイルを設定する

NDOUtilsの設定ファイルを/usr/local/nagios/etc/にコピーする。

# cp ndomod.cfg ndo2db.cfg /usr/local/nagios/etc
# cd /usr/local/nagios/etc
# chown nagios.nagios ndo2db.cfg ndomod.cfg

今回は同一サーバ内のMySQLにデータ保存する構成なので、ndo2db.cfgのみ変更すればよい。
db_user(106行目)にNagiosDBのユーザ名を、db_pass(107行目)にパスワードを設定する。

# vi ndo2db.cfg
101 # DATABASE USERNAME/PASSWORD
102 # This is the username/password that will be used to authenticate to the DB.
103 # The user needs at least SELECT, INSERT, UPDATE, and DELETE privileges on
104 # the database.
105
106 db_user=nagiosadmin
107 db_pass=adminpasswd
108

NDOUtilsの起動ファイルの設定と起動

/usr/local/src/ndoutils-1.4b8/daemon-initが起動ファイルなので、これを/etc/init.d/ndoutilsとしてコピーする。
次に、/etc/init.d/ndoutilsを編集して、Ndo2dbBinを以下のように変更する。

# cp /usr/local/src/ndoutils-1.4b8/daemon-init /etc/init.d/ndoutils
# chmod 755 /etc/init.d/ndoutils
# vi /etc/rc.d/init.d/ndoutils
099 servicename=ndo2db
100 prefix=/usr/local/nagios
101 exec_prefix=/usr/local/nagios
102 Ndo2dbBin=/usr/local/nagios/bin/ndo2db-3x
103 Ndo2dbCfgFile=/usr/local/nagios/etc/ndo2db.cfg
104 Ndo2dbVarDir=/usr/local/nagios/var
105 Ndo2dbRunFile=$Ndo2dbVarDir/ndo2db.lock
106 Ndo2dbLockDir=/var/lock/subsys
107 Ndo2dbLockFile=ndo2db
108 Ndo2dbUser=nagios
109 Ndo2dbGroup=nagios

また、chkconfigで管理できるようにしておく。

# chkconfig --add ndoutils
# chkconfig --list ndoutils
ndoutils    0:off  1:off  2:off  3:on  4:on  5:on  6:off
# service ndoutils start
Starting ndo2db: done.

Nagiosの再起動とログの確認

まずはNagiosの再起動だ。

# /etc/init.d/nagios restart
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.

次は、Nagiosのログを確認する。
以下のようなログが出力されていればOKだ。

# tail /usr/local/nagios/var/nagios.log
[1254062744] Successfully shutdown... (PID=13867)
[1254062744] ndomod: Shutdown complete.
[1254062744] Event broker module '/usr/local/nagios/bin/ndomod-3x.o' deinitialized successfully.
[1254062745] Nagios 3.1.0 starting... (PID=32729)
[1254062745] Local time is Sun Sep 27 23:45:45 JST 2009
[1254062745] LOG VERSION: 2.0
[1254062745] ndomod: NDOMOD 1.4b8 (07-16-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
[1254062745] ndomod: Successfully connected to data sink. 0 queued items to flush.
[1254062745] Event broker module '/usr/local/nagios/bin/ndomod-3x.o' initialized successfully.
[1254062745] Finished daemonizing... (New PID=32731)

Categories: Nagios ,NDOUtils


Leave a Reply