文档章节

nagios插件check_mysql_qps

jastme
 jastme
发布于 2014/07/04 14:37
字数 412
阅读 508
收藏 2
点赞 0
评论 0
#!/usr/bin/python
# -*- coding:utf-8 -*-
from optparse import OptionParser
import subprocess,sys
from datetime import datetime
"""
    Nagios plugin to report the mysql QPS
    by jastme
"""

try:
    f=open('/usr/local/nagios/etc/qps.txt')
except IOError:
    f=open('/usr/local/nagios/etc/qps.txt','w')
    print 'wait next check,initialize the date'
finally:	
    f.close()

try:
    f1=open('/usr/local/nagios/etc/time.txt')
except IOError:
    f1=open('/usr/local/nagios/etc/time.txt','w')
    print 'wait next check,initialize the date'
finally:    
    f1.close()

parser = OptionParser(usage="%prog -w <warning threshold> -c <critical threshold> [ -h ]\n\nBefore use the script,please execute 'grant usage on *.* to monitor@'127.0.0.1' identified by 'monitor';\nflush privileges",version="%prog ")

parser.add_option("-w", "--warning",action="store", type="string", dest="warn_threshold", help="Warning threshold in percentage")

parser.add_option("-c", "--critical",action="store", type="string", dest="crit_threshold", help="Critical threshold in percentage")

(options, args) = parser.parse_args()

def QPS():
    '''mysql qps'''
    d=time_delay()
    fff=open('/usr/local/nagios/etc/qps.txt','r')
    qpsbefore=fff.read()
    fff.close()
    now=subprocess.Popen('''mysql -umonitor -pmonitor -h 127.0.0.1 -e "show global status like 'Questions'" | awk 'NR==2{print $2}' ''',shell=True,stdout=subprocess.PIPE)
    now.wait()
    qpsnow=now.communicate()[0][:-1]
    if qpsbefore=='':
        fffw=open('/usr/local/nagios/etc/qps.txt','w')
        fffw.write(qpsnow)
        fffw.close()
    else:
        mysqlqps=(int(qpsnow)-int(qpsbefore))/int(d)
        fffw=open('/usr/local/nagios/etc/qps.txt','w')
        fffw.write(qpsnow)
        fffw.close()
        return mysqlqps
    
def time_delay():
    '''Compute the time difference'''
    time_now=datetime.now()
    ff=open('/usr/local/nagios/etc/time.txt','r')
    time_before_str=ff.read()
    ff.close()
    if time_before_str=='':
        ffw=open('/usr/local/nagios/etc/time.txt','w')
        ffw.write(str(time_now))
        ffw.close()
    else:
        time_before=datetime.strptime(time_before_str,"%Y-%m-%d %H:%M:%S.%f")
        delay=(time_now-time_before).seconds
        ffw=open('/usr/local/nagios/etc/time.txt','w')
        ffw.write(str(time_now))
        ffw.close()
        return delay
    
def jastme():
    q=QPS()
    if not options.crit_threshold:
        print "UNKNOWN: Missing critical threshold value."
        sys.exit(3)
    if not options.warn_threshold:
        print "UNKNOWN: Missing warning threshold value."
        sys.exit(3)

    if q==None:
        print 'wait next check,initialize the date'
        sys.exit(3)

    elif int(q) >= int(options.crit_threshold):
        print 'Criticl,The QPS is %s | QPS=%stimes;%s;%s;0' %(q,q,options.warn_threshold,options.crit_threshold)
        sys.exit(2)
    
    elif int(options.crit_threshold) > int(q) >= int(options.warn_threshold):
        print 'Warning,The QPS is %s | QPS=%stimes;%s;%s;0' %(q,q,options.warn_threshold,options.crit_threshold)
        sys.exit(1)

    else:
        print 'OK,The QPS is %s | QPS=%stimes;%s;%s;0' %(q,q,options.warn_threshold,options.crit_threshold)
        sys.exit(0)

if __name__ == '__main__':
    jastme()


© 著作权归作者所有

共有 人打赏支持
jastme
粉丝 35
博文 125
码字总数 59916
作品 0
成都
程序员
nagios添加主机和写mysql插件

在nagios服务器上添加监控的主机及服务: Nagios配置文件: [root@a etc]# cd objects/ [root@a objects]# ls commands.cfg(定义监控命令) localhost.cfg(定义监控什么) switch.cfg(定义...

技术小阿哥
2017/11/27
0
0
第 20 章 Nagios

目录 20.1. Install 20.2. nagios 20.3. nrpe node 20.4. 配置 Nagios 20.5. 配置监控设备 20.6. Nagios Plugins 20.7. FAQ homepage: http://www.nagios.org/ Nagios 是一种开放源代码监视软......

玄学酱
01/01
0
0
Nagios安装与配置详解

Nagios安装与配置详解 Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息 。 搭建Nagios也不是什么难的是,下面...

Tanton008
2012/12/11
0
0
icinga2 check_mysql_health插件

icinga2 checkmysqlhealth插件 https://labs.consol.de/nagios/checkmysqlhealth/ # tar zxfv checkmysqlhealth-2.2.2.tar.gz # cd checkmysqlhealth-2.2.2 # ./configure # make # make ins......

yangzhimingg
2017/10/31
0
0
Nagios+NSClient+nrpe环境搭建

Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,...

Cinyann
2017/06/22
0
0
nagios监控mysql(check_mysql)及内存使用率(check_mem)

一、监控本地(localhost)内存 1、上传监控脚本 check_mem 到/usr/local/nagios/libexec # chown -R nagios.nagios check_mem chmod +x check_mem 2、修改commands配置 # vim /usr/local/n......

nmshuishui
2014/09/16
0
0
RedHat6.5上部署Nagios

部署环境:系统,RedHat 6.5;组件,Nagios; 部署前准备:关闭Selinux,和防火墙(/etc/init.d/iptables stop);获取相关软件包。 (包括gd-devel mysql-server openssl-devel xinetd;等) 具...

YLSL2014
07/04
0
0
监控利器Nagios之一:监控本地NFS和外部HTTP、MySQL服务

监控利器Nagios之一:监控本地NFS和外部HTTP、MySQL服务 Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务...

于学康
2017/06/20
0
0
Nagios详解(基础、安装、配置文件解析及监控实例)

一、Nagios基础 1.简介 Nagios是一款开源网络监视工具。 可监控网络服务(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH、PING~~~)、监控主机资源、根据需求设置相关插件监控、通过Ema...

卡子火
2017/01/23
0
0
开源监控利器nagios实战(二)

开源监控利器nagios实战 作者:田逸([email]sery@163.com[/email]) from: [url]http://net.it168.com/a2009/0309/267/000000267878.shtml[/url] (5)、定义服务配置文件 services.cfg defin......

sery
2009/03/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
6分钟前
0
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
11分钟前
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
49分钟前
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0
将博客搬至CSDN

AHUSKY
今天
1
0
Python web框架Django学习(1)

1.Django简介 (1)Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django是一个开放源代码的Web应用框架,由Python写成。 (2...

十年磨一剑3344
今天
0
0
Databook-数据之书

Databook-数据之书 用于数据分析的Jupyter Notebooks。 不需购买服务器,快速开始自己的数据分析过程。 源码:https://github.com/openthings/databook 作者:openthings,https://github.co...

openthings
今天
7
0
Python PIPEs

https://www.python-course.eu/pipes.php https://www.tutorialspoint.com/python/os_pipe.htm

zungyiu
今天
1
0
gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
今天
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部