nagios添加监控配置
nagios添加一个主机的一些经典定义,拿出来分享下。自己把这些配置写成shell,并用servlet+jsp自动生成shell,方便添加监控。目前监控项目已经有两千多个。
1: nagios添加主机监控配置如下:
define host{
use linux-server
host_name 192.168.1.1
address 192.168.1.1
}
可以定义成一个文件,然后把配置文件加入到nagios.cfg里面,脚本如下:
cat <<EOF >/usr/local/nagios/etc/objects/192.168.1.1.cfg
define host{
use linux-server
host_name 192.168.1.1
address 192.168.1.1
}
EOF
echo "cfg_file=/usr/local/nagios/etc/objects/192.168.1.1.cfg" >> /usr/local/nagios/etc/nagios.cfg
2: nagios添加简单的监控,比如ping,监控端口等等无需nrpe的配置:
define service{
use generic-service
host_name 192.168.1.1
service_description Check Port 80
check_command check_tcp!80
}
也可以写成脚本自动添加到主机的配置中,个人习惯一个主机中的所有监控项目在一个配置文件里面,好check。
cat <<EOF >>/usr/local/nagios/etc/objects/192.168.1.1.cfg
define service{
use generic-service
host_name 192.168.1.1
service_description Check Port 80
check_command check_tcp!80
}
EOF
3: nagios添加调用远程nrpe的配置,这个需要使用check_nrpe去调用,监控远程主机负载、磁盘情况等等。可以直接上脚本了,上面两个是举例,例子在脚本里面都有:
cat <<EOF >>/usr/local/nagios/etc/objects/192.168.1.1.cfg
define service{
use generic-service
host_name 192.168.1.1
service_description Load Average
check_command check_nrpe!check_load
}
EOF
4: 另外,nagios添加主机组的配置也是比较常见的,因为这个让人看监控情况看起来比较直观,也是直接上脚本了。比如你想定义一个web组,web组有两台主机分别是192.168.1.1和192.168.1.2,个人比较习惯一个组定义一个配置文件:
cat <<EOF >/usr/local/nagios/etc/objects/web.cfg
define hostgroup{
hostgroup_name web
alias web
members 192.168.1.1,192.168.1.2
}
EOF
echo "cfg_file=/usr/local/nagios/etc/objects/web.cfg" >>/usr/local/nagios/etc/nagios.cfg
5: nagios添加联系人也是非常常见的,配置如下,这个一般需求没那么多,都是直接修改contact.cfg配置文件。先定义联系人组,再定义联系人,定义联系人的时候得写一下邮箱:
define contactgroup{
contactgroup_name web
alias web
members web
}
define contact{
contact_name web
use generic-contact
alias web
email web@163.com,web@126.com
}
6: nagios定义时间顺便也说一下,这个我定义的不是很多,timeperiods.cfg,底下复制一个,想定义什么时间,可以自己定义一下:
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
7: 当然nagios定义发送邮件的命令也是比较重要的,看一下command的定义(如果是自己写的脚本,第一参数是标题,第二个参数是内容,第三个参数是给谁发送邮件。当然,想传再多的参数都可以,随意传,自定义):
define command{
command_name notify-host-by-email
command_line $USER1$/email.sh "Host Alert: $HOSTNAME$ is $HOSTSTATE$" "[nagios]<br>Notification Type: $NOTIFICATIONTYPE$<br>Host: $HOSTNAME$<br>State: $HOSTSTATE$<br>Address: $HOSTADDRESS$<br>Info: $HOSTOUTPUT$<br><br>Date/Time: $LONGDATETIME$<br>" "$CONTACTEMAIL$" "$HOSTALIAS$" "Host Alert: $HOSTNAME$ is $HOSTSTATE$"
}
8: nrpe的配置肯定也是要的,不然nagios运行起来不够漂亮,定义nrpe要两个地方,一个是安装nrpe(被监控端),需要配置两个:1: xxx.xxx.xxx.xxx改成nagios监控端的地址,当然,一直变的话,就比较难办了。2: check_load是以后nagios监控端要用check_nrpe去调用的,后面的程序要怎么调用由自己定义(自定义脚本监控就在这)。
allowed_hosts=xxx.xxx.xxx.xxx
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,15,15 -c 30,30,30
定义完nrpe被监控端只是个开始,后续还得增加nagios监控的配置。主要也是两个配置:1: check_nrpe命令的配置,只需要传一个参数,就是类似上面的check_load传给它就好了。2: 定义监控项目,只需要传个参数给check_nrpe就可以了。
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$
}
define service{
use generic-service
host_name 192.168.1.1
service_description Load Average
check_command check_nrpe!check_load
}
9: 最后,送两个配置nagios经常用的命令,nagioscheck和nagiosreload,一个是检查nagios的配置(这个也可以:/etc/init.d/nagios configtest),一个是重载nagios配置:
alias nagioscheck='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
alias nagiosreload='/etc/init.d/nagios reload'
nagioscheck一定要以下结果才标准
Total Warnings: 0
Total Errors: 0
还要什么配置,还要什么命令,留言找我要吧,可以汇总成一个总的nagios要配置的博客,呵呵,开玩笑的。。。