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系の名を持つが入らないものもある、プラグイン系とか。そして二つ訊かれる

  1. nagios3-cgi を設定しています
    • "nagiosadmin" ユーザ用に作成するパスワードを入力してください。
    • これは、設定完了後に、インストールした nagios にログインするのに使用されるユーザ名とパスワードです。ここでパスワードを入力しない場合は、nagios へのアクセスを自分で設定しなければなりません。
    • nagios ウェブ管理用パスワード:
    • パスワードの確認
  2. Samba Server
    • このシステムのワークグループを指定してください。
    • ワークグループ/ドメイン名: WORKGROUP (既定値)

サンバ入るんだ、ワークグループは適宜調整、近くに 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」。