Nagios之配置事件處理



       所謂的事件處理也就是讓nagios更加聰明一點,當出現某些事件時能夠做些其他事情,而不是隻會報警。例如,當nagios檢測到apache服務掛掉的時候,不是立即發報警,先嚐試重啓apache服務,當重啓後還檢測不成功時才發報警,下面就以apache服務爲例:

前提條件:
    主配置文件/usr/local/nagios/etc/nagios.cfg中 enable_event_handlers=1 此選項爲事件處理的總開關
    服務或主機的配置文件中 event_handler_enabled 的值爲1


1、配置監控能夠通過公鑰認證不需要密碼登錄被監控端
在監控端配置:
su nagios
ssh-keygen -t rsa
exit
scp /home/nagios/.ssh/id_rsa.pub [email protected]:/root

在被監控端配置:
mkdir /home/nagios/.ssh
cat id_rsa.pub > /home/nagios/.ssh/authorized_keys
chown -R nagios.nagios /home/nagios/.ssh/
chmod 700 /home/nagios/.ssh/
chmod 600 /home/nagios/.ssh/authorized_keys

在監控端測試:
su nagios
ssh [email protected]

2、在被監控端上編寫用於執行的事件腳本
mkdir /usr/local/nagios/libexec/eventhandlers
vim /usr/local/nagios/libexec/eventhandlers/restart-httpd  ==> 腳本內容如下

#!/bin/bash
# Event handler script for restarting the web server on the local machine
case "$1" in
OK)
        ;;
WARNING)
        ;;
UNKNOWN)
        ;;
CRITICAL)
        case "$2" in
        SOFT)
                case "$3" in
                3)
                        echo -n "Restarting HTTP service (3rd soft critical state)..."
                        sudo /etc/rc.d/init.d/httpd restart
                        ;;
                        esac
                ;;
        HARD)
                echo -n "Restarting HTTP service..."
                sudo /etc/rc.d/init.d/httpd restart
                ;;
        esac
        ;;
esac
exit 0

說明:該腳本會在服務狀態檢測三次處於CRITICAL的軟狀態之後執行重啓httpd服務,在服務首次進入硬CRITICAL狀態後執行一次重啓httpd服務。

3、在被監控端配置sudo,使nagios可以以root身份執行httpd服務的restart操作
安裝sudo軟件包
yum install sudo

配置sudo可以無需密碼運行腳本
vim /etc/sudoer  ==>   修改並添加如下

#Defaults    requiretty      #註釋掉該行
nagios  ALL=(root)      NOPASSWD:/usr/local/nagios/libexec/eventhandlers/restart-httpd    #添加該行

測試是否可以無密碼執行
su nagios
sudo /usr/local/nagios/libexec/eventhandlers/restart-httpd CRITICAL HARD

4、在監控端添加restart-httpd命令
vim /usr/local/nagios/etc/objects/commands.cfg  ==>  添加如下行

define command{
        command_name    restart-httpd
        command_line    /usr/bin/ssh nagios@$HOSTADDRESS$ "sudo /usr/local/nagios/libexec/eventhandlers/restart-httpd $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$"
        }

5、在監控端的服務定義中使用此命令
vim /usr/local/nagios/etc/objects/web.cfg    ==>  修改爲如下

define service{
        use                             cihi-service       
        hostgroup_name                  web
        service_description             HTTP
        check_command                   check_http!-u /.heartbeat.html -t 5 -s "ok"
        event_handler                   restart-httpd         #這個是新增加的內容
        }
 
問題總結:配置過程並不複雜,但很容易出現腳本不會執行的問題,可以嘗試在監控端切換到nagios,通過ssh連接到被監控端執行sudo /usr/local/nagios/libexec/eventhandlers/restart-httpd  CRITICAL HARD 看能否成功執行重啓apache的操作,只要這樣可以成功基本上就沒什麼問題了,有了這樣一個例子就可以自己擴展了,腳本內容可以根據自己需要寫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章