2011年3月18日金曜日

UbuntuにNagiosをインストールする

UubntuにNagiosをインストールする

Ubuntu Maverick Meerkat 10.10 Server Edition
VMWareとかVirtualBoxとかにUbuntuServerをインストールしてある
OpenSSH を導入しリモートログイン出来るようになっている
Apache2, MySQL, PHP5 がインストールしてある
ターミナルエミュレーターから接続して操作する



(01)Nagiosをインストールする


Nagiosをインストールする
$ sudo apt-get install nagios3

インストール途中でnagiosadminのパスワードを聞かれる
nagios_passwdとした


(02)Nagiosにアクセスしてみる

http://server.ip.address/nagios3/


(03)Nagiosでsshを監視できるように設定を変更する


監視対象が ssh ログイン可能かどうか確認する
/usr/lib/nagios/plugins/check_ssh -p 22 -t 5 -H localhost

ssh のポート番号を標準から変更しているなら、変更先を指定して確認する
/usr/lib/nagios/plugins/check_ssh -p 65535 -t 5 -H localhost

プラグインの設定ファイルを見てオプションを確認する
$ sudo nano /etc/nagios-plugins/config/ssh.cfg

ポート番号を指定して監視する場合はこうなっている
# 'check_ssh_port' command definition
define command{
command_name check_ssh_port
command_line /usr/lib/nagios/plugins/check_ssh -p '$ARG1$' '$HOSTADDRESS$'
}

ローカルネットワーク上の全ての仮想マシンは、ボート番号 65535で有ると仮定

/etc/nagios-plugins/config/ssh.cfg を参考に
/etc/nagios3/conf.d/services_nagios2.cfg へ、環境にあう設定を書き込む

$ sudo cp /etc/nagios3/conf.d/services_nagios2.cfg /etc/nagios3/conf.d/services_nagios2.cfg.backup
$ sudo nano /etc/nagios3/conf.d/services_nagios2.cfg

以下の部分は全てコメントアウトする
ssh port 22 を監視に行き、ポートが開いてないのでエラーになるため。

# 'check_ssh_myport' command definition
define service {
        hostgroup_name                ssh-servers
        service_description            SSH
        check_command               check_ssh
        use                              generic-service
        notification_interval            0 ; set > 0 if you want to be renotified
}



以下の内容を追記する(port_numberは環境に合わせて変更すること)

# 'check_ssh_myport' command definition
define service {
        hostgroup_name               ssh-servers
        service_description           MySSH
        check_command              check_ssh_port!65535
        use                                  generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}




設定ファイルにエラーが無いか確認する
$ sudo /usr/sbin/nagios3 -v /etc/nagios3/nagios.cfg

エラーが無ければ再起動
$ sudo service nagios3 restart


(04)NagiosでMySQLを監視できるように設定を変更する


MySQLにnagiosアカウントを作る
mysql>GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%' IDENTIFIED BY 'nagios_db_passwd' WITH GRANT OPTION;

MySQLがローカルホスト以外を受け付けるようにする
$ sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.backup2
$ sudo nano /etc/mysql/my.cnf

以下の部分をコメントアウト
bind-address = 127.0.0.1

他のipからも繋がるようにする
#bind-address = 127.0.0.1

設定後、MySQLを再起動
$ sudo service mysql restart

MySQLがLISTEN しているか確認
$ sudo netstat -tlpn

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 12527/mysqld
となっていれば良い

コマンドラインから監視できるかテスト

/usr/lib/nagios/plugins/check_mysql -H server.ip.address -u nagios -p nagios_db_passwd

Uptime: 842 Threads: 1 Questions: 878 Slow queries: 0 Opens: 2097 Flush tables: 1 Open tables: 64 Queries per second avg: 1.42
等と返ってくれば良い

/etc/nagios-plugins/config/mysql.cfgをみて 引数等を確認

全てのサーバーがMySQLを起動していないが、localhostではMySQLを起動しているので
設定するファイルは
/etc/nagios3/conf.d/localhost_nagios2.cfg
になる

localhostを監視する設定ファイルを変更する
$ sudo cp /etc/nagios3/conf.d/localhost_nagios2.cfg /etc/nagios3/conf.d/localhost_nagios2.cfg.backup
$ sudo nano /etc/nagios3/conf.d/localhost_nagios2.cfg

以下追記

define service{
        use                         generic-service ; Name of service template to use
        host_name                    localhost
        service_description          MySQL
        check_command             check_mysql_cmdlinecred!nagios!nagios_db_passwd
        }



設定ファイルにエラーが無いか確認する
$ sudo /usr/sbin/nagios3 -v /etc/nagios3/nagios.cfg

エラーが無ければ再起動
$ sudo service nagios3 restart

確認してみる
http://server.ip.address/nagios3/
ユーザー名 : nagiosadmin


参考


Ubuntuのmysqlに外部から接続 - クライミング好きプログラマーのプログラミング日記
http://d.hatena.ne.jp/gac777/20090916/1253107772

0 コメント: