使用nagios+python监控nginx进程数
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进程数的更多相关文章
- shell习题第13题:监控nginx进程
[题目要求] 在服务器上写一个脚本,要求如下 1. 每隔10秒去检查而一次服务器上的nginx进程数,如果>=500的时候,就需要自动重启一下nginx服务,并检测启动是否成功 2. 如没有正常 ...
- Python 监控nginx服务是否正常
Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True ...
- zabbix监控nginx进程
确认nginx有没有安装模块 然后在主站点下添加(二级站点) location /NginxStatus { stub_status on; access_log off; allow 127.0.0 ...
- 阿里云自定义监控tomcat进程数
阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口:自定义监控SDK(python版) :c ...
- nginx-rrd监控nginx访问数
一 .查看已安装的nginx是否包含stub_status模块 /usr/local/nginx/sbin/nginx -V nginx version: Nginx/1.2.0 configure ...
- Nagios监控nginx服务具体过程
1在nginx 服务器上安装nrpe客户端: Nginx的服务须要监控起来.不然万一down了而不及时修复,会影响web应用.例如以下web应用上面启动的nginx后台进程[root@lb-net-2 ...
- ubuntu下修改nginx的进程数
1. 进入nginx配置文件:vim /etc/nginx/nginx.conf2. 将events下的worker_processes 修改为 你希望的数字,保存文件并退出3. 重启nginx: s ...
- zabbix监控Nginx模板
前提条件: nginx模块安装了http_stub_status_module和nginx_upstream_check_module: 在nginx的配置文件中配置上: location /stat ...
- 让keepalived监控NginX的状态
经过前面的配置,如果主服务器的keepalived停止服务,从服务器会自动接管VIP对外服务:一旦主服务器的keepalived恢复,会重新接管VIP. 但这并不是我们需要的,我们需要的是当NginX ...
随机推荐
- 关于C#我今天的六个小时
嘿嘿,今天周六啦,我们是自由学习啦,于是还记得前几天纠结的事情,还有好多不太熟悉的题目那,于是今天就找出来练习下拉,而且这些题目在老师给我们复习时间也给我们讲解过啦,这样一来应该做起来还是容易点的啦, ...
- Thinkphp 图形验证码无法显示
不显示验证码的代码: public function verify(){ $verify = new \Think\Verify(); $verify->entry(); } 修改为: publ ...
- Hadoop DBOutputFormat的使用
最近在研究数据在HDFS和关系型数据库之间的迁移,主要使用了两种方式:一是,按照数据库要求的文件格式生成文件,然后由数据库提供的导入工具进行导入:二是采用JDBC的方式进行导入.MapReduce默认 ...
- Kotlin——初级篇(一):最详细的环境搭建
众所周知,Kotlin出来已经良久了.Kotlin有着众多优势,不管是用于Android开发中,还是Java开发,都能缩减很大的代码量,大大提高了工作效率.而小生本人也是才从忙碌的个工作中抽身出来,有 ...
- 百度地图API功能
984aca5bc78b070e59f34e230f11cf6d http://api.map.baidu.com/api?v=2.0&ak=您的密钥" <html> & ...
- 【BZOJ3631】松鼠的新家 树链剖分
BZOJ3631 松鼠的新家 Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他 ...
- supervisor 配置篇
1,配置管理进程 进程管理配置参数,不建议全都写在supervisord.conf文件中,应该每个进程写一个配置文件放在include指定的目录下包含进supervisord.conf文件中. 1&g ...
- JS事件监听的添加方法
一. 我们一般在的事件添加时是这样做的: elm.onclick = function( ) { //handler } 这样的写法兼容主流的浏览器,但是存在一个问题,当同一个elm绑定多个事件时,只 ...
- Sublime 取消每次自动更新弹窗设置
首选项 --> 设置-用户(英文版 : "Preferences - -> "Settings - user"") update_check ...
- CH0601 Genius ACM【倍增】【归并排序】
0601 Genius ACM 0x00「基本算法」例题 描述 给定一个整数 M,对于任意一个整数集合 S,定义“校验值”如下: 从集合 S 中取出 M 对数(即 2∗M 个数,不能重复使用集合中的数 ...