Revision 1 as of 2012-11-20 06:24:33

Clear message
Locked History Actions

nagios/basic

基本事項

インストール

CentOS 6.2にrpmでインストール。

  • epelレポジトリを追加。
  • yum install nagiosでインストール

構築済の環境にもよると思うが、nagios, nagios-common, gdがインストールされる。

プラグインの種類は以下で確認

yum list | grep nagios

※上記でインストールしたnagiosのデフォルトの設定ファイルには、プラグインのインストールを前提としたものがあるらしい。 したがって、この状態でnagiosを動作させると、監視対象が「CRITICAL」「(Return code of 127 is out of bounds - plugin may be missing) 」というステータスになる。

設定

/etc/nagios

nagiosの各種設定ファイルがある。

nagios.cfg

nagios.cfgが設定ファイルの総元締めとなっている。このファイルで、以下のような記述を行って他の設定ファイルをインクルードしている。

# You can specify individual object config files as shown below:
cfg_file=/etc/nagios/objects/commands.cfg
cfg_file=/etc/nagios/objects/contacts.cfg
cfg_file=/etc/nagios/objects/timeperiods.cfg
cfg_file=/etc/nagios/objects/templates.cfg

# Definitions for monitoring the local (Linux) host
cfg_file=/etc/nagios/objects/localhost.cfg

# Definitions for monitoring a Windows machine
#cfg_file=/etc/nagios/objects/windows.cfg

この例の最後の行は#でコメントアウトされているが、つまりobjectsにあらかじめ用意されているファイルであっても、使用されていないものがあることに注意。

管理者メールアドレス

/etc/nagios/objects/contact.cfgに、管理者メールアドレスを記述する(デフォルトはnagios@localhostになっている)。

ウェブアプリの認証

後述するように/usr/share/nagios/htmlにnagiosのウェブアプリがある。

これは(デフォルトでは?)BASIC認証で、パスワードファイルは/etc/nagios/passwdになっており、nagiosadmin/nagiosadminであるので、パスワードを変更しておく。

cd /etc/nagios
rm passwd
htpasswd -c passwd nagiosadmin
New password:
Re-type new password:

ローカルホストの監視設定

ここではローカルホストのみを監視することにする。これは「/etc/nagios/objects/localhost.cfg」に設定することになるが、後述する。

/usr/share/nagios/html

nagiosの管理画面ウェブサイトは/usr/share/nagios/htmlに格納されている。 インストール時に、/etc/httpd/conf.d/nagios.confが既に作成されているので、気に入らない場合は削除するか、名前を変更する。

ともあれ、これを表示できるようにhttpdを設定する。 先述したように、BASIC認証ファイルの/etc/nagios/passwdを変更すること。

設定ファイルのチェックと起動

nagios -v /etc/nagios/nagios.cfg

で設定ファイルをチェックする。

chkconfig nagios on
service nagios start

で起動する。

この状態でnagiosの管理者画面を見ると、Hostsメニューにはlocalhostのみが登録されており、StatusがDOWNになっている。 また、管理者側にAlertがメールされる。

これは、nagiosのデフォルト設定が各種プラグインのインストールを前提としているにも関わらず、プラグインがインストールされていないため。

ローカルホストの監視設定

「/etc/nagios/objects/localhost.cfg」を見ると「define service」が8つ定義されている。一方nagiosの管理画面のServicesを見ると、localhostについて、これらのサービスのStatusがCRITICAL(Return code of 127 is out of bounds - plugin may be missing)になっていることがわかる。

つまり、localhostについてこれらのサービスを監視する設定になっているにも関わらず、監視用のプラグインがインストールされていない。

不要なサービスを除去するか、あるいは監視用のプラグインをインストールし、nagiosを再起動する必要がある。

サービスの無効化

localhost.cfgに記述したまま管理画面からdisabledにする方法もあるようだが、ここではlocalhost.cfgから除去することにする。

とりあえず、PING,Curernt Load,HTTP以外はコメントアウトし、プラグインをインストールする。

※PINGはいらないと思うが、これが無いとHostがDOWN状態のままで表示される。調べるのも面倒なので入れておく。

yum install nagios-plugins-load nagios-plugins-http nagios-plugins-ping

設定をチェックして再起動

nagios -v /etc/nagios/nagios/cfg
service nagios restart

管理画面を見てみると、すぐにはOKにはならない。しばらく待つ必要がある。

check_local_loadの設定

localhost.cfgの「Current Load」の設定を見ると「check_local_load!5.0,4.0.3.0!10.0,6.0,4.0」という値になっているが、これでは大きすぎるので、値を小さくする。

ホスト名称の設定

localhost.cfgのdefine hostの設定の中の、少なくともaliasを変更しておく。これは空白が含まれた名称でもよい。 異常時のメールには、この名称が記述されるため、デフォルトのままであると(複数ホストをそれぞれのnagiosで監視している場合は)区別がつかなくなってしまう。

できれば、host_nameも変更すべきだが、この場合は、その後のdefine hostgroupのmembersやdefine serviceのhost_nameもそれに合わせなければいけない。

コマンドとその呼び出し方

それぞれのdefine service内のcheck_commandで監視コマンドの呼び出しを定義するわけだが、引数は!区切りになっている。 例えば、check_pingの場合、

define service{
        use                             local-service         ; Name of service template to use
        host_name                       local
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }

となっている。このcheck_pingコマンドの実体は、commands.cfgの中に定義されている。

define command{
        command_name    check_ping
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
        }

つまり、!で区切られた引数が$ARG1$等として展開され、実際のコマンドを呼び出す。

これは、yum install nagios-plugins-pingでインストールされたコマンドだが、これは /usr/lib64/nagios/plugins/check_pingとしてインストールされている。

これらのコマンドを作成する場合は、以下を参考。

コマンドのパスは/etc/nagios/private/resource.cfgに定義されている。

$USER1$=/usr/lib64/nagios/plugins