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

yipeiwu_com5年前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设计】网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

python3.5 email实现发送邮件功能

本文实例为大家分享了python3.5 email发送邮件的具体代码,供大家参考,具体内容如下 直接套用代码即可 from email.mime.text import MIMETe...

python查找指定文件夹下所有文件并按修改时间倒序排列的方法

代码如下: import os, glob, time def search_all_files_return_by_time_reversed(path, reverse=Tru...

python 定义类时,实现内部方法的互相调用

每次调用内部的方法时,方法前面加 self. 举例: 例子参考百度知道里面的回答 class MyClass: def __init__(self): pass de...

Python MySQL数据库连接池组件pymysqlpool详解

Python MySQL数据库连接池组件pymysqlpool详解

引言 pymysqlpool (本地下载)是数据库工具包中新成员,目的是能提供一个实用的数据库连接池中间件,从而避免在应用中频繁地创建和释放数据库连接资源。 功能 连接池本...

python不带重复的全排列代码

复制代码 代码如下:from sys import argvscript, start, end = argvvis = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...