1、编写python脚本监控nginx

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, sys, time
import string
import getopt
def usage():
print """check_nginx is a Nagios to monitor nginx status
Usage: check_nginx [-h|--help][-w|--warning][-c|--critical] Options:
--help|-h)
print check_nginx help.
--warning|-w)
Sets a warning level for nginx Active connections. Default is: off
--critical|-c)
Sets a critical level for nginx Active connections. Default is: off
Example:
./check_nginx -w 10 -c 5""" sys.exit(3)
try:
options,args = getopt.getopt(sys.argv[1:],"hw:c:",["help","warning=","critical="])
#“hw:c:”短格式 --- h 后面没有冒号:表示后面不带参数,p:和 i:后面有冒号表示后面需要参数
#["help","warning=","critical="]长格式 --- help后面没有等号=,表示后面不带参数,其他三个有=,表示后面需要参数
#返回值 options 是个包含元祖的列表,每个元祖是分析出来的格式信息,比如 [('-i','127.0.0.1'),('-p','80')] ;
#args 是个列表,包含那些没有‘-’或‘--’的参数,比如:['55','66']
except getopt.GetoptError:
usage()
sys.exit(3)
for name,value in options:
if name in ("-h","--help"):
usage()
if name in ("-w","--warning"):
warning = int(value)
if name in ("-c","--critical"):
critical = int(value)
try:
ret = os.popen('ps -C nginx -o pid,cmd').readlines()
except Exception:
print "NGINX STATUS unknown: Error while getting Connection"
sys.exit(3)
if len(ret) < critical:
print "Critical-nginx process is killed."
sys.exit(2)
elif len(ret) < warning:
print "Warning-nginx process is too low."
sys.exit(1)
else:
print "OK-nginx is running"
sys.exit(0)

2、将脚本check_nginx拷贝到/usr/local/nagios/libexec/下,并chmod +x ./check_nginx

如果你要监控nagios安装本机的nginx进程,请参考如下步骤:

3、在/usr/local/nagios/etc/command中增加如下

  define command{
        command_name    check_nginx
        command_line    $USER1$/check_nginx -w $ARG1$ -c $ARG2$
        }

4、在自己定义的service.cfg中增加

  define service{
        use                     generic-service
        host_name               localhost
        service_description     nginx
        check_command           check_nginx!4!2
        max_check_attempts      5
        normal_check_interval   3
        retry_check_interval    2
        check_period            24x7
        notification_interval   10
        notification_period     24x7
        notification_options    w,u,c,r
        contact_groups          admins
        }

如果需要监控远程主机的nginx进程,请先安装nrpe,然后参考如下

3、Vim /etc/nagios/nrpe.cfg

  加入一行

  command[check_nginx]=/usr/local/nagios/libexec/check_nginx -w $ARG1$ -c $ARG2$

4、修改/etc/nagios/nrpe.cfg

  dont_blame_nrpe=1 #打开参数传递

5、重启nrpe

  /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

  测试执行

  /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_nginx -a 4 1

  如果能够正常返回值就是正常的

6、在/usr/local/nagios/etc/object/command中增加

define command{
        command_name
check_nrpe
        command_line /usr/local/nagios/libexec/check_nrpe –H
$HOSTADDRESS$ -c $ARG1$ -a $ARG2$ $ARG3$
        }

7、在自己定义的service.cfg中增加

define service{
        use                     generic-service
        host_name               localhost
        service_description     nginx
        check_command           check_nrpe!check_nginx!4!2
        max_check_attempts      5
        normal_check_interval   3
        retry_check_interval    2
        check_period            24x7
        notification_interval   10
        notification_period     24x7
        notification_options    w,u,c,r
        contact_groups          admins
        }

使用nagios+python监控nginx进程数的更多相关文章

  1. shell习题第13题:监控nginx进程

    [题目要求] 在服务器上写一个脚本,要求如下 1. 每隔10秒去检查而一次服务器上的nginx进程数,如果>=500的时候,就需要自动重启一下nginx服务,并检测启动是否成功 2. 如没有正常 ...

  2. Python 监控nginx服务是否正常

    Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True ...

  3. zabbix监控nginx进程

    确认nginx有没有安装模块 然后在主站点下添加(二级站点) location /NginxStatus { stub_status on; access_log off; allow 127.0.0 ...

  4. 阿里云自定义监控tomcat进程数

    阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口:自定义监控SDK(python版) :c ...

  5. nginx-rrd监控nginx访问数

    一 .查看已安装的nginx是否包含stub_status模块 /usr/local/nginx/sbin/nginx -V nginx version: Nginx/1.2.0 configure ...

  6. Nagios监控nginx服务具体过程

    1在nginx 服务器上安装nrpe客户端: Nginx的服务须要监控起来.不然万一down了而不及时修复,会影响web应用.例如以下web应用上面启动的nginx后台进程[root@lb-net-2 ...

  7. ubuntu下修改nginx的进程数

    1. 进入nginx配置文件:vim /etc/nginx/nginx.conf2. 将events下的worker_processes 修改为 你希望的数字,保存文件并退出3. 重启nginx: s ...

  8. zabbix监控Nginx模板

    前提条件: nginx模块安装了http_stub_status_module和nginx_upstream_check_module: 在nginx的配置文件中配置上: location /stat ...

  9. 让keepalived监控NginX的状态

    经过前面的配置,如果主服务器的keepalived停止服务,从服务器会自动接管VIP对外服务:一旦主服务器的keepalived恢复,会重新接管VIP. 但这并不是我们需要的,我们需要的是当NginX ...

随机推荐

  1. C、C++编程入口,常见的编程题

    1.设计一个从5个数中取最小数和最大数的程序. 2.#include<stdio.h> 3.int min(int a[],int i); 4.int max(int a[],int i) ...

  2. 【转】实现Ribbon风格的窗体

    随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格.那么我们如果要自己开发,应当怎么做呢?本文就是为大家解开这个疑团的. 首先,Delph ...

  3. java基础---->多线程之ThreadLocal(七)

    这里学习一下java多线程中的关于ThreadLocal的用法.人时已尽,人世还长,我在中间,应该休息. ThreadLocal的简单实例 一.ThreadLocal的简单使用 package com ...

  4. Sass-学习笔记【进阶篇】

    特别说明: 没有sass基础请移步:[Sass-学习笔记[基础篇]]http://www.cnblogs.com/padding1015/articles/7056323.html 最底部附结构图(实 ...

  5. Kotlin——初级篇(一):最详细的环境搭建

    众所周知,Kotlin出来已经良久了.Kotlin有着众多优势,不管是用于Android开发中,还是Java开发,都能缩减很大的代码量,大大提高了工作效率.而小生本人也是才从忙碌的个工作中抽身出来,有 ...

  6. java - OutOfMemoryError: Java heap space 堆空间不足

    Error occurred during initialization of VM Could not reserve enough space for object heap Error: Cou ...

  7. Android EditText光标颜色 与inputType

    1.EditText有一个属性:android:textCursorDrawable,这个属性是用来控制光标颜色的   android:textCursorDrawable="@null&q ...

  8. 树链剖分+线段树+离线(广州网选赛第八题hdu5029)

    http://acm.hdu.edu.cn/showproblem.php?pid=5029 Relief grain Time Limit: 10000/5000 MS (Java/Others)  ...

  9. 从零打造在线网盘系统之Hibernate框架起步

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  10. 安装 sql server 2008出现重启电脑,另在server 2012 r2安装sql server 2008 安装不上

    时即使是进行电脑重启,也会报这个错误,那么就不是电脑的问题了,其实是系统注册表在作怪,解决方法如下: 1.开始-->运行,输入regedit,打开注册表管理器: 2. 找到 HKEY_LOCAL ...