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的操作,只要這樣可以成功基本上就沒什麼問題了,有了這樣一個例子就可以自己擴展了,腳本內容可以根據自己需要寫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.