zabbix使用pyora监控oracle数据库

前段时间使用Orabbix监控oracle数据库,发现可以实现对oracel数据库实行监控,但是最近部署Orabbix监控oracle数据库,发现始终无法获取到数据库的内容。。。。。。由于Orabbix是基于java实现的,使用的是jdbc连接oracle数据库,获取到的值传递给zabbix捕捉器来捕捉,这个过程我不是很熟悉。。。。。。始终无法调试出图来。。。最后终于放弃,寻找Orabbix的替代品。在zabbix官网找了一遍,发现使用python实现的pyora这个脚本还不错,最大的优势就是能够自定义自己想监控的相关参数,只需要修改脚本,在里面添加相关函数就行。pyora是通过python使用python的一个组件cx_Oracle来获取的,获取到的数据传递给zabbix的agent,从而获取到相关监控数据,这种方式比较简单,也比较容易扩展。pyora的缺点就是本身提供的监控item比较少,而且提供的模板是一个半成品模板,需要自己根据需要设计相应的模板,从而达到监控的目的。总体来说,pyora的特点就是简单,开源,易扩展,但是整体做的不是很完整。

好了,每篇博客的开头例行废话说完了,开始进入正题吧。

首先,我们需要下载pyora,我是在zabbix官网上面找到的github的链接,链接在这https://github.com/bicofino/Pyora 在本文的末尾我也将会将本文使用的一些工具什么的打包放在附件中供大家下载。

然而python需要安装cx_Oracle这个组件才能连接到数据库,安装cx_Oracle这个组件比较麻烦,我搞了差不多两个多小时才搞定,开始使用源码安装,结果安装不上去。。。一直解决不了报错。。。于是去找了rpm包来安装,由于我这里的oracle数据库的python版本是2.6的,所以下载了2.6对应的版本,并且这里支持的最新的oracle也只有11g,而我这里使用的是12c,当时还担心了好久,怕无法使用,后来证实11g的rpm包也是可以在12c的oracle数据库上面使用的,链接在这http://sourceforge.net/projects/cx-oracle/files/5.1.2/cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm/download 大家可以根据自己的需要下载相应的rpm包。

还需要下载两个python的组件,一个是argparse,还有一个是setuptools这两个包我都是到Python官网下载的,各位也可以去官网下载,当然我会在附件中打包上这两个附件目前的最新版。首先安装setuptools,然后再安装argparse,安装方式是使用源码安装,解压后进入目录,使用python setup.py install就可以安装了。

好了,前期准备工作做完了,接下来就需要安装cx_Oracle了,首先,在root用户下的.bashrc中添加oracle的环境变量,否则将导致无法使用cx_Oracle模块,下面是在用户中添加的环境变量:

tail -6 .bashrc 
# User specific aliases and functions
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

添加好环境变量之后,需要使其立即生效,使用命令source .bashrc来使其生效,注意export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib这条命令,刚开始的时候我没有添加后面的lib的环境变量,导致安装好cx_Oracle组件之后还是无法import这个组件,报错信息如下:

error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory

后来,将环境变量中添加了lib库该报错就消失了。接下来就是安装cx_Oracle组建了,使用rpm -ivh cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm就可以安装了,安装好后使用下面的操作看是否能够正常的import,下面是我的操作步骤,如果你的和我的一样没有异常输出,那么就没问题的:

python
Python 2.6.6 (r266:84292, Jan 22 2014, 01:49:05) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>>

安装好后就可以使用pyora脚本来获取值了,(PS:对了,在这之前,需要在oracle数据库中创建相应的监控用户)关于oracle数据库中添加相应的监控用户权限属于DBA的范畴了,我这里只会贴出一些参考的权限配置,相关配置各位可以和公司的DBA协商配置:

CREATE USER ZABBIX IDENTIFIED BY 123456  DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
     GRANT CONNECT TO ZABBIX;
     GRANT RESOURCE TO ZABBIX;
     ALTER USER ZABBIX DEFAULT ROLE ALL;
     GRANT SELECT ANY TABLE TO ZABBIX;
     GRANT CREATE SESSION TO ZABBIX;
     GRANT SELECT ANY DICTIONARY TO ZABBIX;
     GRANT UNLIMITED TABLESPACE TO ZABBIX;
     GRANT SELECT ANY DICTIONARY TO ZABBIX;

配置好环境后就可以使用pyora脚本实现监控oracle了,接下来需要执行pyora脚本来进行测试了。

在下载的pyora压缩包中含有pyora.py脚本,将其上传至客户端服务器,然后使用python pyora.py --username zabbix --password 123456 --address 127.0.0.1 --database xxx show_users来测试是否能够获取到正常数据,下面是我执行的结果:

{"data": [{"{#DBUSER}": "ANONYMOUS"}, {"{#DBUSER}": "APPQOSSYS"}, {"{#DBUSER}": "ASYNC"}, {"{#DBUSER}": "AUDSYS"}, {"{#DBUSER}": "DBSNMP"}, {"{#DBUSER}": "DIP"}, {"{#DBUSER}": "GSMADMIN_INTERNAL"}, {"{#DBUSER}": "GSMCATUSER"}, {"{#DBUSER}": "GSMUSER"}, {"{#DBUSER}": "OJVMSYS"}, {"{#DBUSER}": "ORACLE_OCM"}, {"{#DBUSER}": "OUTLN"}, {"{#DBUSER}": "SYNC"}, {"{#DBUSER}": "SYS"}, {"{#DBUSER}": "SYSBACKUP"}, {"{#DBUSER}": "SYSDG"}, {"{#DBUSER}": "SYSKM"}, {"{#DBUSER}": "SYSTEM"}, {"{#DBUSER}": "WMSYS"}, {"{#DBUSER}": "XDB"}, {"{#DBUSER}": "XS$NULL"}, {"{#DBUSER}": "ZABBIX"}]}

获取的是json格式的数据,证明这个脚本是可以正常运行的,然后我们需要创建zabbix用户,然后再安装agnetd(关于这部分我就不多介绍了,前面博客写了很多。)然后修改zabbix用户的环境变量,编辑zabbix用户家目录下的.bashrc将上面的环境变量添加进去并source .bashrc使环境变量生效。

之后再使用zabbix用户重复一次执行上面的获取数据的步骤,测试能够获取数据的话就说明没问题了,在agentd的配置文件中写入如下配置,以执行这个脚本获取到监控的数据:

tail -2 /home/zabbix/zabbix/etc/zabbix_agentd.conf
UserParameter=pyora[*],/usr/bin/python /home/zabbix/zabbix/scripts/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8

保存后重启agentd,然后再在server端使用zabbix_get测试能否获取到数据,测试结果如下:

/opt/software/zabbix/bin/zabbix_get -s xx.xx.xx.xx -k"pyora[zabbix,123456,127.0.0.1,xxx,show_users]"
{"data": [{"{#DBUSER}": "ANONYMOUS"}, {"{#DBUSER}": "APPQOSSYS"}, {"{#DBUSER}": "ASYNC"}, {"{#DBUSER}": "AUDSYS"}, {"{#DBUSER}": "DBSNMP"}, {"{#DBUSER}": "DIP"}, {"{#DBUSER}": "GSMADMIN_INTERNAL"}, {"{#DBUSER}": "GSMCATUSER"}, {"{#DBUSER}": "GSMUSER"}, {"{#DBUSER}": "OJVMSYS"}, {"{#DBUSER}": "ORACLE_OCM"}, {"{#DBUSER}": "OUTLN"}, {"{#DBUSER}": "SYNC"}, {"{#DBUSER}": "SYS"}, {"{#DBUSER}": "SYSBACKUP"}, {"{#DBUSER}": "SYSDG"}, {"{#DBUSER}": "SYSKM"}, {"{#DBUSER}": "SYSTEM"}, {"{#DBUSER}": "WMSYS"}, {"{#DBUSER}": "XDB"}, {"{#DBUSER}": "XS$NULL"}, {"{#DBUSER}": "ZABBIX"}]}

证明没有问题了,然后需要在zabbix_server的web端添加模板,这个模板在下载的pyora压缩包里面有一个半成品的模板,这个模板是个不完整的半成品,需要自己完成剩下的配置我这里稍后也会打包放上我这边进行部分修改后的模板上来。

添加主机并添加模板,这时候需要注意,因为这个模板中使用了宏变量,所以我们在添加主机的时候需要设定相应的宏变量,下面是我设定宏变量的截图:

设定好宏之后,等待一段时间(ps:一般5到十分钟就能够正常的产生数据了),下面是获取到的监控数据的截图:

好了,至此,简单的oracle监控已经结束了,至于更多的监控需求,各位可以依据自己的需求进行适当的修改脚本,以达到各位的要求。

时间: 2024-08-24 11:47:21

zabbix使用pyora监控oracle数据库的相关文章

Zabbix通过Orabbix监控Oracle数据库

一.背景 公司业务使用的是一直Oracle数据库,因为多次出现表空间满的时候不能及时发现,每次都是业务组的人员通知处理,这样下来DBA这边就比较被动,所以老大要求监控表空间剩余大小并且当剩余过小时能够及时报警.刚想出来的方案是通过写脚本获取表空间的数据,通脚本中使用expect自动输入密码登陆oracle用户然后再登陆数据库查询数据返回给zabbix_server.但是由于脚本运行时间大概12秒左右,zabbix获取数据总是超时,在网上搜索中发现zabbix插件orabbix,原理是通过orab

zabbix 监控 oracle 数据库

一.简介 Orabbix 是设计用来为 zabbix 监控 Oracle 数据库的插件,它提供多层次的监控,包括可用性和服务器性能指标. 它提供了从众多 Oracle 实例采集数据的有效机制,进而提供此信息的监控和性能指标.然后,您可以利用的 zabbix 的报告功能为收集的所有数据,并提供分析.目前的发行版中包含了一组预先定义的模板,包括从初始部署警报和图形功能.然而,这些可以进行微调,以满足您的需求和数据/监控要求. Orabbix 监控什么? 数据库版本 归档日志与生产趋势分析 触发器,表

zabbix通过orabbix和自定义脚本监控oracle数据库

由于公司要上oracle数据库,需要对这个东西惊醒监控,于是去网上淘资料,发现有一个套件orabbix监控oracle的效果还不错,于是拿来试验了一下.orabbix是由JAVA写的一个套件,需要在oracle服务器上面安装JAVA环境才能运行.这里为了简便,可以使用yum -y install java来安装JAVA环境. 安装完java环境之后可以通过下面命令来检测是否安装成功: [[email protected] ~]# java -version java version "1.7.0

使用Zabbix监控Oracle数据库

Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabbix/ 从部署架构图上可以看出,orabbix是通过JDBC去连接被监控数据库的,其实不是必须在数据库主机上安装Agent,而运行orabbix的主机,可以是Zabbix Server,也可以是数据库主机和zabbix server之外的任意一台主机,为了测试方便,我们将orabbix安装在Zabb

在zabbix下面使用ODBC 监控oracle数据库(11.2.0.3)和mysql数据库

1,监控mysql数据库1)安装ODBCyum -y install unixODBC unixODBC-develyum install mysql-connector-odbc 2)odbcinst -j 查看配置文件unixODBC 2.2.14DRIVERS............: /etc/odbcinst.iniSYSTEM DATA SOURCES: /etc/odbc.iniFILE DATA SOURCES..: /etc/ODBCDataSourcesUSER DATA S

orabbix监控oracle数据库

orabbix监控oracle数据库 1 下载 下载地址: http://www.smartmarmot.com/product/orabbix/download/ 2 授予文件可执行的权限 #chmod +x /opt/orabbix -R #chmod +x /opt/orabbix/run.sh 3 创建一个名为config.props文件,有模板可以参考. #cp /opt/orabbix/conf/config.props.sample config.props 下面是我的一个配置:

zabbix利用orabbix监控oracle

Orabbix 是一个用来监控 Oracle 数据库实例的 Zabbix 插件.(插件安装在zabbix-server端) 下载地址:http://www.smartmarmot.com/product/orabbix/download/ zabbix-server上操作 Orabbix是通过JDBC去连接oracle数据库,然后过滤想要的数据,所以需要jdk环境 我测试过jdk1.7和1.8都可以,直接yum安装,或者下载rpm包,rpm -ivh安装,都可以 这里,我是直接rpm安装的, 1

8个DBA最常用的监控Oracle数据库的常用shell脚本

本文介绍了8个常用的监控数据shell脚本.首先回顾了一些DBA常用的Unix命令,以及解释了如何通过Unix Cron来定时执行DBA脚本.网上也有好多类似的文章,但基本上都不能正常运行,花点时间重新整理了下,以后就能直接使用了. 一.同时文章还介绍了8个重要的脚本来监控Oracle数据库: 1.检查实例的可用性 2.检查监听器的可用性 3.检查alert日志文件中的错误信息 4.在存放log文件的地方满以前清空旧的log文件 5.分析table和index以获得更好的性能 6.检查表空间的使

监控Oracle数据库的常用shell脚本-转

8个DBA最常用的监控Oracle数据库的常用shell脚本--转 分类: Linux 一.8个重要的脚本来监控Oracle数据库: 1.检查实例的可用性 2.检查监听器的可用性 3.检查alert日志文件中的错误信息 4.在存放log文件的地方满以前清空旧的log文件 5.分析table和index以获得更好的性能 6.检查表空间的使用情况 7.找出无效的对象 8.监控用户和事务 二.DBA需要的Unix基本知识 基本的UNIX命令,以下是一些常用的Unix命令: ps--显示进程 grep-