nagios 分布式

简介:

                             Nagios 分布式监控的部署

由于数据中心不在同一个机房,或者是用一台nagios无法满足监控的需求,或者是两台以才能满足你的监控需求,这时就需要用nagios的分布式监控

 分布式主要是分布式检测,集中式展现,集中式报警(当然也可以分布式报警)等

Nagios分布式分为两种:一是运用nagios项目中的一个插件nsca nsca收集nagios分布式节点上统计的信息,第二种方法是用ndo统一入库后在集中展示

 

Nagios分布式分析图如下

          

 


 

 

 

 中心服务器和分布式服务器的比较

  中心服务器的目标就是从一个或者多个分布式服务器收集服务检测结果,当然中心服务器偶尔也可以做些自主检测,但是自主检测更多知识在极端情况下才做的,因而可以认为中心服务器当前只做强制检测,

  分布式服务才是真正的完成所划分出一组主机检测工作,而把检测的结果发送给中心服务器,此时分布式服务器并不需要web 接口

 

Nagio 分布式的配置

第一 nagios中心服务器上配置nsca

 解压nsca 并安装

     # tar  xvf   nsca-2.7.2.tar.gz

      #cd nsca-2.7.2

      # ./configure  && make all

 拷贝nsca nsca.cfg 等文件到nagios对应的目录中

      #cd  sample-config

      #cp  nsca.cfg  /usr/local/nagios/etc/

      #cd ../src

      #cp  nsca  /usr/local/nagios/bin/

   修改文件所属主及所属组

       # chown  -R nagios.nagios /usr/local/nagios/bin/nsca

       #chown –R nagios.nagios /usr/local/nagios/etc/nsca.cfg

配置nsca.cfg

            #grep  -v ^# nsca.cfg | grep –v ^$

 pid_file=/var/run/nsca.pid

  nsca的进程文件

server_port=5667

   nsca 的端口号

server_address=192.168.2.194

  #如果nagios 服务器有多块网卡时,绑定其监听的网卡

nsca_user=nagios

nsca_group=nagios

debug=0

command_file=/usr/local/nagios/var/rw/nagios.cmd

alternate_dump_file=/usr/local/nagios/var/rw/nsca.dump

aggregate_writes=0

append_to_file=0

max_packet_age=30

password=PASSWORD

  #分布式服务器在发送数据包是必须用该密码加密

decryption_method=1

   #选择解密数据包的方法,当然越是安全的加密方法,其消耗系统资源越多

 

 

 /etc/service 尾部添加nsca 对应的端口号

           #vim /etc/service

            nsca            5667nsca                 #NSCA

   开启nsca进程

      #/usr/local/nagios/bin/nsca  -c /usr/local/nagios/etc/nsca.cfg –d

   确认nsca 是否开启

       # netstat –tunlp |grep nsca

 

第二,配置nagios的分布式节点的

       1同样是解压并配置nsca,并拷贝相应的文件到nagios的对应的目录下面

 

         #cd nsca-2.7.2

         #cd  sample-config

          #cp  send.nsca.cfg /usr/local/nagios/etc/

          #cd  ../src

          #cp   send.nsca  /usr/local/nagios/bin

       修改相应文件的所属主及所属组

           #chown –R  nagios .nagios  /usr/local/nagios/etc/send.nsca.cfg

           #chown –R nagios.nagios   /usr/local/nagios/bin/send.nsca

       4  配置send.nsca .cfg 

             #grep  -v  ^#   send.nsca.cfg | grep –v ^$

                   password=PASSWORD

encryption_method=1

  注:该两项必须要和nagios的中心服务器完全相同

 

第三 nagios中心服务器及分布式服务器的配置

      Nagios中心服务端(即主服务器)

     修改nagios的主配置文件

         #cd /usr/local/nagios/etc

         #vim  nagios.cfg

             并修改下面值

             Check_external_commands=1   

                #此项是设定nagios 是否检测外部命令。默认是是不启用的,但是由于需要配合apache工作,如果你想启用cgi命令接口时,必须启动该项

 

              accept_passive_service_checks=1

                       #此项是设定nagios在启动或者是重启时,是否将接受被动服务检测的结果。值1表示接受被动检测,值0表示拒绝被动检测。默认时是启动被动服务检测功能 

               accept_passive_h ost_checks=1

                        #此项设定nagios在启动或者是重启是是否会接受被动主机检测的结果。值是1时表示接受,值是0时表示拒绝

       定义监控的对象,但是在此定义的监控对象必须和分布式服务器端定义的相同 

               

             

              例如:

                  define host{

                         host_name                    linux-server

                          use                         genert-host

                          address                      192.168.2.2

                          passive_checks_enabled        1 #开启被动检测模式

                           active_checks_enabled          0 #关闭主服务端对该主机的主动检测

                         }

                

        define service{

                   host_name                 linuxserver

                   use                        generic-service

                   service_description            CPU load 

  #根据自己监控的对象进行描述

                   check_command                  check_load   

#定义检测命令,根据自己的情况自己定义

                   check_freshness               1 

#开启强制刷新策略,如果关闭时,只需把1改为就行

                  freshness_threshold              300

#主服务器强制刷新的时间,该项根据具体情况,具体定义

                 passive_checks_enabled           1 

#开启被动检测模式

                active_checks_enabled             0

 #关闭主服务器(即中心服务器)动检测

                         }

 

第四nagios分布式服务器端的配置

     修改nagios的主配置文件

               #cd /usr/local/nagios/etc

               #vim nagios.cfg

                  enabled_notifications=0 

                        #此项设置的是当监控的对象的状态发生变化的时候,是否启动通知机制,当值等于1时,表示通知 ;当值等于0时,表示不通知;默认情况下是启动事件处理通知

       obsess_over_service=1   #此项设置的是决定nagios 是否被服务检测迷惑并运

             行之后定义的ocsp_command 命令,此项只在执行分布式检测是才启用,否则不  要轻易启用该项,当然默认是是不启用的,当值为1是是启用,值为0时是不启用

  ocsp_command=submit_check_result   #此命令是自己定义的命令,且该命令是在nagios的家目录下面的libexec 子目录下面; 该项是有nagios处理的,为每个服务检测而运行的命令。该命令仅当obsess_over_service选项的值设定为1时,此项执行有效;默认情况下是为空

  obsess_over_hosts=1  #此项时设置nagios是否会迷惑主机检测并运行ochp_command 定义的命令,此项只在nagios的分布式监控时启用,否则不要启用该项,默认情况下是不启用的,当值为1时是启用,当值为0时是关闭

  ochp_command=submit_check_result  #此项设置的是 nagios检测每个运行的主机,仅当obess_over_host  选项设置为1时,该命令是自己设置的命令的名称

 创建脚本submit_check_result

       #vim  submit_check_result

              

  #!/bin/bash

              #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 correspinding return code 

              return_code=-1

case "$3" in

      ;;

      WARNING)

#!/bin/bash

#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 correspinding 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 trun 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 192.168.2.194 -c /usr/local/nagios/etc/send_nsca.cfg

 

 

修改脚本的文件权限及所属主和所属组

      #cd  /usr/local/nagios/libexec

      #chmod +x submit_check_result

      #chown  nagios.nagios  submit_check_result

 

command.cfg 中定义submit_check_result

      #cd /usr/local/nagios/etc/objects

      #vim command.cfg

             define command {

           command_name   submit_check_result

           command_line   /usr/local/nagios/libexec/submit_check_result $HOSTNAME$  '$SERVICEDESC$' $SERVICESTATE$ '$SERVICEOUTPUT$'

                     }  

 第五 nagios 刷新检测

 注意的是在分布式上定义的监控对象同时也要在中心服务器上定义同样的监控对象;在定义中心服务器强制检测,但是中心服务器只用强制检测方式来做监控,但是完全有依赖于强制检测来的条件是nagios 必须依赖于其他东西来提供监控系统数据 如果发送强制检测结果的远程主机宕机,就无法检测远程主机是否存活

 

刷新检测的目的就是确保服务检测姚明可有分布式服务器以规格化的方式提供检测数据要么由其中心服务器在毕业情况下在建筑检测,如果分布式服务器所提供检测结果被判定为“过期” nagios 将被配置为自中心监控服务器强制地对那个服务发出自主检测

   中心服务器上需要对那些分布式服务器所负责监控的服务作如下配置改动

   服务对象定义里的check_freshness 选项设定为,意味着开启针对该服务的“刷新检测” 特性

   服务对象定义里的freshness_threshold 选项必须设定一个数值,且是以秒为单位,该值反应的是分布式服务器所提供的检测数据,是以多长时间提交一次,换句话说就是提交数据的频率是多少

如果没有指定服务对象里的freshness_threshold 未定义,nagios将会自动的限制一个刷新间隔 nagios要么是安装normal_check_inreval 要么是安装retry_check_interval 来计算

 

一定要记住在中心服务去的服务对象定义里知道check_command 选项以便进行从中心服务器发出自主服务检测命令。一般情况下,该检测命令不会被只能够(自主检测在程序层面是关闭的,或者在定义读服务对象里本身就关闭了自主检测) 当对结果刷新检测功能开启时。nagios将会运行自主检测命令,即使自主检测被程序层面关闭或者是服务对象里被关闭也会做自主检测

 定义命令

  define command{

             command_name    service-is-stale

          command_line   /usr/local/nagios/libexec/staleservice.sh

           }

 

 创建的脚本

      #vim  staleservice.sh

        #/bin/bash

           /bin/echo CRITICAL:Service results are stale!”

          exit 2

 

 nagios 发现并判定服务检测的结果是过期的并运行service-is-stale 命令做自主测试 staleservice.sh  脚本将执行并返回一个紧急状态,通常情况下会发出故障通知

 注:参照下面的blog

   http://www.comeonsa.com/2010/08/nagios分布式配置/

   http://nagios-cn.sourceforge.net/nagios-cn/profession.html










本文转自 freehat08 51CTO博客,原文链接:http://blog.51cto.com/freehat/386543,如需转载请自行联系原作者
目录
相关文章
|
机器学习/深度学习 数据采集 监控
实现ganglia与centreon的无缝整合| 学习笔记
快速学习实现ganglia与centreon的无缝整合。
199 0
实现ganglia与centreon的无缝整合| 学习笔记
|
机器学习/深度学习 数据采集 监控
实现ganglia与centreon的无缝整合
一、前言 二、实现Ganglia与Centreon的完美整合 三、告警历史 四、统一监控系统架构图
实现ganglia与centreon的无缝整合
|
监控
部署 Nagios 监控系统
前言:Nagios是一款开源的免费网络监视工具,可以监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员。
1413 0
|
监控 Linux Memcache