Nagios

提供: ArchWiki
移動先: 案内検索

Nagios はオープンソースのホスト・サービス・ネットワーク監視プログラムです。指定されたホストやサービスを監視して、問題の兆候などを警告します。この記事では Nagios のインストール・設定方法を説明します。

Nagios には以下のような機能があります [1]:

  • ネットワークサービスの監視 (SMTP, POP3, HTTP, NNTP, PING など)
  • ホストのリソース監視 (プロセッサの負担率、ディスクの使用率など)
  • 簡単に自分のサービスをチェックできるシンプルなプラグイン設計
  • 並列化されたサービスチェック
  • "parent" ホストを使ってネットワークホストの階層を定義でき、ホスト間で落ちてないか検知できます。
  • サービスやホストに問題が発生した場合に通知 (メールやページャ、あるいはユーザーが定義した方法を使用)
  • サービスやホストに何か起こったときに対処するようにあらかじめ定義可能
  • ログファイルの自動ローテーション
  • ホストの冗長監視の実装をサポート
  • 現在のネットワーク状態・履歴・通知・ログファイルなどを表示するウェブインターフェイス

ウェブサーバー

公式ドキュメント ではウェブサーバーは必ずしも必要ではないとされていますが、CGI 機能を使いたいと考えているのであればウェブサーバー (Apache が推奨されています), PHP (php-apache), gd ライブラリが必要になります。

インストール

インストールする前に、ウェブサーバーとして必要なパッケージをインストールしてください。例えば nginx を使用する場合: nginx, php, php-fpm, fcgiwrap などが必要です。

AUR から nagiosAUR パッケージをインストールしてください。

monitoring-plugins もインストールすると良いでしょう。インストールした場合、/etc/nagios/resource.cfg を編集して新しいパスを記述してください:

#$USER1$=/usr/share/nagios/libexec
$USER1$=/usr/lib/monitoring-plugins

Nagios の設定

サンプル設定ファイルを root でコピーしてください:

# cp /etc/nagios/cgi.cfg.sample /etc/nagios/cgi.cfg
# cp /etc/nagios/resource.cfg.sample /etc/nagios/resource.cfg
# cp /etc/nagios/nagios.cfg.sample /etc/nagios/nagios.cfg
# cp /etc/nagios/objects/commands.cfg.sample /etc/nagios/objects/commands.cfg
# cp /etc/nagios/objects/contacts.cfg.sample /etc/nagios/objects/contacts.cfg
# cp /etc/nagios/objects/localhost.cfg.sample /etc/nagios/objects/localhost.cfg
# cp /etc/nagios/objects/templates.cfg.sample /etc/nagios/objects/templates.cfg
# cp /etc/nagios/objects/timeperiods.cfg.sample /etc/nagios/objects/timeperiods.cfg

コピーしたファイルの所有者・所有グループを nagios/nagios に設定:

# chown -R nagios:nagios /etc/nagios

適当なユーザー名とパスワードで htpasswd.users ファイルを作成してください (例: nagiosadmin と secretpass):

# htpasswd -c /etc/nagios/htpasswd.users nagiosadmin

apache-toolsAUR をインストールしたくない場合、以下のコマンドを実行してください:

# echo -e "nagiosadmin:`perl -le 'print crypt("your-password","salt")'`" > /etc/nagios/htpasswd.users

別のユーザーを追加することもできますが、/etc/nagios/cgi.cfg を編集する必要があります。'nagiosadmin' を適当なユーザーに置き換えるか、カンマで区切ってユーザーを追加してください (例: nagiosadmin,yourusername,yournextusername)。

インストールした nagios のプラグインの所有者・所有グループが root:root の場合、以下のコマンドを実行してください:

# chown -R nagios:nagios /usr/share/nagios

Nagios を設定したら、次はウェブサーバーの設定です。

Apache の設定

/etc/httpd/conf/httpd.conf を編集して、ファイルの末尾に以下を追加してください:

LoadModule php5_module modules/libphp5.so

# Nagios
Include "conf/extra/nagios.conf"

# PHP
Include "conf/extra/php5_module.conf"

設定ファイルをコピー:

# cp /etc/webapps/nagios/apache.example.conf /etc/httpd/conf/extra/nagios.conf

apache ユーザーの http を nagios グループに追加してください:

# usermod -G nagios -a http

追加しないと nagios を使用するときに以下のようなエラーが表示されます:

Could not open command file '/var/nagios/rw/nagios.cmd' for update!: 

グループに追加しても上記のエラーが解決しない場合、ファイルのパーミッションを変更してください:

 # chmod 666 /var/nagios/rw/nagios.cmd

Nginx の設定

php と php-fpm だけでなく、CGI スクリプトを動かすために fcgiwrap もインストールする必要があります。

設定例:

server {
    server_name     nagios.yourdomain.tld;
    root            /usr/share/nagios/share;
    listen          80;
    index           index.php index.html index.htm;
    access_log      nagios.access.log;
    error_log       nagios.error.log;

    auth_basic            "Nagios Access";
    auth_basic_user_file  /etc/nagios/htpasswd.users;

    # Fixes frames not working
    add_header X-Frame-Options "ALLOW";
    
    location ~ \.php$ {
        try_files       $uri = 404;
        fastcgi_index   index.php;
        fastcgi_pass    unix:/run/php-fpm/php-fpm.sock;
        include         fastcgi.conf;
    }

    location ~ \.cgi$ {
        root            /usr/share/nagios/sbin;
        rewrite         ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
        fastcgi_param   AUTH_USER $remote_user;
        fastcgi_param   REMOTE_USER $remote_user;
        include         fastcgi.conf;
        fastcgi_pass    unix:/run/fcgiwrap.sock;
    }

    # Fixes the fact some links are expected to resolve to /nagios, see here.
    location /nagios {
        alias /usr/share/nagios/share;
    }
    
}

Lighttpd の設定

lighttpd の設定例:

$HTTP["url"] =~ "^/nagios" {
        alias.url = (
                "/nagios/cgi-bin" => "/usr/share/nagios/sbin",
                "/nagios" => "/usr/share/nagios/share" 
        )

        $HTTP["url"] =~ "^/nagios/cgi-bin" {
                cgi.assign = ( "" => "" )
        }

        auth.backend = "htpasswd" 
        auth.backend.htpasswd.userfile = "/etc/nagios/passwd" 
        auth.require = ( "" => (
                "method" => "basic",
                "realm" => "nagios",
                "require" => "user=nagiosadmin" 
                )
        )
}

mod_setenv, mod_cgi, mod_alias, mod_auth を許可してください。

PHP の設定

/etc/php/php.ini を編集して open_basedir ディレクティブに /usr/share/nagios を追加してください。

設定例:

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps:/etc/webapps:/usr/share/nagios

起動

ウェブサーバーを起動してから nagios.service起動してください。

起動したらウェブブラウザから nagios にアクセスできます。htpasswd を作成するときに入力したユーザー名とパスワードを使用してください: http://localhost/nagios

Arch Linux ホストの監視

monitoring-pluginsnrpe または check_by_ssh とパスワード無しでホストを監視できる ssh が必要です。

nrpe の設定は /etc/nrpe/nrpe.cfg で行い、監視するファイルは /usr/share/nagios/libexec/ に配置します。インストール後は nrpe.cfg はほとんど空なので必ず編集してください。

check_by_ssh を使用する場合、監視する側のシステムで、Nagios を実行するユーザーに切り替えてから、ssh-keygen を実行してください。監視される側の Arch 環境にも同じ名前のユーザーを作成して一時的にパスワードを設定します: # useradd -m -d /home/icinga -s /bin/bash -p icinga icinga。監視する側のシステムで次のようにコマンドを実行してください: $ ssh-copy-id address (address はクライアントの IP に置き換えてください)。実行したらクライアントのパスワードを消去してください: # passwd -d icinga。それから $ ssh icinga@address でサーバーからクライアントにログインできることを確かめてください。

Arch 以外の環境では大抵、監視プラグインは /usr/lib/nagios/plugins にインストールされますが、Arch では /usr/lib/monitoring-plugins/ にインストールされます。/usr/lib/nagios を作成して ../monitoring-plugins から plugins にシンボリックリンクを作成すると良いでしょう。

監視する側のシステムのユーザーからコマンドラインで以下のように実行します (パスを正しく設定していれば、あらゆる Linux および BSD で動作します、FreeNAS でも動作します):

$ /usr/lib/nagios/plugins/check_by_ssh -E -H 192.168.100.11 -C "/usr/lib/nagios/plugins/check_disk -w 10 -c 5 --path=/ --units=GB"

check_rdiff プラグイン

check_rdiff というプラグインを使って rdiff-backup を監視する例。

ダウンロードとインストール

先に perl をインストールする必要があります。

$ wget http://www.monitoringexchange.org/attachment/download/Check-Plugins/Software/Backup/check_rdiff/check_rdiff
# cp check_rdiff /usr/share/nagios/libexec
# chown nagios:nagios /usr/share/nagios/libexec/check_rdiff
# chmod 755 /usr/share/nagios/libexec/check_rdiff

nagios ユーザーで sudo を有効化

perl スクリプトの check_rdiff は root で実行する必要があるため、nagios ユーザーで sudo を使えるように設定します:

# visudo

/etc/sudoers ファイルが開くのでファイルの末尾に以下を追加してください:

nagios  ALL=(root)NOPASSWD:/usr/share/nagios/libexec/check_rdiff

check_rdiff プラグインを nagios に統合

/etc/nagios/objects/commands.cfg を編集して以下の command 定義を記述してください:

# check rdiff-backup
define command{
	command_name	check_rdiff
        command_line    sudo $USER1$/check_rdiff -r $ARG1$ -w $ARG2$ -c $ARG3$ -l $ARG4$ -p $ARG5$ 
	}

/etc/nagios/objects/localhost.cfg を編集して localhost の rdiff-backup のチェックを記述してください。例:

define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             rdiff-backup
	check_command			check_rdiff!/home/x/rdiffbackup!8!10!500!24
        }

check_rdiff スクリプトより:

上記のコマンドはバックアップ先として定義されたリポジトリ (rdiff-backup-data ディレクトリ) をチェックします。バックアップが午前8時までに完了しなかった場合、警告が返り、午前10までに完了しなかった場合は緊急状態となります。また、TotalDestinationSizeChange が 500Mb を超過した場合も警告が返ってきます。24時間ごとにセットされるようになっています (-p)。バックアップが時間通りに開始されなかったときにプラグインが問題を報告できるようにするためです。

最後に nagios を再起動してください:

# systemctl restart nagios

nagios のウェブインターフェイスのコントロールパネルで左側のサービスをクリックすることで rdiff-backup の状態を確認できます。

フォーク

  • Naemon は高速・安定に動作する新しい監視スイートです。ネットワークの状態をすぐに確認できます [2]

参照