オラクる。

oracle専門ブログにしてみようかな~っと

カテゴリ: Nagios

Nagiosはプラグインを利用することで、様々なリソースを柔軟に監視することが出来ます。

[root@test01 ~]# vi /usr/local/nagios/etc/objects/localhost.cfg

define service{
        use                             generic-service
        host_name                       localhost
        service_description             Current Users
        check_command                   check_local_users!3!5
        }

例えばcheck_local_usersというプラグインを利用することで、ログインユーザ数の監視を行なうことが出来ます。
「check_local_users!3!5」とは3ユーザー以上でwarning、5ユーザー以上でcriticalという意味です。

[root@test01 ~]# vi /usr/local/nagios/etc/objects/commands.cfg

define command{
        command_name    check_ntp
        command_line    $USER1$/check_ntp -H $ARG1$ -w $ARG2$ -c $ARG3$
        }

[root@test01 ~]# vi /usr/local/nagios/etc/objects/localhost.cfg

define service{
        use                             generic-service
        host_name                       localhost
        service_description             NTP
        check_command                   check_ntp!ntp.nict.jp!1!2
        }

また、check_ntpというプラグインを利用することで、時間の監視を行なうことが出来ます。
「check_ntp!ntp.nict.jp!1!2」とはntp.nict.jpというNTPサーバを参照し、1秒以上ずれていたらwarning、2秒以上ずれていたらcriticalという意味です。

[root@test01 ~]# vi /usr/local/nagios/etc/objects/commands.cfg

define command{
        command_name    check_ssh
        command_line    $USER1$/check_ssh -t $ARG1$ $HOSTADDRESS$
        }

[root@test01 ~]# vi /usr/local/nagios/etc/objects/localhost.cfg

define service{
        use                             generic-service
        host_name                       localhost
        service_description             SSH
        check_command                   check_ssh!2
        } 

また、SSHサービスの監視を行なうことも出来ます。
「check_ssh!2」とは2秒間SSH接続が出来なかった場合に警告があがります。

今日はリモートのリソースをnagiosで監視する手順です。
nrpeというプラグインを監視サーバとクライアントの双方にインストールします。

・サーバ側

[root@test01 ~]# rpm -qa | grep openssl-devel
openssl-devel-0.9.8e-22.el5_8.4

opensslがインストールされていることを確認します。

[root@test01 ~]# cd /usr/local/src/
[root@test01 src]# wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz/download

[root@test01 src]# tar zxf nrpe-2.15.tar.gz
[root@test01 src]# cd nrpe-2.15

[root@test01 nrpe-2.15]# ./configure
[root@test01 nrpe-2.15]# make
[root@test01 nrpe-2.15]# make install 

nrpeのプラグインをダウンロードしてきて、解凍、コンパイル、インストールを行ないます。

[root@test01 nrpe-2.15]# ls /usr/local/nagios/libexec/check_nrpe
/usr/local/nagios/libexec/check_nrpe

無事、プラグインがサーバ側にインストールされました。

・クライアント側

[root@localhost ~]# rpm -qa | grep openssl-devel
openssl-devel-1.0.0-20.el6.x86_64

同じようにopensslがインストールされていることをクライアント側でも確認します。

[root@localhost ~]# useradd -d /usr/local/naios/ -M nagios
[root@localhost ~]# mkdir /usr/local/nagios
[root@localhost ~]# chown nagios:nagios /usr/local/nagios/

nagios用のユーザー、グループ、パスを作成します。

[root@localhost src]# wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz/download
[root@localhost src]# tar xvf nrpe-2.15.tar.gz
[root@localhost src]# cd nrpe-2.15
[root@localhost nrpe-2.15]# ./configure
[root@localhost nrpe-2.15]# make nrpe
[root@localhost nrpe-2.15]# make install-daemon
[root@localhost nrpe-2.15]# make install-daemon-config

nrpeのダウンロード、解凍、コンパイル、インストールを行ないます。

[root@localhost src]# wget http://www.nagios-plugins.org/download/nagios-plugins-2.0.2.tar.gz
[root@localhost src]# tar zxvf nagios-plugins-2.0.2.tar.gz
[root@localhost src]# cd nagios-plugins-2.0.2
[root@localhost nagios-plugins-2.0.2]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[root@localhost nagios-plugins-2.0.2]# make
[root@localhost nagios-plugins-2.0.2]# make install

同じようにnagios-pluginもダウンロード、解凍、コンパイル、インストールを行ないます。

[root@localhost nagios-plugins-2.0.2]# vi /usr/local/nagios/etc/nrpe.cfg

allowed_hosts=127.0.0.1,172.17.9.104 

nrpeのコンフィグファイルを開き、許可ホストに監視サーバを追加します。

[root@localhost ~]# cp /usr/local/src/nrpe-2.15/init-script /etc/rc.d/init.d/nrpe
[root@localhost ~]# chmod 755 /etc/rc.d/init.d/nrpe
[root@localhost ~]# chkconfig --add nrpe
[root@localhost ~]# chkconfig nrpe on
[root@localhost ~]# chkconfig --list nrpe
[root@localhost ~]# service nrpe start
Starting nrpe:                                             [  OK  ]

サービス起動スクリプトを解凍フォルダからコピーして、起動時のサービスとして登録します。

[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
                       12G  2.3G  8.6G  22% /
tmpfs                1004M     0 1004M   0% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot

今回はディスクスペース監視を行なってみたいので、dfでデバイス名を確認します。

[root@localhost ~]# vi /usr/local/nagios/etc/nrpe.cfg

command[check_root]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/mapper/VolGroup-lv_root

nrpeのcfgファイルを開き、ディスクスペースの監視コマンドを登録します。
このコマンドをサーバ側から呼び出します。

・サーバ側

[root@test01 ~]# vi /usr/local/nagios/etc/objects/commands.cfg

define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

[root@test01 ~]# vi /usr/local/nagios/etc/servers/redhat.cfg

define service{
        use                     local-service
        host_name               redhat
        service_description     Disk check root
        check_command           check_nrpe!check_root
        }

サーバ側に戻り、クライアント側で作成したコマンドを呼び出すコマンドの定義、およびに監視項目の追加を行ないます。

[root@test01 ~]# service nagios restart
Running configuration check...
Stopping nagios: done.
Starting nagios: done.

サービスを再起動し、設定を有効にします。

1

nagiosのWEB画面を開き、監視項目が追加されていることを確認します。 

今回は、ローカルホスト(nagiosのインストールされているホスト)に対してリソース監視を行なう手順に対して確認します。
対象となるリソースはメモリです。
メモリの監視を行なうプラグインはcheck_memですが、なぜか標準でインストールされていません。
下記のgithubからダウンロードできます。

https://github.com/justintime/nagios-plugins/blob/master/check_mem/check_mem.pl 

「raw」って書かれているボタンから右クリックして、「名前を付けて保存」を選択します。

[root@test01 ~]# cp check_mem.pl /usr/local/nagios/libexec/
[root@test01 ~]# chmod a+x /usr/local/nagios/libexec/check_mem.pl

ダウンロードしたプラグインをlibexexフォルダにコピーして、実行権を与えます。

[root@test01 ~]# vi /usr/local/nagios/etc/objects/commands.cfg

define command{
        command_name    check_mem
        command_line    $USER1$/check_mem.pl -f -w $ARG1$ -c $ARG2$
        } 

commands.cfgでコマンドを定義します。
ここで定義したコマンドを監視項目設定で利用できます。

[root@test01 ~]# vi /usr/local/nagios/etc/objects/localhost.cfg

define service{
        use                             generic-service
        host_name                       localhost
        service_description             Memory Free
        check_command                   check_mem!20!10
        } 

check_memコマンドを利用した監視をローカルホストの監視項目に追加します。
「check_mem!20!10」はメモリ使用率20%以下でwarning、10%以下でcriticalという意味です。

[root@test01 ~]# service nagios restart
Running configuration check...
Stopping nagios: .done.
Starting nagios: done.

サービスを再起動し、設定を有効にします。

1

localhostに監視項目、Memory Freeが追加されました。 

nagiosのインストールが完了したので、早速監視ホストを追加してみます。

[root@test01 ~]# vi /usr/local/nagios/etc/nagios.cfg

cfg_dir=/usr/local/nagios/etc/servers →コメントアウトを解除する
#cfg_dir=/usr/local/nagios/etc/printers
#cfg_dir=/usr/local/nagios/etc/switches
#cfg_dir=/usr/local/nagios/etc/routers 

監視対象がサーバの場合はnagiosの設定ファイルを開き、 「#cfg_dir=/usr/local/nagios/etc/servers」となっている行のコメントアウトを解除します。
これで、 /usr/local/nagios/etc/servers直下にある設定ファイルが対象とするホストを監視します。

[root@test01 ~]# mkdir /usr/local/nagios/etc/servers
[root@test01 ~]# vi /usr/local/nagios/etc/servers/redhat.cfg

define host{
        use                     linux-server
        host_name               redhat
        alias                   redhat
        address                 172.17.9.102
        }

define service{
        use                     generic-service
        host_name               redhat
        service_description     PING
        check_command           check_ping!100.0,20%!500.0,60%
        } 

/usr/local/nagios/etc/にserversというフォルダを作り、そこに監視ホストの設定ファイルを配置します。
define host項で監視ホストの設定を行ない、define service項で監視ホストに対するping監視の設定を行なっています。
それぞれの項にあるuseはテンプレート名を指定しています。
nagiosはテンプレートを利用することによって、監視設定の簡略化を図っています。
テンプレートは/usr/local/nagios/etc/objects/templates.cfgに記載があります。

また、define service項に記載のあるcheck_commandでは利用するプラグインの設定を記載しています。
「check_ping!100.0,20%!500.0,60%」とは100msecか20%のパケットロスでwarning、500msecか60%のパケットロスでcriticalという意味です。

[root@test01 ~]# service nagios restart
Running configuration check...
Stopping nagios: .done.
Starting nagios: done.

nagiosサービスを再起動し、監視ホストの設定を有効化します。

 1

nagiosのwebuiにログインし、ホストリンクをクリックするとlocalhost以外に監視設定したホストが追加されているのがわかります。

2

さらにリンク先をクリックすると監視ホストをクリックすると詳細が表示されます。

3

監視ホストをシャットダウンさせたときの状況です。
ホストの状態が停止(down)になり赤色表示になっていることがわかります。 

引き続きNagiosのインストールです。
apache2.2系と2.4系の違いなのでしょうか?
ちょっと悩みました。
 
[root@test01 ~]# /usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 

nagios管理者ユーザーを作成します。
2回パスワードを聞かれるので、入力します。

[root@test01 ~]# cat /usr/local/apache/conf.d/nagios.conf

   AuthUserFile /usr/local/nagios/etc/htpasswd.users

ここで作成したユーザー設定ファイルはapacheのディレクトリに作成したnagiosの設定ファイルから読み込まれています。

[root@test01 ~]# chkconfig --add nagios
[root@test01 ~]# chkconfig --list nagios
nagios          0:off   1:off   2:off   3:on    4:on    5:on    6:off

続いてnagiosのサービス登録を行ないます。
起動用スクリプトはmake時にインストールされています。
 
[root@test01 ~]# service nagios start
Starting nagios: done.
[root@test01 ~]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

さて、これで一通りのインストール、設定が完了したのでnagiosを起動
apacheの設定も変更したので、同じようにapacheも再起動します。

早速、http://(IPアドレス)/nagios/にアクセスします。
あれ、cgiのリンクにアクセスするも、なぜかダウンロード画面・・・
ちゃんとマニュアル通りにインストールしたはずなのに・・・
これで、一日悩みましたが、apache側の設定の用です。
以下の通り、設定ファイルのコメントアウトを解除する必要がありました。

[root@test01 ~]# less /usr/local/apache/conf/httpd.conf

 LoadModule cgid_module modules/mod_cgid.so →cgi用のモジュールを読み込む設定
 
 AddHandler cgi-script .cgi →.cgiとcgiモジュールを紐付ける設定

設定変更後、サービスを再起動

今度はちゃんとcgiのリンク先にアクセスできました。 

1

2
 

このページのトップヘ