zabbix通过orabbix和自定义脚本监控oracle数据库
zabbix通过orabbix和自定义脚本监控oracle数据库
原文地址http://www.iyunv.com/thread-94249-1-1.html
由于公司要上oracle数据库,需要对这个东西惊醒监控,于是去网上淘资料,发现有一个套件orabbix监控oracle的效果还不错,于是拿来试验了一下。orabbix是由JAVA写的一个套件,需要在oracle服务器上面安装JAVA环境才能运行。这里为了简便,可以使用yum -y install java来安装JAVA环境。
安装完java环境之后可以通过下面命令来检测是否安装成功:如我上面这样显示就证明java环境已经安装成功了。
之后,我们就需要在oracle服务器上面安装orabbix套件了,可以去官网下载,目前最新版本是1.2.3,下载地址为:http://www.smartmarmot.com/downloads/orabbix-1.2.3.zip
下载完之后将其解压到/opt目录下,接下来,需要配置orabbix的配置文件了。先将配置文件的模板复制一份出来,然后开始配置:
然后在oracle数据库中创建zabbix用户:
如果是Oracle 11g,则需要添加如下命令
复制orabbix启动文件到etc目录下:
启动orabbix
启动orabbix之后,没有报错,证明启动成功,如果有报错,一般是配置文件的问题,仔细排查一下应该就没问题。
启动之后,还需要安装上zabbix agentd客户端,至于怎样安装agentd客户端在我的另一篇博客中有介绍,这里就不赘述了。传送门在这里
安装完之后,将模板导入到zabbixserver中:
导入模版,模版放置在/opt/orabbix/template下
Orabbix_export_full.xml 全部导入(图表 监控项 触发器)
Orabbix_export_graphs.xml 图表
Orabbix_export_items.xml 监控项
Orabbix_export_triggers.xml 触发器
这里导入所有的模板,导入模版之后,将oracle主机添加进zabbixserver中,如下图所示
配置完之后,正常的话就能够监控oracle数据库的信息了。
下面是出图后的效果:
本来到这里就结束了,但是前面这些都不是重点,重点是后面同事需求监控oracle数据库的tablespace的使用量,于是,为了实现这个需求,我在原先的模板中进行了修改。,使用自动发现功能实现监控tablespace的使用情况。
首先,需要创建脚本,获取到oracle数据库中的数据,下面是脚本:
通过执行这个脚本可以获取到moracle数据库中的tablespace列表,并输出到/tmp/tablespace.log日志中去,这个执行脚本需要修改属主属组为oracle.oracle,并且需要给于执行权限,在crontab中设置每一分钟执行一次,下面是执行得到的结果:
上面就是取出来的数据,既然数据取出来了,那么剩下的要做的就是把数据弄到zabbix中去咯。
下面将使用下面两个脚本来对取出的这些数据进行格式化转换和取值:
这个脚本的功能是从tablespace.log文件中取出Name那一列,并进行JSON格式化输出(因为zabbix的自动发现功能获取的数据类型是JSON格式的),下面是执行效果:
还有一个脚本是获取tablespace.log中的最后三列数据,脚本内容如下:
其中maxmb和used取出的值是M,所以这里给转换成了byte,方便zabbix取值,下面是举例取出来的值:
这里配置完成之后就需要在zabbixagentd的配置文件中添加监控key了:
添加key之后需要重启zabbix agentd服务。
然后我们就需要在zabbixserver中添加监控模板了,首先创建一个发现规则:
其中的键值ora.tab.discovery就是我们在agentd的配置文件中定义的,由这个发现规则获取到的是一个JSON格式的返回值。要注意其中的数据更新间隔,这个值指的是你的发现规则执行的时间间隔,我这里暂时设置为60s
然后我们开始创建项目原型了,下面是创建的详细内容:
按照上面的项目原型依次创建{#TABLENAME}used和{#TABLENAME}autopercent,对应的键值是tablespace[{#TABLENAME},used]和tablespace[{#TABLENAME},autopercent],创建完发现规则后,开始创建图形原型了,下面是图形原型的详细内容:
保存完成后,该发现规则就做好了,之后等待大约一分钟之后就可以看到采集到的数据了,这和上面设定的60s的数据更新间隔是一致的。下面是获取到的监控tablespace的结果:
好了,监控tablespace的目标暂时实现了,具体的一些细节还有待改进。附件中将会附上我的根据官网模板修改后的模板,好了,结束了,希望该教程能够帮助到大家!
百度云附件:修改后的orabbix模板.xml