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

自定义nagios插件实现主动被动模式以及nagios基于mail的简单告警

[复制链接]

尚未签到

发表于 2019-1-13 06:07:07 | 显示全部楼层 |阅读模式
  nagios插件程序提供两个返回值:一个是插件的退出状态码,另一个是插件在控制台上打印的第一行数据。退出状态码可以被nagios主程序
  作为判断被监控系统服务状态的依据,控制台打印的第一行数据可以被nagios主程序作为被监控系统服务状态的补充说明
  会显示在管理页面里面。
  为了管理nagios插件,nagios每查询一个服务的状态时,就会产生一个子进程,并且它使用来自该命令的输出和退出状态码来
  确定具体的状态。nagios主程序可识别的状态码和说明如下:
  OK            退出代码 0--表示服务正常的工作
  warning       退出代码 1--表示服务处于告警状态
  critical      退出代码 2--表示服务处于紧急,严重状态
  unknown       退出代码 3--表示服务处于未知状态
  

  [root@RS1 services]# head -7 /usr/local/nagios/libexec/utils.sh
  #! /bin/sh
  STATE_OK=0
  STATE_WARNING=1
  STATE_CRITICAL=2
  STATE_UNKNOWN=3
  STATE_DEPENDENT=4
  

  示例一:判断/etc/passwd文件是否变化,利用nrpe的被动模式
  原理:利用md5sum进行指纹收集 md5sum /etc/passwd > /etc/passwd.md5
  利用md5sum -c /etc/passwd.md5对指纹进行判别,出现OK则没有变化,反之则变化了
  监控密码文件是否被更改:
  先做指纹库
  md5sum /etc/passwd > /etc/passwd.md5
  在client上创建脚本vim /usr/local/nagios/libexec/check_passwd
  #!/bin/bash
  char=`md5sum -c /etc/passwd.md5 2>&1 |grep "OK"|wc -l`
  

  if [ $char -eq 1 ];then
  echo "passwd is OK"
  exit 0
  else
  echo "passwd is changed"
  exit 2
  fi
  

  ######给脚本执行权限
  chmod +x /usr/local/nagios/libexec/check_passwd
  

  #####定义check_passwd命令
  vim /usr/local/nagios/etc/nrpe.cfg
  command[check_passwd]=/usr/local/nagios/libexec/check_passwd
  

  #####重启nrpe服务
  

  ######在nagios主程序先手动抓取数据
  [root@RS1 libexec]# ./check_nrpe -H 192.168.1.11 -c check_passwd
  passwd is OK
  

  ######在nagios主程序上定义service配置
  vim /usr/local/nagios/etc/objects/services.cfg(主动模式和被动模式各自的services.cfg配置文件,各自分别管理)
  define service{
  use                     generic-service
  host_name               client02
  service_description     check_passwd
  check_command           check_nrpe!check_passwd
  }
  

  然后在nagios服务端进行手动抓取数据:

  /usr/local/nagios/libexec/check_nrpe -H 192.168.1.11 -c check_passwd
  出现数据,表明基本已经没有问题,重启服务,观察web平台页面,如下图:

  

  自定义监控web url,用主动模式监控
  [root@RS1 ~]# curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"
  HTTP/1.1 200 OK
  [root@RS1 ~]# curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"|wc -l
  1
  1、编写执行脚本
  cd /usr/local/nagios/libexec
  vim check_web_url
  #!/bin/bash
  char=`curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"|wc -l`
  if [ $char -eq 1 ];then
  echo "the url is OK"
  exit 0
  else
  echo "the url is wrong"
  exit 2
  fi
  

  chmod +x check_web_url
  

  2、添加check_web_url这个命令到commands.cfg配置文件中
  ############define command check_web_url##########
  define command{
  command_name     check_web_url
  command_line     $USER1$/check_web_url
  }
  

  3、编辑servers.cfg文件
  cd /usr/local/nagios/etc/services
  vim web_url.cfg
  define service{
  use     generic-service
  host_name       client02      监控的主机192.168.1.11在hosts.cfg有定义
  service_description     web_url
  check_period 24x7
  check_interval 5
  retry_interval 1
  max_check_attempts 3
  check_command      check_web_url    因为是主动模式
  notification_period 24x7
  notification_interval 30
  notification_options  w,u,c,r
  contact_groups admins
  }
  

  4、检测错误,重启服务
  [root@RS1 services]# /etc/init.d/nagios checkconfig
  Running configuration check...
  OK.
  

  [root@RS1 services]# /etc/init.d/nagios reload
  Running configuration check...
  Reloading nagios configuration...
  done
  

  成功截图:

  看下整体监控效果:

  

  实现邮件报警功能:
  配置告警的步骤:
  1、添加联系人和联系组contacts.cfg
  define contact{
  contact_name                    huang
  use                             generic-contact      ---》这里使用的模板就是模板文件中的contact定义
  alias                           Nagios Admin
  email                           13817419446@139.com
  }
  将定义的contact_name添加到一个新组中
  新增联系组:
  define contactgroup{
  contactgroup_name       mail_users            这里可以定义邮件组,手机短信组,等等
  alias                   Nagios Administrators
  members                 huang
  }
  

  2、添加报警的命令commands.cfg,这里使用默认的命令,当然你也可以自己编写shell脚本或者其他语言脚本
  

  3、调整联系人的默认模板
  define contact{
  name                            generic-contact
  service_notification_period     24x7
  host_notification_period        24x7
  service_notification_options    w,u,c,r,f,s
  host_notification_options       d,u,r,f,s
  service_notification_commands   notify-service-by-email
  host_notification_commands      notify-host-by-email    如果定义了手机,这里可以加上notify-host-by-email,notify-host-by-pager,这里使用邮件告警,所以无需设置
  register                        0
  }
  

  4、在hosts、services配置文件中添加报警联系人及报警组
  然后修改模板中service、host的定义,将
  contact_groups                  admins改为
  contact_groups                  mail_users
  当然也可以不在模板中定义,在hosts、services配置文件中各自定义不同的报警方式和报警组
  

  实验:
  将网站目录下面的index.html文件mv到tmp目录下,使他warning并触发告警
  mv /var/www/html/index.html /tmp
  可以看见web平台出现warning状态,查看nagios日志如图:

  然后查看邮件,发现没有收到告警邮件,看日志发现是找不到mail命令,于是
  yum -y install mailx
  

  由于定义的services告警参数:
  service_notification_options    w,u,c,r,f,s,表示监控恢复正常也会触发邮件于是将index.html重新放到网站目录下
  mv /tmp/index.html /var/www/html
  稍微过几分钟可以发现监控正常,查看nagios日志

  再次查看邮件,如下:

  简单基于mail告警功能实现
  新建菜鸟学习交流群:584498750




运维网声明 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.yunweiku.com/thread-662494-1-1.html 上篇帖子: 为nagios装上pnp4nagios功能 下篇帖子: 网络监控nagios小结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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