NagiosというのはLinux環境で動作するネットワーク監視ツールなんですが、詳細は上記の記事を読んでいただくとして、この記事ではCentOS7環境にyumでインストールするところを書いてみようと思います。さらに、Nagiosの導入だけでなくNagiosの監視データをMySQLに保存するNDOUtilsも。
yumでNagiosをインストール
以前は日本語化もしたかったのでNagiosをソースのコンパイルからやっていたのですが、今回はお手軽にyumでインストールします。
Nagiosは実際の監視を行う(PINGを打ったりする)プラグインと、プラグインに指示を与える本体にパッケージが分かれています。実際の監視を行う部分が切り分けられているため、プラグインの数だけ監視の種類(PING以外にWebサーバの動作を監視するとか、FTPサーバの動作を監視するとか・・・)を増やすことができます。最近は、MQTTに対応したプラグインもあるようなので、追々試してみようと思います。(MQTTプラグインはyumでのインストールには含まれていません。)
yum install nagios nagios-plugins-all
yumでのインストールが完了すれば、あとは起動するだけです。デフォルトの設定では、localhostへのPINGやディスク容量等の監視が含まれています。
systemctl start nagios
systemctl enable nagios
Nagiosは監視結果の表示をWeb UIで行いますが、yumでインストールすると、Apacheの設定ファイル(/etc/httpd/conf.d/nagios.conf)が自動で配置されます。Web UIは基本認証がかかっているので、下記の操作でhtpasswdファイルを作ってパスワードを設定すれば、あとはApacheの再起動でWeb UIが起動します。
htpasswd /etc/nagios/passwd nagiosadmin
systemctl restart httpd
http://localhost/nagiosにアクセスすると、こんな感じにlocalhostの監視状況が表示されます。Swap UsageがCRITICALになっていますが、このサーバがEC2でスワップに対応させていないためです。
Nagiosの実行ファイルは/etc/sbin/nagiosに、設定ファイルは/etc/nagios配下に配置されているので、適宜設定を行います。
NDOUtils
次にNDOUtilsです。これもyumでインストール可能です。
yum install ndoutils
まず、/etc/nagios/ndo2db.cfgを編集します。ndo2dbはndomodからNagiosのデータを受信して、MySQLに書き込むデーモンです。
DATABASE USERNAME/PASSWORD
# This is the username/password that will be used to authenticate to the DB.
# The user needs at least SELECT, INSERT, UPDATE, and DELETE privileges on
# the database.
db_user=ndouser
db_pass=[パスワード] ←ここを編集
ndo2db.cfgに設定したとおりにMySQLのデータベースやユーザーを作っておく必要があります。ndo2db.cfgのデフォルトに沿うなら、データベース名はnagios、ユーザー名はndouserとなります。パスワードはデフォルトから変えておいた方が良いでしょう。
また、下記のスクリプトを流して指定のデータベースにテーブルを作成します。
cd /usr/share/doc/ndoutils-2.1.2/
chmod +x installdb
./installdb -u ndouser -p [パスワード] -h localhost -d nagios
ndo2dbはデーモンなのでソケットフォイルを作成しますが、その格納先ディレクトリのオーナーを変えておかないとPermission deniedになってndo2dbが起動しないという落とし穴が・・・。
chown nagios:nagios /var/run/ndoutils
次に、Nagiosのデータをndo2dbに送信するndomodですが、とりあえず動かすだけなら設定ファイル(/etc/nagios/ndomod.cfg)の編集は不要でしょう。
ndomodはNagiosのオブジェクトブローカーとして動作するため、/etc/nagios/nagios.cfgに下記の行を追加します。(最後の行だけ追加)
broker_module=/somewhere/module1.o
#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
broker_module=/usr/lib64/nagios/brokers/ndomod.so config_file=/etc/nagios/ndomod.cfg
あとは、ndo2dbの起動とNagiosの再起動を行えば、NagiosのデータがMySQLに書き込まれるようになるでしょう。
systemctl start ndo2db
systemctl restart nagios
この後は、導入したNagiosを使っていくつか実験をやってみようと思います。