`
zhengdl126
  • 浏览: 2543513 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

nagios自定义监控nginx php和ip_conn

 
阅读更多


自定义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 reload


-----------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
<?php
  error_reporting(0);
  #fwrite(STDOUT, 'This check passed');
  try{
    $r = url_get_contents("http://localhost/t.php");
    if ( false === $r || '1' != $r) {
      exit(2);
    }
  } catch(Exception $e) {
      exit(3);
  }
  exit(0);

  function url_get_contents($strUrl, $boolUseCookie=false)
  {
    $ch = curl_init($strUrl);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPGET, true);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
    if ($boolUseCookie && is_array($_COOKIE) && count($_COOKIE) > 0) {
      $cookie_str = '';
      foreach($_COOKIE as $key => $value) {
        $cookie_str .= "$key=$value; ";
      }
      curl_setopt($ch, CURLOPT_COOKIE, $cookie_str);
    }
    $response = curl_exec($ch);
    if (curl_errno($ch) != 0) {
      return false;
    }
    curl_close($ch);
    return $response;
}





==============2 ip_conn.sh


客户端/usr/local/nrpe/etc/nrpe.cfg
或者 /usr/local/nagios/etc/nrpe.cfg

 command[check_ips]=/usr/local/nrpe/libexec/ip_conn.sh 8000 10000 


vim /usr/local/nrpe/libexec/ip_conn.sh
    #!/bin/sh 
    #if [ $# -ne 2 ] 
    #       echo "Usage:$0 -w num1 -c num2"
    #exit 3 
    #fi 
    ip_conns=`nestat -an | grep tcp |grep EST |wc -l` 
    if [ $ip_conns -lt $1 ] 
            then
          echo "OK -connect counts is $ip_conns"
           exit 0 
    fi 
    if [ $ip_conns -gt $1 -a $ip_conns -lt $2 ] 
            then
            echo "Warning -connect counts is $ip_conns"
           exit 1 

    fi 
    if [ $ip_conns -gt $2 ] 
            then
            echo "Critical -connect counts is $ip_conns"
            exit 2 
    fi 
   #指定2个连接数,当连接数大于指定的第一个数的时候,给予warning警报,当连接数大于指定的第二个数的时候,给予Critical警报。


各客户端测试nrpe服务中各个插件的功能

[root@nagios-server libexec]# /usr/local/nrpe/libexec/ip_conn.sh 8000 10000
/usr/local/nrpe/libexec/ip_conn.sh: line 6: nestat: command not found
OK -connect counts is 0


服务端测试check_nrpe功能
[root@nagios-server libexec]# ./check_nrpe -H nagios-server -c check_ips
OK -connect counts is 0



各机器以独立守护进程启动nrpe服务
/usr/local/nrpe/bin/nrpe -c /usr/local/nrpe/etc/nrpe.cfg -d
 
服务器端启动nagios监控服务
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
 
启动apache服务器
/usr/local/apache/bin/apachectl -k start

分享到:
评论

相关推荐

    nagios进程、端口监控.rar_7W5_linux_nagios_进程端口监控

    在实际应用中,Nagios提供了丰富的自定义选项,包括报警阈值、报警方式(邮件、短信等)、监控频率等。你可以根据具体需求调整这些参数,以达到最佳的监控效果。 通过深入理解Nagios的工作机制,并熟练配置进程和...

    nagios-install.rar_nagios_nagios install.txt_网络监控

    Nagios是一款强大的开源网络监控系统,用于检测和通知服务、主机以及网络设备的状态变化。在本文中,我们将深入探讨如何安装和配置Nagios,以及它在网络监控中的作用。 一、Nagios概述 Nagios的核心功能是实时监控...

    nagios监控安装配置文档.zip_crops2k_nagios

    《Nagios监控安装配置详解》 Nagios是一款开源的网络监控系统,它能够对网络服务、主机、网络设备以及各种应用程序进行实时监控,确保IT基础设施的稳定运行。本文档详细介绍了Nagios的安装配置过程,包括监控插件的...

    Nagios自定义监控服务

    IP Hostname 备注 192.168.88.31 server nagios服务端 ...nagios客户端 ...nagios-plugins版本:2.2.1 ...添加监控脚本,设计一个能监控nginx端口的脚本;并添加到远程监控项目中; 添加监控脚本,设计一个能监控m

    nagios+nginx+php配置监控平台

    标题 "nagios+nginx+php配置监控平台" 涉及到的是一个网络监控解决方案,结合了Nagios(一款开源的网络监控系统),Nginx(一个高性能的HTTP和反向代理服务器),以及PHP(一种服务器端脚本语言)来搭建监控环境。...

    将nagios警报转发到alerta监控系统_C_下载.zip

    Nagios是一款开源的企业级监控系统,用于监测网络服务、主机和应用程序的状态。它能够实时监控系统的运行状态,及时发现并通知系统管理员潜在的问题。Alerta则是一个灵活且可扩展的告警管理系统,旨在处理来自多个...

    nagios服务端ndoutile+nagios+nagios_plugins.rar

    在这个“nagios服务端ndoutile+nagios+nagios_plugins.rar”压缩包中,包含了三个主要组件:ndoutils、nagios和nagios_plugins,这些都是构建一个功能完备的Nagios服务端所必需的。 首先,让我们来看看`ndoutils`。...

    Linux下nginx+nagios_监控平台搭建.doc

    然而,本教程将介绍如何在Linux系统上使用Nginx搭建Nagios监控平台,以提供更加高效和安全的监控解决方案。 ### 系统环境 - 服务器操作系统:CentOS 5.3 x64 - Nginx版本:根据文档未明确给出,通常建议使用稳定...

    nagios+check_logifiles实现日志监控.docx

    总的来说,通过使用check_logfiles替代Nagios自带的check_logfile插件,我们可以更高效、更智能地管理日志监控,提高IT系统的稳定性和可靠性。记住,定期审查和调整监控策略是确保监控有效性的重要步骤,因为系统的...

    Nagios自定义插件介绍

    Nagios的核心优势在于其灵活性和扩展性,允许用户通过自定义插件来满足特定的监控需求。 ##### 1.1 功能特点 - **监控资源**:支持对多种网络资源进行监控,包括但不限于SMTP、POP3、HTTP、NNTP、PING等。 - **...

    check_nginx_status-master.zip

    【标题】"check_nginx_status-master.zip"是一个用于Nagios监控Nginx服务器状态的脚本集合。这个压缩包包含了一个完整的解决方案,帮助系统管理员实时监控Nginx服务的运行状况,确保Web服务器的稳定性和高效性。 ...

    Linux下nginx+nagios

    ### Linux下Nginx+Nagios监控平台搭建详解 随着Linux服务器稳定性和可用性的不断提高,企业对于线上服务的要求也越来越高。为了确保业务连续性及服务质量,很多企业都会部署专门的监控系统来实时监测服务状态,并在...

    nagios完全详解监控系统[参照].pdf

    Nagios是一款开源的网络监控系统,用于监测主机、服务和网络状态,确保系统的稳定运行。它具有良好的稳定性、强大的功能,被广泛应用于各种规模的企业和组织。Nagios提供了主动模式和被动模式两种监控方式。 主动...

    Nagios系统监控实践(第2版)

    《Nagios系统监控实践(第2版)》是一本深度探讨Nagios系统监控的专著,旨在帮助读者理解和掌握如何有效地利用Nagios来监控IT基础设施的运行状态。Nagios是一款开源的网络监控系统,能够实时监控网络服务、服务器、...

    CentOS安装Nagios和监控Linux、Windows客户端以及微信报警详细配置

    Nagios是一款开源的网络监控系统软件,它可以帮助系统管理员跟踪网络中的主机和服务的状态,并在出现异常时通过电子邮件、短信或自定义的方式进行通知。本文档将详细介绍如何在CentOS 6.5 64位系统上安装配置Nagios...

    向Nagios添加监控主机

    nagios-plugins是一系列用于检查系统状态和服务状态的插件,而nrpe(Nagios Remote Plugin Executor)允许远程执行这些插件,使Nagios主服务器能够从远端收集监控数据。 1. 安装nagios-plugins: - 使用`useradd`...

    Nagios监控redis+MySQL

    在本文中,我们将深入探讨如何使用Nagios来监控Redis和MySQL这两种广泛应用的数据库服务。 首先,让我们关注Redis监控。Redis是一个内存中的数据结构存储系统,常用于缓存、消息队列和数据库等场景。为了确保Redis...

    Nagios监控Windows主机(NSClient++安装与应用

    本文将详细介绍 Nagios 监控 Windows 主机的配置和应用,包括 NSClient++ 的安装和配置、NSClient++ 与 Nagios 服务器的通信等。 一、NSClient++ 安装 NSClient++ 是一个免费的开源插件,能够帮助 Nagios 监控 ...

    Nagios网络监控.docx

    Nagios 是一款开源的免费网络监控软件,具有服务的运行状态监控功能,与 Cacti 不同的是,Nagios 可以实时监控服务器的性能和状态。下面是 Nagios 网络监控系统的实现步骤: 一、部署环境 * 操作系统:Redhat 5.5 ...

Global site tag (gtag.js) - Google Analytics