使用Python脚本zabbix自定义key监控oracle连接状态

yipeiwu_com7年前Python基础

目的:此次实验目的是为了zabbix服务端能够实时监控某服务器上oracle实例能否正常连接

环境:1、zabbix_server  2、zabbix_agent(含有oracle)

主要知识点:

1、zabbix_get用法

2、python中cx_Oracle模块使用

------------------------------------------------------------------------------

1、zabbix_get用法

常用用法

zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] -k item-key

在我们zabbix_server端可以测试一个zabbix_agent端的key

正常情况下会返回一个结果

注:关于zabbix客户端有哪些key值,我们可以在客户端用zabbix_agentd -p命令查看

test为我自己创建的一个key

2、创建自定义Key

创建自定义key的方法相当简单

在我们客户端的zabbix_agentd.conf配置文件中加入几个参数就可以了

这是我加入的两行

1、UnsafeUserParameters参数有两个值1或0

0为禁用  1为开启

2、UserParameter=key名字,命令或脚本(用法)

加完配置后记得重启客户端进程!!

3、脚本的定义

这个步骤是最为核心的,所有你想实现的监控都可以在这步进行规划

此次我测试的是oracle实例的连接状态(能连或不能连)

代码如下

#-*- encoding: utf-8 -*-

import cx_Oracle
try:
 conn=cx_Oracle.connect('system/oracle@172.168.9.186:1521/orcl')
 c=conn.cursor()
 c.close()
 conn.close()
 print('1')
except cx_Oracle.DatabaseError,error:
 print('2')

其中需要用到一个cx_Oracle第三方模块

/post/167103.htm

我这里再提一点:

虽然我在单独运行脚本时是没有任何报错的,但是在我用zabbix_get进行测试的时候还是会有导入模块错误

这是由于客户端共享库链接没有做好

添加libclntsh.so.11.1所在的路径

在运行ldconfig命令生效你的配置

再次进行测试

到此基本都已经完成

剩下就是在web端添加此key的监控即可

4、web端添加监控

监控项创建完毕,我们进行触发器的创建。

至此,触发器已创建完毕(当返回值为2,也就是连不通的时候会触发告警)!

接下来我们自己可以进行测试

当我们关掉数据库监听

显然服务端收到的返回值是2

我们在来看看web端

看到web端已经有告警提示了

接下来我们把监听开起来

这时候web端已经提示问题已经解决!

此次实验至此已经全部完成。

总结

以上所述是小编给大家介绍的使用Python脚本zabbix自定义key监控oracle连接状态,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对【听图阁-专注于Python设计】网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

python 将list转成字符串,中间用符号分隔的方法

如下所示: data = [1,2,3,4] print "|".join(str(i) for i in data) 如果data中有中文: import sys reloa...

Python做简单的字符串匹配详解

Python做简单的字符串匹配详解  由于需要在半结构化的文本数据中提取一些特定格式的字段、数据辅助挖掘分析工作,以往都是使用Matlab工具进行结构化数据处理的建模,matl...

Flask SQLAlchemy一对一,一对多的使用方法实践

Flask-SQLAlchemy安装和建表操作请参考这里。 复制代码 代码如下:# Role表class Role(db.Model):    id=db...

python 判断是否为正小数和正整数的实例

python 判断是否为正小数和正整数的实例 实现代码: def check_float(string): #支付时,输入的金额可能是小数,也可能是整数 s = str(st...

python 解决flask uwsgi 获取不到全局变量的问题

问题 在写flask,使用uwsgi启动的时候,涉及到多request线程访问同一个全局变量,发现不能获取到全局变量的值的修改,这在flask独立启动的时候是没有问题的。 伪代码 全局变...