Nagios3 のインストール
ちょっと Nagios - The Industry Standard In IT Infrastructure Monitoring を見ている(Nagios 3翻訳ドキュメント - Nagios 3翻訳プロジェクト Wiki)
aptitudeインストール
Debian6.0(squeeze) にて、取敢えず aptitudeからパッケージインストール (3.2.1-2)。そのままで入るのは 1+25個のパッケージ。nagios系の名を持つが入らないものもある、プラグイン系とか。そして二つ訊かれる
サンバ入るんだ、ワークグループは適宜調整、近くに Windows系のサーバはないのであんまり使わないような気もする。
パスワードと CGIページ
それで管理用パスワード、綴り間違えちゃったみたいなんで調整、コマンドラインから htpasswd、パスワードファイルの場所注意。
sudo htpasswd /etc/nagios3/htpasswd.users nagiosadmin
ただ、それで「w3m localhost/cgi-bin/nagios3/」にアクセスしても、認証通ったあとで「Forbidden」don't have permission 。
それはディレクトリ直でアクセスしてるからの模様、なんかそれっぽい cgi にアクセスすると出てくる「localhost/cgi-bin/nagios3/status.cgi」とか。そしていろいろリンクを辿るといろいろ出てくる、インストール時の設定で localhost はいろいろ少しチェックしてるみたい。
というか index的なものを探すと、「/usr/share/nagios3/htdocs/index.php」のようだ。nagios のアパッチ設定「/etc/apache2/conf.d/nagios3.conf -> /etc/nagios3/apache2.conf」によれば、「Alias /nagios3 /usr/share/nagios3/htdocs」なので、単にホスト直下の「/nagios3/」を見に行けば良いのであった。
さっき直アドレスで見てたのにも cssスタイル掛かってちょっと良いかも。
サイドメニューの Documentation のリンクは切れてる「Not Found」。aptitude で「nagios3-doc」パッケージを持ってくれば何とかなるが、index.html を明示的に指定しないといけないのでリンクの URL の調整とか、開き直したりとか必要かも。内容は基本的に上記翻訳ドキュメントですね。
それから近在のマシンから http で該当アドレスアクセスしても見えた(基本認証は掛かる)、組織内ならそれでいいか。
ホストの登録
ホストの監視だけど、取敢えず「/etc/nagios3/conf.d/hosts.cfg」を作って近在のホスト
define host{ use generic-host host_name <ホスト名> }
くらい書くと ping での死活監視はしてくれる。(「/etc/init.d/nagios3 reload」必要)。死活ステータス変更の際にはメールも送ってくれる、特にメールの設定やってないのでローカルのメールだけど。宛先は「/etc/nagios3/conf.d/contacts_nagios2.cfg」のそれっぽいところ、email の項目に「,(カンマ)」でメールアドレス繋げて書けばそっちにも送られるように。
あと「/etc/nagios3/conf.d/hostgroups_nagios2.cfg」に Debian とか web-server とか sshサーバとかのグループがあるのでそのホストを members の項目に「,(カンマ)」で続けてみる。
サービス(PostgreSQL)
近在の PostgreSQLサーバを見るにはどうするのかな。上記インストールで「/usr/lib/nagios/plugins/」に「check_pgsql」ってのはある。チェックコマンドが書いてあるのは「/etc/nagios3/conf.d/services_nagios2.cfg」みたいなんでそこに追記
# check that pgsql services are running define service { hostgroup_name pgsql-servers service_description PostgreSQL check_command check_pgsql use generic-service notification_interval 0 ; set > 0 if you want to be renotified }
同「hostgroups_nagios2.cfg」にグループを追加
# A list of your pgsql servers define hostgroup { hostgroup_name pgsql-servers alias PostgreSQL servers members <ホスト名> }
ホスト名は「hosts.cfg」にも追加しておく
これでチェックしてくれるようにはなるが、DBサーバに template1 データベースとか nagiosユーザ(ロール)探しに行くのでエラーになったり。
「/etc/nagios-plugins/config/pgsql.cfg」にコマンドラインの定義があるのでユーザ(ロール)を指定しようか、パスワードも書くのはつらいかも。コマンドラインオプションは「/usr/lib/nagios/plugins/check_pgsql -h」で出てくる。
ユーザ名やパスワードは「/etc/nagios3/resource.cfg」にマクロ(変数)「$USER<数字>$=<云々>」として定義してやればいいみたい(数字は256までとか)。パーミッション注意、root と nagios 方面でしか見えないようになってる。
[567] ls -l /etc/nagios3/resource.cfg -rw-r----- 1 root nagios 1366 2012-01-27 06:05 /etc/nagios3/resource.cfg
ホスト個別の設定
ホスト固有の監視項目を立てるのはどうするかな。結局サービスの監視という事になるので、「/etc/nagios3/conf.d/services_nagios2.cfg」に個別の項目を立てるか、ローカルホストをいろいろ見てるのは「/etc/nagios3/conf.d/localhost_nagios2.cfg」にそういう記述だし。
# check that top 5 on the <ホスト名> define service { host_name <ホスト名> service_description top -n 5 check_command check_top_by_ssh!5 use generic-service notification_interval 0 ; set > 0 if you want to be renotified } define command { command_name check_top_by_ssh command_line /usr/lib/nagios/plugins/check_by_ssh -i /var/lib/nagios/.ssh/id_rsa_nophrase -H $HOSTNAME$ -l shimura -C 'top -l 1 -o cpu -n $ARG1$' }
サービスの指定で「host_name」を指定するので個別のホストの監視項目になる。
コマンドの定義もしてみた、引数は「!」で続ける模様。sshでアクセスして topで CPU負荷順に 5つ見るの、topのオプション普通と違うかも。sshキーファイルの場所注意、みると「 /var/lib/nagios/.ssh」ディレクトリがあったのでそこに作った、実行ユーザは「nagios」。