zoukankan      html  css  js  c++  java
  • 网站监控系统安装部署(zabbix,nagios)

    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	%s	%s
    " "$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	%s	%s	%s
    " "$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
    
  • 相关阅读:
    [置顶] 宏途_LCD调试流程.
    字典树的数据结构及基本算法的实现
    uva 10714 Ants(贪心)
    paip.输入法编程---增加码表类型
    chomp方法
    ios 限制输入长度
    我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)
    Android用户界面 UI组件--AdapterView及其子类(一) ListView及各种Adapter详解
    C#系列教程——switch定义及使用
    局域网内linux由ip反解析主机名
  • 原文地址:https://www.cnblogs.com/shantu/p/4598951.html
Copyright © 2011-2022 走看看