Nagios是經常使用的系統監控工具,提供了不少基本服務的監控腳本,如HTTP,MYSQL等,同時具備不錯的可擴展性,本身可定製針對特定參數的監控腳本以及報警的方式。但Nagios的配置至關複雜,本文總結了我最近在Ubuntu Server上搭建Nagios的過程,以方便你們未來更加快速的安裝搭建監控系統。mysql
sudo apt-get install apache2 nagios3 nagios-nrpe-plugin
sudo apt-get install nagios3-doc
sudo apt-get install nagios-nrpe-server
無論是nagios server仍是被監控機器,默認的監控腳本配置會安裝在/etc/nagios-plugin/config下,監控腳本都在/usr/lib/nagios/plugins下。
define command{ command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/sendEmail -f <from@xxx.xx> -t <to@xxx.xx> -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -s <SMTP_SERVER> -xu <EMAIL_USER_NAME> -xp <EMAIL_USER_PASSWORD> }
# this command runs a program $ARG1$ with arguments $ARG2$ define command { command_name check_nrpe command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ } # this command runs a program $ARG1$ with no arguments define command { command_name check_nrpe_1arg command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
分別配置了帶一個參數和帶兩個參數的nrpe命令,command name是check_nrpe_1arg的命令帶一個參數,command name是check_nrpe的帶兩個參數。好比我配置的腳本想查看目標機上的load,command line就需配置成check_nrpe_1arg!check_load,該命令會調用nrpe server上的check_load命令。
/usr/lib/nagios/plugins/check_http --help
可輸出check_http的使用說明。
define service { hostgroup_name http-servers
service_description HTTP check_command check_http use generic-service notification_interval 0 ; set > 0 if you want to be renotified }
比較合理的配置方法是,在service_nagios2.cfg裏爲每類server配置service,而後在hosts.cfg和hostgroup_nagios2.cfg,配置相應的server和該server的類別。這樣,在server地址或server上的服務發生變化的狀況下,只須要修改host.cfg和hostgroup_nagios2.cfg便可。
#server_address=127.0.0.1
默認是隻有本機才能訪問,多IP地址的狀況下也不知道用的哪一個IP,一般狀況下會配成內網的地址;
allowed_hosts=127.0.0.1
允許訪問nrpe的機器,多個主機用','分隔,注意不要留空格,「127.0.0.1, 192.168.1.12」是不工做的,必須是"127.0.0.1,192.168.1.12";
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
這樣在nagios server上可經過/usr/lib/nagios/plugins/check_nrpe -H <被監控機器> -c check_load來調用被監控機上的check_load;又參見/etc/nagios-plugin/config/check_nrpe.cfg,須要配置的command line應爲check_nrpe_1arg!check_load。我就是在這裏寫成了check_nrpe!check_load致使服務unknown的。
rm /var/cache/nagios3/*