写这段脚本不是为了别的,只是自己熟练掌握类的操作 另外还熟释一些函数,那么zabbix监控mysql,其中涉及到了一些计算,在配置文件不能进行计算,我觉得不太可能,所以写了这么一段脚本,功能得实现,因为知识面有限,后面遇到再继续优化吧,贴上代码如下:
python">
#!/usr/bin/env python
#coding=utf-8
import sys
import os
import commands
class QpsTps(object):
def __init__(self):
self.QPS = ''
self.TPS = ''
def getQps(self):
(Queries,QPS_result) = commands.getstatusoutput("mysqladmin -uroot -p123456 extended-status | grep 'Queries' | cut -d'|' -f3")
self.QPS = int(QPS_result)
return self.QPS
def getTps(self):
(Com_commit,cm_result) = commands.getstatusoutput("mysqladmin -uroot -p123456 extended-status | grep 'Com_commit' | cut -d'|' -f3 ")
(Com_rollback,rb_result) = commands.getstatusoutput("mysqladmin -uroot -p123456 extended-status | grep 'Com_rollback' | cut -d'|' -f3 | awk 'NR==1'")
self.TPS = int(cm_result) + int(rb_result)
return self.TPS
class error_out(object):
def error_print(self):
'''代入值少输,输出错误'''
print 'Usage : ' + sys.argv[0] + ' MysqlStatusKey '
sys.exit(1)
class Main(object):
def main(self):
if len(sys.argv) == 1:
error = error_out()
error.error_print()
elif sys.argv[1] == 'QPS':
a = QpsTps()
print a.getQps()
elif sys.argv[1] == 'TPS':
a = QpsTps()
print a.getTps()
if __name__ == '__main__':
main_obj = Main()
main_obj.main()
将代码上传至系统,赋值权限,在zabbix的mysql配置文中加入:
UserParameter=mysql.QPS,python /usr/local/zabbix/scripts/get_qps_tps.py QPS
UserParameter=mysql.TPS,python /usr/local/zabbix/scripts/get_qps_tps.py TPS
服务端取值测试:
# /usr/local/zabbix/bin/zabbix_get -s 10.16.1.68 -p 10050 -k"mysql.QPS"
1783724
# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -p 10050 -k"mysql.QPS"
3695982
# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -p 10050 -k"mysql.TPS"
278279