zabbix分布式监控系统安装部署
官方网站链接 https://www.zabbix.com/documentation/2.0/manual/installation
安装环境说明
参考地址 http://mayulin.blog.51cto.com/1628315/514371
虚拟机两台 zabbix_server 192.168.50.141
zabbix_agentd 192.168.50.139
os:CentOS 6.3 x64
软件: zabbix-2.0.6
需求软件:httpd httpd-manual php php-bcmath php-gd php-mbstring php-xml mysql-server mysql php-mysql gcc-c++ gcc net-snmp net-snmp-devel net-snmp-utils curl curl-devel mysql-devel OpenIPMI-devel fping lrzsz
安装部署
用yum命令安装需求软件
yum install -y httpd httpd-manual php php-bcmath php-gd php-mbstring php-xml mysql-server mysql php-mysql gcc-c++ gcc net-snmp net-snmp-devel net-snmp-utils curl curl-devel mysql-devel OpenIPMI-devel lrzsz lynx
下载zabbix-2.0.6源码包:
#wget “zabbix的下载地址 (www.zabbix.com)”
#tar xzvf zabbix-2.0.6.tar.gz
启动apache服务
#service httpd start
#启动mysql服务
#service mysqld start
#设置MySQL开机自动启动
#chkconfig --level 35 mysqld on
#设置apache开机自动启动
#chkconfig --level 35 httpd on
#设置 MySQL root 密码
#mysqladmin -uroot -p password 59222999 #密码可以复杂点
#Enter password: #这里直接回车
#创建 zabbix 用户设置密码
#useradd zabbix
#passwd zabbix
#初始化mysql数据库
#mysql -uroot -p59222999 -e "create database zabbix character set utf8;"
#mysql -uroot -p59222999 -e "grant all privileges on zabbix.* to zabbix@localhost identified by '59222999';"
#mysql -uzabbix -pzabbix -D zabbix < zabbix-2.0.5/database/mysql/schema.sql #.sql在zabbix源码包里
#mysql -uzabbix -pzabbix -D zabbix < zabbix-2.0.5/database/mysql/images.sql #.sql在zabbix源码包里
#mysql -uzabbix -pzabbix -D zabbix < zabbix-2.0.5/database/mysql/data.sql #.sql在zabbix源码包里
编译安装
#mkdir /usr/local/zabbix
#cd zabbix-2.0.5
#./configure --prefix=/usr/local/zabbix --enable-server --with-mysql --with-net-snmp --with-libcurl --enable-agent --with-openipmi --enable-proxy
#make
#make install
安装 fping #zabbix使用fping替代了ping作为icmp的工具。从 http://www.oschina.net/上搜索下载
#wget http://www.fping.org/dist/fping-3.5.tar.gz
#./configure
#make install
#chomd u+s /usr/local/sbin/fping
修改数据库配置文件
#vi /usr/local/etc/zabbix_server.conf
修改:
DBUser=zabbix
DBPasswrod=59222999
FpingLocation=/usr/local/sbin/fping
#这里用root的用户名和密码也行
启动服务
#/usr/local/zabbix/sbin/zabbix-agentd start
#/usr/local/zabbix/sbin/zabbix-server start
#ps aux | grep zabbix #看zabbix有没有启动
复制网站代码文件
#cp -R zabbix-2.0.5/frontends/php/* /var/www/html/ #/var/www/html/是apache网页文件存放目录可修改
配置PHP
#vi /etc/php.ini #修改如下内容
memory_limit = 256M
date.timezone = Asia/Shanghai
post_max_size = 32M
max_execution_time = 600
upload_max_filesize = 16M
max_input_time = 600 # max_input_time这选项有2个,要修改前面没‘;’的
重启apache服务
#/etc/rc.d/init.d/httpd restart
用zabbix用户登录,打开网页安装向导
地址:http://192.168.50.141/"
账号:Admin
密码:zabbix
nagios分布式监控系统安装部署
系统环境及软件需求
操作系统: centos6.4 x64
监控软件: nagios-3.5.0.tar.gz,nagios-plugins-1.4.15.tar.gz,nrpe-2.13.tar.gz,nsca-2.7.2.tar.gz
nagios-node.tar.gz(客户端安装包自定制)
分布式结构图:
中心服务器与分布服务器的对比
中心服务器:
目标是从一个或多个分布式服务器收集服务检测结果。虽然中心服务器偶尔也会做些自主检测,但自主检测更多只是在极端情况下才做的,
因而可以说中心服务器当前只做强制检测。既然中心服务器从一台或多台分布服务器收集强制服务检测结果,
那它就承担全部监控逻辑的整体输出工作(如送出通知、运行事件处理脚本、判定主机状态、安装并提供Web接口等).
分布服务器:
功能是真正地完成你所划分出一”组”主机的检测工作。这里的”组”定义是松散的-完成基于你的网络情况而自然形成的。
在一个物理位置里可能会有若干个” 组”,这取决于你的网络层次划分,要么因为WAN而划分开,要么因个自独立的防火墙而划分开。
很重要的一点是,在每个”组”里都只有一个运行Nagios 的服务器并完成对该”组”的监控检测工作。
分布服务器通常上面只安装有Nagios,它不需要安装Web接口,如果不想让它来做也可以不送出通知、
运行事件处理脚本或是执行任何其他服务检测
分布服务器如何收集服务检测信息
利用nsca外部构建完成从远程主机提交强制检测结果。该外部构件包括两部分,第一部分是客户端程序(send_nsca),
运行于远程主机上并负责将强制检测结果送到指定的服务器上去,另一部分是NSCA守护进程(nsca),
它既可以独立地运行于守护服务也可以注册到inetd里作为一个inetd客户程序来提供监听联接。
从客户端收到服务检测结果信息之后,守护进程将结果提交给在中心服务器的Nagios,方式是通过在外部命令文件里插入一条PROCESS_SVC_CHECK_RESULT命令,之后跟上检测结果。
在Nagios下一次处理外部命令时将会找到这条由分布式服务器送来的强制检测信息并处理它
nagios监控中心服务器部署
nagios及插件nagios-plugin部署过程参考nagios
这里主要写nsca的部署要点
下载并安装nsca:
#wget http://nchc.dl.sourceforge.net/project/nagios/nsca-2.x/nsca-2.7.2/nsca-2.7.2.tar.gz
#tar zxf nsca-2.7.2.tar.gz
#cd nsca-2.7.2
#./configure
#make all
nsca安装检查:
1)、会在src目录下生成两个程序 nsca send_nsca(主程序)
2)、sample-config中会有nsca.cfg与send_nsca.cfg(配置文件)
3)、当前目录下会有一个init-script(启动脚本)
拷贝配置文件到相关目录:
#cp src/nsca /usr/local/nagios/bin/ 复制主程序
#cp sample-config/nsca.cfg /usr/local/nagios/etc 复制主配置文件
#chown nagios.nagios /usr/local/nagios/bin/nsca 修改属组属主
#chown nagios.nagios /usr/local/nagios/etc/nsca.cfg
#cp init-script /etc/init.d/nscad
#chmod a+x /etc/init.d/nsca
#chkconfig --add nsca
修改nsca的配置文件
#vim /usr/local/nagios/etc/nsca.cfg
server_address=192.168.199.183 (这里务必使用对外表现的IP)
debug=1 (debug选项即log选项,写入message)
aggregate_writes=1 (能够支持更大的监控量,建议开启)
max_packet_age=120 (数据包过期时间,默认30s,但是考虑到网络因素建议设为60s)
password=skstserver #切记: 此处和后续分布式监控服务器密码要一样才行.
配置nagios.cfg主配置文件
#vim /usr/local/nagios/etc/nagios.cfg
check_external_commands=1 # 配置nagios检查扩展命令
accept_passive_service_checks=1 # 配置接受被动服务检测的结果
accept_passive_host_checks=1 #配置接受被动主机检测的结果
启动nagios和nsca服务
/etc/init.d/nagios restart
/etc/init.d/nscad start
nagios分节点服务部署
安装Nagios,可以不安装Web接口,安装过程同样参考nagios
安装分节点send_nsca服务
#wget http://nchc.dl.sourceforge.net/project/nagios/nsca-2.x/nsca-2.9.1/nsca-2.9.1.tar.gz
#tar zxf nsca-2.9.1.tar.gz
#cd nsca-2.9.1
#./configure && make all
# cp src/send_nsca /usr/local/nagios/bin/ 复制命令
# cp sample-config/send_nsca.cfg /usr/local/nagios/etc/ 复制配置文件
# chown nagios.nagios /usr/local/nagios/ -R 修改属组属主
# vim /usr/local/nagios/etc/send_nsca.cfg
password=skstserver 此处和中心服务器密码一致
添加分节点 主机和服务监控脚本,并配置相关配置文件
配置监测主机脚本
vim /usr/local/nagios/libexec/submit_host_check_result
#!/bin/bash
return_code=-1
case "$2" in
UP)
return_code=0
;;
DOWN)
return_code=1
;;
UNREACHABLE)
return_code=2
;;
esac
# Test everything works fine
/usr/bin/printf "%s\t%s\t%s\n" "$1" "$return_code" "$3" | /usr/local/nagios/bin/send_nsca -H 210.14.140.210 -c /usr/local/nagios/etc/send_nsca.cfg
配置监测服务脚本
vim /usr/local/nagios/libexec/submit_check_result
#!/bin/sh
# Arguments:
# $1 = host_name (Short name of host that the service is
# associated with)
# $2 = svc_description (Description of the service)
# $3 = state_string (A string representing the status of
# the given service - "OK", "WARNING", "CRITICAL"
# or "UNKNOWN")
# $4 = plugin_output (A text string that should be used
# as the plugin output for the service checks)
#
# Convert the state string to the corresponding return code
return_code=-1
case "$3" in
OK)
return_code=0
;;
WARNING)
return_code=1
;;
CRITICAL)
return_code=2
;;
UNKNOWN)
return_code=-1
;;
esac
# pipe the service check info into the send_nsca program, which
# in turn transmits the data to the nsca daemon on the central
# monitoring server
/usr/bin/printf "%s\t%s\t%s\t%s\n" "$1" "$2" "$return_code" "$4" | /usr/local/nagios/bin/send_nsca -H 210.14.140.210 -c /usr/local/nagios/etc/send_nsca.cfg
nagios.cfg主配置文件中修改如下:
vim /usr/local/nagios/etc/nagios.cfg
obsess_over_services=1
ocsp_command=submit_check_result
obsess_over_hosts=1
ochp_command=submit_host_check_result
配置command.cfg 定义服务和主机监控命令,
define command{
command_name submit_check_result
command_line /usr/local/nagios/libexec/submit_check_result $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATE$ "$SERVICEOUTPUT$ |$SERVICEPERFDATA$"
}
define command {
command_name submit_host_check_result
command_line /usr/local/nagios/libexec/submit_host_check_result $HOSTNAME$ $HOSTSTATE$ '$HOSTOUTPUT$'
}
自定义配置host和server 监控配置文件。参考 nagios
特别注意:所有分节点上配置的主机服务监控配置文件,在监控中心服务器上也需要有一份
重启分节点nagios服务
#/etc/init.d/nagios restart
nagios客户端部署
下载客户端安装包(为了安装方便自定义),并执行脚本安装
#cd /usr/local/src/
#wget http://210.14.140.210/nagios-node.tar.gz
#tar zxvf nagios-node.tar.gz
#cd nagios-node
#cp -a nagios-cleint /usr/local/nagios
#cd /usr/local/nagios
#vim /usrl/local/nagios/etc/nrpe.cfg 添加配置客户端基础监控
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 2 -c 5 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 90 -c 80
command[check_users]=/usr/local/nagios/libexec/check_users -w 3 -c 5
command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_load]=/usr/local/nagios/libexec/check_load -w 6,8,10 -c 14,20,24
command[check_iostats]=/usr/local/nagios/libexec/check_iostats -w 200 -c 300
command[check_cpu]=/usr/local/nagios/libexec/check_cpu.sh -w $ARG1$ -c $ARG2$ -s $ARG3$ --all
command[check_mem]=/usr/local/nagios/libexec/check_mem.sh -w 75 -W 25 -c 95 -C 75
#yum install perl-Nagios-Plugin perl-Regexp-Common perl-Regexp-Common-net-CIDR -y 安装perl环境,以支持./check_iostats脚本使用
#./nagios-manager.sh start
部署过程中注意事项
客户端部署注意安装perl环境,以支持一些监控脚本,
#ls /etc/yum.repos.d/ 目录下需要有 rpmforge.repo 下载源,
#yum install perl-Nagios-Plugin perl-Regexp-Common perl-Regexp-Common-net-CIDR -y
发送测试数据
echo "localhost;NSCA;0;testOK"|./send_nsca -H 127.0.0.1 -d ";" -c /root/send_nsca.cfg
测试数据说明:
通过管道将数据传给send_nsca程序,send nsca再将数据发送到nsca服务,其中localhost是nsca监听的主机名,
NSCA是Nagios中定义的被动监测服务的名字,0告诉nsca正常,testOK是附加信息
-H 127.0.0.1是数据发往的目的地,即nagios监控机;
-d ‘;’是数据的分隔符,默认是[TAB];
-c /root/send_nsca.cfg是send_nsca这个发送程序的配置文件。
监控中心服务器重启服务注意:每次重启完nagios都需要重启一下nscad服务 /etc/init.d/nagios restart;/etc/init.d/nscad restart
nagios check_jmx4perl tomcat应用部署
下载安装check_jmx4perl
#wget http://search.cpan.org/CPAN/authors/id/R/RO/ROLAND/jmx4perl-1.07.tar.gz
#tar zxvf jmx4perl-1.07.tar.gz
#cd jmx4perl-1.07
#perl Build.PL
#yum -y install perl-CPAN
#perl -MCPAN -eshell
> install Module::Build
>quit
#./Build installdeps
#./Build
#./Build test
#./Build install
下载安装jolokia.war 部署到tomcat项目目录下
nagios tomcat
server.xml配置
nagios服务器hosts解析
nagios check memcache
下载安装check_memcached
http://search.cpan.org/CPAN/authors/id/Z/ZI/ZIGOROU/Nagios-Plugins-Memcached-0.02.tar.gz
tar zxvf Nagios-Plugins-Memcached-0.02.tar.gz
cd Nagios-Plugins-Memcached-0.02
perl Makefile.PL 执行后,一路回车,
make
make install
执行完成,check_memcached会默认安装在/usr/bin/check_memcached
cp /usr/bin/check_memcached /usr/local/nagios/libexec/
chown nagios.nagios /usr/local/nagios/libexec/
chmod 755 /usr/local/nagios/libexec/check_memcached
check_memcached在nagios服务上部署
vim /usr/local/nagios/etc/objects/command.cfg
下面是监控memcache 主机10100端口占用内存的比例,
define command {
command_name check_memcached_Scale_10100
command_line /usr/local/nagios/libexec/check_memcached -H $HOSTADDRESS$:10100 --size-warning $ARG1$ --size-critical $ARG2$
}
下面是监控memcache 主机10100端口响应状况,
define command {
command_name check_memcached_response_10100
command_line /usr/local/nagios/libexec/check_memcached -H $HOSTADDRESS$:10100 -w $ARG1$ -c $ARG2$
}
示例,要监控199.33memcache服务器 ,服务配置文件中如下:
define service {
use centos-service,srv-pnp
host_name beijing-memcache-199.33
service_description check_199.33-10100-memcached-scale
check_command check_memcached_Scale_10100!80!90
normal_check_interval 2
contact_groups ops
notifications_enabled 0
}
define service {
use centos-service,srv-pnp
host_name beijing-memcache-199.33
service_description check_199.33-10100-memcached-response
check_command check_memcached_response_10100!300!500
normal_check_interval 2
contact_groups ops
notifications_enabled 0
}
nagios check mysql
安装check_mysql插件到nagios,并部署mysql监控
编译安装nagios-plugins-1.4.15.tar.gz版本插件,中带用check_mysql插件
vim /usr/local/nagios/etc/objects/command.cfg 打开配置文件,配置如下“
define command{
command_name check_mysql
command_line $USER1$/check_mysql -u $ARG1$ -p $ARG2$ -P $ARG3$ -H $ARG4$
}
服务配置示例:
define service {
use centos-service,srv-pnp
host_name beijing_db_199.59
service_description checkMysql_199_59_5901
check_command check_mysql!monitor!skstserver2012!5901!192.168.199.59
normal_check_interval 2
contact_groups ops
notifications_enabled 0
}
nagios check mfs
nagios check nginx
nagios pnp4nagios nagiosgrahp安装配置
pnp4nagios安装配置
安装pnp4nagios依懒包
yum install php php-pear perl-DBI rrdtool perl-Time-HiRes -y
下载安装pnp4nagios
wget http://sourceforge.net/projects/pnp4nagios/files/PNP-0.6/pnp4nagios-0.6.15.tar.gz/download
cd pnp4nagios-0.6.15
./configure && make && make install&& make install-init && make install-config && make install-webconf
cd /usr/local/pnp4nagios/etc/
cp misccommands.cfg-sample misccommands.cfg
cp nagios.cfg-sample nagios.cfg
cp rra.cfg-sample rra.cfg
cd pages
cp web_traffic.cfg-sample web_traffic.cfg
cd check_command
cp check_all_local_disks.cfg-sample check_all_local_disks.cfg
cp check_nrpe.cfg-sample check_nrpe.cfg
cp check_nwstat.cfg-sample check_nwstat.cfg
配置nagios和pnp4nagios整合
vim /usr/local/nagios/etc/nagios.cfg
enable_environment_macros=1
process_performance_data=1 //开启收集perfdata(默认是关闭的)
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
配置command.cfg
#process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}
#process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl
}
配置图形模板
define host {
name host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
register 0
}
主机pnp图形示例
define host{
use centos-host,host-pnp
host_name beijing_followaip_199.195
alias beijing_followaip_199.195
address 192.168.199.195
contact_groups ops
}
服务pnp图形配置示例:
define service{
use centos-service,srv-pnp
host_name beijing_followaip_199.195
service_description CheckNginx80
check_command check_tcp!80
normal_check_interval 2
contact_groups ops
notifications_enabled 1
}
nagiosgraph 安装配置
基本环境:
/etc/yum.repos.d/目录下需要 rpmforge.repo下载源
yum install perl-GD rrdtool perl-rrdtool -y
安装nagiosgraph
tar xvf nagiosgraph-1.4.4.tar.gz -C /usr/local/src/
cd nagiosgraph-1.4.4
安装前检测环境
perl install.pl --check-prereq
checking required PERL modules
Carp...1.04
CGI...3.15
Data::Dumper\...2.121_08
File::Basename...2.74
File::Find...1.10
MIME::Base64...3.07
POSIX...1.09
RRDs...1.4004
Time::HiRes...1.9717
checking optional PERL modules
GD...2.45
checking nagios installation
found nagios at /usr/local/nagios/bin/nagios
checking web server installation
found apache at /usr/sbin/httpd
perl install.pl # 运行安装脚本之后,一路回车即可
把nagiosgraph配置加进httpd
# enable nagiosgraph CGI scripts
ScriptAlias /nagiosgraph/cgi-bin "/usr/local/nagiosgraph/cgi"
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# enable nagiosgraph CSS and JavaScript
Alias /nagiosgraph "/usr/local/nagiosgraph/share"
Options None
AllowOverride None
Order allow,deny
Allow from all
配置nagios.cfg 整合nagiosgraph
vim /usr/local/nagios/etc/nagios.cfg
# process nagios performance data using nagiosgraph
process_performance_data=1
service_perfdata_file=/tmp/perfdata.log
service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph
vim /usr/local/nagios/etc/objects/commands.cfg
# command to process nagios performance data for nagiosgraph
define command {
command_name process-service-perfdata-for-nagiosgraph
command_line /usr/local/nagiosgraph/bin/insert.pl
}
# 重启apache, nagios 即可
[root@node3 etc]# /etc/init.d/nagios restart
[root@node3 etc]# /etc/init.d/httpd restart
把nagiosgraph路径加到nagios系统内。
[root@node3 share]# vim /usr/local/nagios/share/side.php
# 这样就算全部完成了
nagios 告警间隔配置
/usr/local/nagios/etc/nagios.cfg:
interval_length 表示时间单位,默认为60,即1分钟
/usr/local/nagios/etc/objects/services.cfg:(新版本不存在这个文件)
normal_check_interval 表示重新检测的时间间隔,默认为3个时间单位
check_interval 与normal_check_interval的作用一样,只能在3.X中使用
retry_check_interval 重试时间
max_check_attempts 这个是出现故障的连接次数,达到这个次数之后就报警
关于max_check_attempts、normal_check_interval、retry_check_interval三个参数。
首先要说明两个概念,
一、软态:被监控项处于retry_check检测周期内的非正常状态;
二、硬态:被监控项达到max_check_attempts最大次数后的非正常状态;除此之外的状态,我们估且称之为“常态”。
我们试着看看设置如下参数时,Nagios是怎么做状态检测及告警的:
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
notification_interval 3
首先,Nagios每三分钟检测一次服务,当某次检测到服务状态为异常时,直接进入软态(1/3 soft state),此后,以每2分钟(retry_check_interval)的检测频率,再进行2次(一共进行3次检测,从而达到 max_check_attempts)检测,如果这两次检测服务都为异常,则直接进入硬态(hard state)。进入硬态后,Nagios以每3分钟(normal_check_interva)一次的频率检测服务,这与常态时是一样的;同时每3分钟(notification_interval)进行一次告警。
注意:修改这些参数后并不是即时生效。首先要重启nagios,然后等待下一次检测完成,nagios才会按新的参数计算检测时间与报警次数。
出现alert后,如果要发送email报警,需要满足以下条件:
service中有定义notifications_enabled=1,且此service的contacts有定义service_notification_commands。
service_notification_commands的command出自于commands.cfg,这里定义了使用什么命令发送邮件。
host的alert是一样的。
收不到邮件通常有以下几种可能:
邮件被拒收,检查mail的log可以看到。
nagios是否发送告警邮件,跟contact.cfg(或hosts.cfg)配置文件里的几个参数有关系。下面就着重讲义下这几个参数:
notifications_enabled:是否启用通知提醒功能。1为开启,0为禁用。显而易见,此选项值为0时,nagios肯定是不会发送邮件的。
contact_groups:定义接收通知提醒邮件的联系人群组。请确认你的邮件地址是否填写正确并在组中。
notification_interval:重复发送提醒邮件(信息)的最短间隔时间。默认间隔时间是60分钟。如果这个值被设为0,nagios将不会重复发送告警通知邮件,而是一次。 notification_period:定义发送告警通知的时间段。关键主机服务,设为7×24;一般主机服务,设为上班时间(WorkTime)。那么,如果定义的监控不在定义的告警时间段里,无论发生什么情况,nagios都不会发送告警通知邮件。
notification_options:定义被监控主机(对象)在何种情况下发送告警通知邮件,可选状态如下:
(1) w:WARNING,警告
(2) u:UNKNOWN,未知
(3) c:CRITICAL,危险(已达临界值)
(4) d:DOWN,已宕机
(5) r:RECOVERY,状态已恢复至OK
(6) f:FLAPPING,(未弄懂这个状态的意思,也许是状态波动很大)
(7) n:NONE,不发送告警通知邮件
nagios监控与报警时间间隔:
max_check_attempts:
check_interval:
retry interval:
notification_interval:
在OK状态,nagios用check_interval定义的时间间隔来监控,出现问题后,切换为retry_interval和max_check_attempts进行监控,达到max_check_attempts后触发首次报警,同时恢复为check_interval进行监控,并用notification_interval定义的时间间隔来发送报警,服务恢复后,在最近的check_interval点发送OK短信,完成报警周期。
特殊:
1.max_check_attempts定义为1,检测到问题后立即报警,不重试。
2.notification_interval定义为0,报警只发送一次,不重发。
巧用Escalations限制Nagios报警次数
Nagios是非常强大的一款监控工具,尤其是它的告警功能,现在网上实现的形式多种多样如结合移动139邮箱、Fetion、MSN等,但是如果服务器出现故障而未能及时的解决,Nagios就会不断的发送告警信息,实在令人头疼。现在用如下方法可以解决Nagios的告警次数问题。
vi escalations.cfg
escalations有自动调整;不断增加; 逐步上升等意思,本身配置文件的功能是当服务在某一告警次数前没有恢复,告警频率周期将会缩短,同时将告警信息发送至指定联系人。
其内容为:
define hostescalation{
host_name WWW-Server //被监控主机名称,与Hosts.cfg中一致
first_notification 4 // 第n条信息起,改变频率间隔
last_notification 0 // 第n条信息起,恢复频率间隔
notification_interval 30 // 通知间隔(分)
contact_groups sysadmin
}
说明:从第4条告警信息起至服务器恢复前,告警信息发送至sysadmin组下的联系人,告警间隔为30分钟1条信息。
define serviceescalation{
host_name WWW-Server //被监控主机名称,与Hosts.cfg中一致
service_description Check_HTTP,Check_Jetty //被监控服务名称,与Services.cfg中一致
first_notification 4
last_notification 0
notification_interval 30
contact_groups nt-admins,managers,everyone
}
保存
修改nagios.cfg
vi nagios.cfg
添加:
cfg_file=/etc/nagios/objects/escalations.cfg
检查nagios配置文件是否正确
/usr/sbin/nagios -v /etc/nagios/nagios.cfg
重新启动nagios服务:
service nagios restart
测试:
服务器启动后停掉被监控测试机的相应服务,确认告警信息是否按照设置发送至不同信箱
总结
escalations这个功能官方给的定义是notification的扩充,使notification变得更加灵活,方便。文中我使用的方法算是耍了个小聪明,将第四条告警信息后的所有信息全部发送至我公司邮箱直至服务器恢复(recovery的信息还是会发送至手机的),从而实现限制告警信息发送至手机的条数。这样,用Escalations限制Nagios报警次数的功能就成功实现了。
参考资料:
监控利器Nagios原理教程(即、Nagios怎样报警?)(适合新手阅读):http://blog.csdn.net/liu_jia_guo/article/details/8256775
用Escalations限制Nagios报警次数:http://hi.baidu.com/hanyanlovejoy/item/9013cbe36fa87ab12f140bff
nagios 配置详解 :http://blog.csdn.net/liu_jia_guo/article/details/8446240
巧用escalations限制Nagios报警次数:http://vincent-nan.blogbus.com/logs/36900981.html