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

[经验分享] nagios自定义监控nginx php和ip_conn

[复制链接]

尚未签到

发表于 2018-12-15 14:38:39 | 显示全部楼层 |阅读模式

  • 自定义ip_conn.sh :http://zhumeng8337797.blog.163.com/blog/static/100768914201171664928247/
  用php自定义 nagios监控插件
  http://blog.csdn.net/sudoers/article/details/6913368
  Writing a Nagios plugin with PHP
  http://benedmunds.com/2012/04/25/writing-a-nagios-plugin-with-php/
  /etc/init.d/nagios stop
  /etc/init.d/nagios start
  ==============1 增加nginx和php的监控
  -----------1.1 主
  基本配置 /usr/local/nagios/etc/nagios.cfg
  cfg_file=/usr/local/nagios/etc/objects/commands.cfg  图3定义commands
  cfg_file=/usr/local/nagios/etc/objects/contacts.cfg     联系人 图4
  cfg_file=/usr/local/nagios/etc/objects/templates.cfg  模板 图5
  cfg_file=/usr/local/nagios/etc/objects/localhost.cfg          localhost.cfg中有类似的主机组设置
  cfg_file=/usr/local/nagios/etc/objects/services.cfg
  #vim /usr/local/nagios/etc/objects/commands.cfg
  #check_php_test
  define command{
  command_name check_php_test
  command_line $USER1$/check_php_test.sh -H $HOSTADDRESS$ -c $ARG1$ -t 30 # -t 30   # 加上一个 -t 30 指定限定时间为 30 秒
  }
  #vim /usr/local/nagios/etc/objects/services.cfg
  define service{
  use   generic-service
  host_name               R620_web67,R620_web68
  service_description check_php_test
  contact_groups        admins-ts
  check_command check_nrpe!check_php_test
  notifications_enabled 1
  normal_check_interval 3
  retry_check_interval  2
  notification_interval 10
  notification_period   24x7
  notification_options  w,u,c,r
  }
  編輯完主Nagios後可以用這一行检查配置
  /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  检查配置:
  #/etc/init.d/nagios checkconfig
  reload服务:

  #/etc/init.d/nagios>  -----------1.2 从:
  客户机基本配置/usr/local/nrpe/etc/nrpe.cfg
  或者 /usr/local/nagios/etc/nrpe.cfg
  #vim /var/www/t.php
  1
  #vim /usr/local/nagios/libexec/check_php_test.sh
  #!/bin/bash
  #!/bin/bash
  r=`/usr/bin/curl -s http://localhost/t.php`
  if [ $r ] ;then
  if [ $r == "1" ] ;then
  echo "ok"
  exit 0
  else
  echo "Please confirm the content of the file(t.php)!"
  exit 1
  fi
  fi
  echo "Service exception,May be the file(t.php) does not exist!"
  exit 2
  -----------------------------------------nagios检测并重启服务完整脚本 check_php_test.sh
  #!/bin/bash
  #nagios默认state
  nagstate=0
  #nagios默认描述
  nagrs="ok"
  #检测服务
  function checkService () {
  r=`/usr/bin/curl -s http://localhost/t.php`
  echo "curl content:$r"
  if [ $r ] ;then
  if [ $r -eq 1 ] ;then
  nagstate=0
  nagrs="OK"
  return 1
  else
  nagstate=1
  nagrs="Please confirm the content of the file(t.php)!"
  return 1
  fi
  fi
  nagstate=2
  nagrs="Service exception,attempts to restart services,please pay attention to the following message!"
  return 1
  }
  #重新拉起ngin, php服务
  function restartService () {
  #pid /dev/shm/pid/nginx.pid;
  nginxPath="/usr/local/nginx/conf/nginx.conf"
  #pid = /dev/shm/pid/php-fpm.pid
  phpPath="/usr/local/php/etc/php-fpm.conf"
  `sudo chmod +x $nginxPath`
  `sudo chmod +x $phpPath`
  nginxPid=`cat $nginxPath | grep "pid" | tr -d ";" |awk 'BEGIN {FS=" "}{print $2}' | awk '{gsub(/ /,"")}1'`
  phpPid=`cat $phpPath | grep "pid" | awk 'BEGIN {FS="="}{print $2}' | awk '{gsub(/ /,"")}1'`
  if [ -f $nginxPid ] ;then
  echo "restart nginx"
  sudo /bin/kill -HUP `sudo cat $nginxPid`
  else
  echo "start nginx"
  `sudo chmod +x /usr/local/nginx/sbin/nginx`
  `sudo /usr/local/nginx/sbin/nginx`
  fi
  if [ -f $phpPid ] ;then
  echo "retart php"
  sudo /bin/kill -USR2 `sudo cat $phpPid`
  else
  echo "starg php-fpm"
  `sudo chmod +x /usr/local/php/sbin/php-fpm`
  `sudo /usr/local/php/sbin/php-fpm`
  fi
  return 1
  }
  #创建t.php文件
  function toucthTphp () {
  wwwTphp="/var/www/ssc/www/t.php"
  htmlTphp="/var/www/html/t.php"
  [ -d "/var/www/ssc/www" ] && `sudo chmod -R 777 /var/www/ssc/www/`;echo 1 > $wwwTphp
  [ -d "/var/www/html" ] && `sudo chmod -R 777 /var/www/html/`;echo 1 > $htmlTphp
  return 1
  }
  ### 主程序###
  function main () {
  toucthTphp
  checkService
  [ $nagstate -ne 0 ] && restartService
  checkService
  return 1
  }
  main
  echo $nagrs
  exit $nagstate
  ------------------------ nagios的sudo需要手动输入密码问题
  su - nagios
  sudo /etc/init.d/sshd restart
  需要输入密码
  修改:
  su -
  #visudo   (或者sudo vi /etc/sudoers
  #添加nagios 请求sudo,允许特定指令时(可跟参数),不需要密码 。
  nagios ALL=(ALL)       NOPASSWD: /etc/init.d/sshd restart
  #找到 #Defaults  requiretty 并取消注释,另外新增一行。表示nagios用户不需要登陆终端就可以调用命令 。
  Defaults  requiretty
  Defaults:nagios   !requiretty
  su - nagios
  sudo /etc/init.d/sshd restart
  就不需要输入密码了
  ---------------------------------------END 检测并重启服务脚本
  nrpe.cfg定义command: check_php_test  (如果缺少此步骤,在服务器端执行会提示NRPE: Command 'check_php_test' not defined)
  #vim /usr/local/nagios/etc/nrpe.cfg
  command[check_php_test]=/usr/local/nagios/libexec/check_php_test.sh
  重启nrpe:
  #/etc/init.d/xinetd restart
  报错:NRPE: Unable to read output (页面上nagios的文字描述就是通过echo获取到的)
  客户端脚本要有输出内容
  echo "ok"
  exit 0
  ****修改sh文件不需要重启任何服务
  -----------1.3 主: 配置邮件联系人
  #vim /usr/local/nagios/etc/objects/contacts.cfg
  define contactgroup {
  contactgroup_name       admins-ts
  alias                   Nagios Administrators
  members                 it-ts
  }
  define contact {
  contact_name                    it-ts                   ; Short name of user
  use                             generic-contact         ; Inherit default values from generic-contact template (defined abov
  e)
  alias                           sy.zed               ; Full name of user
  email                          idc.it@test.com   ;#最终的邮件组
  pager                           1
  }
  host_name设置
  #vim /usr/local/nagios/etc/objects/localhost.cfg
  define host {
  host_name             R620_web67
  alias                 Linux R620_web67
  address               192.168.102.67
  contact_groups        admins-ts
  check_command         check-host-alive
  notifications_enabled 1
  process_perf_data     1
  max_check_attempts    5
  notification_interval 10
  notification_period   24x7
  notification_options  d,u,r
  action_url      /nagios/pnp/index.php?host=$HOSTNAME$
  parents         TW_TS
  }
  ----------- 1.4验证
  在监控机上运行check_nrpe -H IP
  可以查看到客户端的nrpe信息,说明监控机与被监控机的nrpedaemon通信是正常。
  在服务器端:验证
  /usr/local/nagios/libexec/check_nrpe -H 192.168.102.67 -c check_php_test
  nagios页面查看
  Hostgroup Overview -> R620_web67 -> check-php-test
  ----------其他:php方式简述
  #check_php_test
  define command{
  command_name check_php_test
  command_line php $USER1$/check_php_test.php -H $HOSTADDRESS$ -c $ARG1$ -t 60
  }
  #vim /usr/local/nagios/libexec/check_php_test.php
  

运维网声明 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-651730-1-1.html 上篇帖子: php程序初学linux C 下篇帖子: Linux PHP缓存加速器安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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