目的:此次实验目的是为了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脚本开发 zabbix自定义脚本_zabbix脚本开发

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

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

zabbix脚本开发 zabbix自定义脚本_python_02

test为我自己创建的一个key

 

2、创建自定义Key

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

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

zabbix脚本开发 zabbix自定义脚本_zabbix脚本开发_03

这是我加入的两行

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第三方模块

安装方法可以看

我这里再提一点:

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

zabbix脚本开发 zabbix自定义脚本_数据库_04

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

zabbix脚本开发 zabbix自定义脚本_数据库_05

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

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

 再次进行测试

zabbix脚本开发 zabbix自定义脚本_数据库_06

到此基本都已经完成

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

 

4、web端添加监控

zabbix脚本开发 zabbix自定义脚本_python_07

 

zabbix脚本开发 zabbix自定义脚本_zabbix脚本开发_08

 

zabbix脚本开发 zabbix自定义脚本_运维_09

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

zabbix脚本开发 zabbix自定义脚本_python_10

zabbix脚本开发 zabbix自定义脚本_python_11

zabbix脚本开发 zabbix自定义脚本_运维_12

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

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

当我们关掉数据库监听

zabbix脚本开发 zabbix自定义脚本_数据库_13

zabbix脚本开发 zabbix自定义脚本_zabbix脚本开发_14

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

我们在来看看web端

zabbix脚本开发 zabbix自定义脚本_python_15

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

接下来我们把监听开起来

zabbix脚本开发 zabbix自定义脚本_运维_16

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

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