设为首页 收藏本站
查看: 1169|回复: 0

分布式nagios监控

[复制链接]

尚未签到

发表于 2019-1-15 10:17:18 | 显示全部楼层 |阅读模式
1 Nagios分布式架构图




2 Nagios分布式架构图原理
中心服务器与分布服务器的对比
中心服务器: 目标是从一个或多个分布式服务器收集服务检测结果。虽然中心服务器偶尔也会做些自主检测,但自主检测更多只是在极端情况下才做的,因而可以说中心服务器当前只做强制检测。既然中心服务器从一台或多台分布服务器收集强制服务检测结果,那它就承担全部监控逻辑的整体输出工作(如送出通知、运行事件处理脚本、判定主机状态、安装并提供Web接口等)

分布服务器: 功能是真正地完成你所划分出一主机的检测工作。这里的定义是松散的-完成基于你的网络情况而自然形成的。在一个物理位置里可能会有若干个,这取决于你的网络层次划分,要么因为WAN而划分开,要么因个自独立的防火墙而划分开。很重要的一点是,在每个里都只有一个运行Nagios 的服务器并完成对该的监控检测工作。分布服务器通常上面只安装有Nagios,它不需要安装Web接口,如果不想让它来做也可以不送出通知、运行事件处理脚本或是执行任何其他服务检测。
分布服务器如何收集服务检测信息
利用nsca外部构建完成从远程主机提交强制检测结果。该外部构件包括两部分,第一部分是客户端程序(send_nsca),运行于远程主机上并负责将强制检测结果送到指定的服务器上去,另一部分是NSCA守护进程(nsca),它既可以独立地运行于守护服务也可以注册到inetd里作为一个inetd客户程序来提供监听联接。从客户端收到服务检测结果信息之后,守护进程将结果提交给在中心服务器的Nagios,方式是通过在外部命令文件里插入一条PROCESS_SVC_CHECK_RESULT命令,之后跟上检测结果。在Nagios下一次处理外部命令时将会找到这条由分布式服务器送来的强制检测信息并处理它
3. Nagios分布式搭建步骤
1)中心服务器设置
1、安装配置好nagios服务器 ,这里不再复述。
2、下载并安装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

以上步骤检查正确执行以后:
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/nsca  
  • #chmod a+x /etc/init.d/nsca
  • #chkconfig --add nsca

修改nsca的配置文件


  • #vim /usr/local/nagios/etc/nsca.cfg
  • password=123456 #此处和分布式监控服务器密码一致

修改nagios的配置文件


  • #vim /usr/local/nagios/etc/nagios.cfg
  • check_external_commands=1 # 配置nagios检查扩展命令
  • accept_passive_service_checks=1 # 配置接受被动服务检测的结果
  • accept_passive_host_checks=1 #配置接受被动主机检测的结果

3、检查配置文件是否正确:






  • /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg



4、启动nagios和nsca服务


  • service nagios start
  • service nsca start

5、配置

定义主机和服务 定义主机的host_name 服务的service_description 一定要和 分布服务器的设置一样



  • define host {

  •            use         linux-server

  •            host_name   10.15.62.199

  •            address 10.15.62.199

  •            check_freshness 1 # 定义强制刷新检测  

  •            freshness_threshold 100 #指定了服务检测结果应该在何时间内刷新 单位是s  

  •            passive_checks_enabled 1 #打开被动检测

  •            active_checks_enabled 0 #关闭主动监测  

  • }

  • define service{

  •             use generic-service

  •             host_name 10.15.62.199

  •             service_description check_s8_speed

  •             check_command service-is-stale

  •             check_freshness 1

  •             freshness_threshold 100

  •             active_checks_enabled 0

  • }

6、定义命令 定义服务主动检测的命令




  • define command{
  •              command_name    service-is-stale
  •              command_line    $USER1$/staleservice.sh
  • }

定义命令的脚本


  • # vim ../nagios/libexec/staleservice.sh
  • #!/bin/sh
  • /bin/echo "CRITICAL: Service results are stale!"
  • exit 2

二)分布服务器设置
1、安装Nagios,不需要安装Web接口;---安装过程略;
2Nsca安装
下载nsca-2.7.2.tar.gz至本地后:


  • #tar zxf nsca-2.7.2.tar.gz
  • #cd nsca-2.7.2
  • #./configure && make all

以上步骤检查正确执行以后:
1)会在src目录下生成两个程序 nsca send_nsca(主程序)
2sample-config中会有nsca.cfgsend_nsca.cfg(配置文件)


  • # cp src/send_nsca /usr/local/nagios/bin/ 复制命令

  • # cp sample-config/send_nsca.cfg /usr/local/nagios/etc/ 复制配置文件

  • # chown nagios.nagios /usr/local/nagios/bin/send_nsca 修改属组属主

  • # chown nagios.nagios /usr/local/nagios/etc/send_nsca.cfg

  • # vim /usr/local/nagios/etc/send_nsca.cfg

修改send_nsca.cfg配置文件


  • #vim send_nsca.cfg
  • password=123456 //#此处和中心服务器密码一致

3、在分布式服务器的对象配置文件里只定义那些由它直接监控的主机与服务的对象(与中心服务器定义监控主机和服务对象一致)
定义监控主机及服务对象示例:


  • define host {
  •           use linux-server
  •           host_name 10.15.62.199 //和中心服务器上定义的主机名一致  
  •           address 10.15.62.199
  • }
  • define service{
  •           use generic-service
  •           host_name 10.15.62.199
  •           service_description check_s8_speed //与中心服务器上定义的服务描述一致
  •           check_command check-host-alive
  •           check_period 24x7 //定义检测周期
  •           max_check_attempts 3 //最大检测次数3次
  •           normal_check_interval 1 //每隔1分钟检测一次
  •           retry_check_interval 1 //软状态重试时间1分钟
  • }

4、修改nagios的配置文件


  • #vim nagios.cfg
  • enable_notifications=0 //阻止它直接送出任何通知信息
  • obsess_over_services=1 // 配置为强迫型服务(obsess over services)类型
  • ocsp_command=submit_check_result //定义一个强迫型服务处理(ocsp)命令

5、定义submit_check_result命令


  • #vim command.cfg
  • define command{

  •                  command_name submit_check_result //添加这条命令
  •                  command_line /usr/local/nagios/libexec/eventhandlers/
  • submit_check_result $HOSTNAME$ '$SERVICEDESC$'$SERVICESTATE$ '$SERVICEOUTPUT$'
  • }

6、创建submit_check_result脚本文件


  • #mkdir /usr/local/nagios/libexec/eventhandlers //创建目录
  • #chown -R nagios.nagios /usr/local/nagios/libexec/eventhandlers //修改/eventhandlers目录属组和属主
  • #vim submit_check_result //脚本的内容如下(用中心服务器IP地址替换里面的central_server):
  • #!/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
  • central_server-c /usr/local/nagios/etc/send_nsca.cfg

  • #chmod +x /usr/local/nagios/libexec/eventhandlers/submit_check_result //添加脚本执行权限

7、检查nagios配置文件并重启nagios服务


  • # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  • #service nagios restart

四、强制刷新的理解

check_command service-is-stale 在中心服务器上配置的服务检测命令

check_freshness 1 打开强制刷新

freshness_threshold 100 刷新频率是100s

active_checks_enabled 0 关闭主动检测
Nagios定期地对那些打开了刷新检测服务的检测结果进行刷新情况检查。服务对象定义里的freshness_threshold选项指定了服务检测结果应该在何时间内刷新。例如,,Nagios将会对当前时间100秒之前的检测结果判定为陈旧。如果没有指定服务对象里的freshness_threshold值,Nagios将自动地计算出一个刷新间隔门限,要么按照normal_check_interval要么按retry_check_interval来计算,这取决于服务当时所在什么样的状态类型。一旦服务检测结果被判定为是陈旧Nagios将使用服务定义里check_command指定的命令来执行一次服务检测,这当然是自主服务检测。
也就是说当分布服务器过了100s还没有发送过来数据,中心服务器就会变被动检测为主动检测,用check_command定义的命令执行服务检测。这样可以防止当分布服务器宕机或不发送通知时,中心服务器可以及时报警。

注意点:
1、中心服务器和分布式服务器的时间一定要调整一致
2、分布式服务器监控客户端主机可以用任何方式,主动被动都可以
3、分布式上定义的监控主机与服务,在中心服务器上也要定义,保证主机名(host_name)和服务描述(service_description)一致。
4、分布式服务器上定义的服务检测命令(check_command)是真正的检测服务的命令 ,中心服务器上定义的服务检测命令(check_command)是当中心服务器由被动检测变为主动检测时执行的命令(也就是当分布式主机不发送检测命令时中心服务器执行的命令),正常情况下不执行这个命令。









运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-663484-1-1.html 上篇帖子: 监控利器nagios 下篇帖子: nagios libjpeg.so.62: cannot open shared object file
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表