【Nagios集中講座 第8回】Nagiosの監視結果をMySQLに格納するNDOUtilsとは?

前回のNagios集中講座から日が開いてしまいました。今日から復活です。

前回まででNagiosの特徴、インストール方法、設定ファイルといったNagios本体のひととおりの説明が出来たと思っています。今回からは、Nagiosの周囲にあるものたちを説明していこうと思います。

まずは、Nagiosの監視結果をMySQLなどのデータベースに格納するNDOUtilsについてです。

NDOUtilsとは?

NDOUtilsは先述のとおり、Nagiosとデータベースのインタフェースです。使用できるデータベースはMySQLですが、PostgreSQLについてもベータ版扱いでサポートしています。

上図のとおり、NDOUtilsはNagiosからのアウトプットしか扱うことが出来ません。つまり、監視結果ファイルをファイルではなくてMySQLに格納できるというだけです。

設定ファイルのかわりにMySQLに設定内容を書いておいたら、それをNagiosに反映してくれるという機能はありません。設定については相変わらず、テキストファイルといて書く必要があるのです。但し、設定ファイルの内容をMySQLに吐き出す機能はあります。他にもログやら何やら、Nagiosが吐き出すものなら何でも対応しているので、NDOUtilsが格納したMySQLのデータを見れば、Nagiosの動作状況についてはすべて把握することが出来ます。

また、NDOUtilsの重要な機能として、複数のNagiosの動作状況を1つのMySQLデータベースにまとめておけることがあります。監視対象となる機器が増えたときに、まず行うのはNagiosを中央〜分散構造にして、アクティブチェックを分散サーバに任せて、中央サーバは分散サーバからの報告を処理するだけにするという方法があります。この場合は、中央サーバを見ればすべての監視対象の監視状況が分かります。しかし、中央サーバが複数になってくるとすべての監視対象の監視状況を一度に把握する方法がありません。そこでNDOUtilsを使えば、1つのデータベースにまとめることが出来るのです。(それを見るためのアプリ開発は必要ですが。)

NDOUtilsのインストール

それでは、NDOUtilsのインストールを始めましょう。ソースコードからのインストールです。
NDOUtilsのmakeにはmysql-develが必要なので、あらかじめインストールしておきます。

yum install mysql-devel
wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.5/ndoutils-1-5.tar.gz/download
tar xvzf ndoutils-1-5.tar.gz
./configure
make

MySQLにndoutils用のユーザとデータベースを作成します。これはMySQLのコンソールやphpMyAdminを使って手動で行う必要があります。(ここでは、MySQLにnagiosというユーザを作り、nagiosというデータベースを作りました。
テーブル構造はSQLを流し込むだけです。

mysql -u nagios -p nagios < db/mysql.sql

それではコンパイルしたNDOUtilsをインストールします。make installという方法ではありませんので、注意が必要です。
NDOUtilsをコンパイルすると、Nagios2.x用と3.x用の2つのバイナリが出来ます。ndomod-3x.oがNagios3.x用のバイナリです。
また、ndomod以外にもバイナリが出来ますが、とりあえず、ndomodだけ。
設定ファイルのサンプルもコピーしておきましょう。

cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
cp config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg

次に、nagios.cfgを編集して、Nagiosのイベントブローカーモジュールとして、ndomodを使うように登録します。

broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfgで設定ミスがないか確認し、
service nagios restart でnagiosを再起動しましょう。

次に、ndo2dbをインストールします。ndomodとの違いですが、ndomodはNagiosの監視状況データを受け止めるモジュールであり、それをMySQLに出力するのがndo2dbです。ndomodはNagiosのイベントブローカーモジュールとして登録されるだけですが、ndo2dbはデーモンとして起動する必要があります。
複数のNagiosの出力を1つのMySQLにまとめる場合は、各Nagiosサーバにはndomodだけを導入し、MySQLのあるサーバにだけndo2dbを導入するということになります。この場合、ndomodとndo2dbの間の通信はTCPで行われます。

cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db
cp config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
chown nagios.nagios /usr/local/nagios/etc/ndo*

/usr/local/nagios/etc/ndo2db.cfgを編集
・DB名、DBユーザ名、DBパスワードを書き換える

cp daemon-init /etc/rc.d/init.d/ndo2db
chmod +x /etc/rc.d/init.d/ndo2db
chkconfig --add ndo2db
chkconfig ndo2db on
service nagios stop
service ndo2db start
service nagios start

これでインストール完了です。おそらく、MySQLのnagiosデータベースにデータが書き込まれているはず。

結構長くなったので、NDOUtilsを使う上でのTipsは次回の記事に書くことにします。

Nagios集中講座 Index

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。