公司业务使用的是一直oracle数据库,老大要求监控表空间剩余大小并且当剩余过小时能够及时报警。刚想出来的方案是通过写脚本获取表空间的数据,通脚本中使用expect自动输入密码登陆oracle用户然后再登陆数据库查询数据返回给zabbix_server。但是由于脚本运行时间大概12秒左右,zabbix获取数据总是超时(只是个人理解,如果你有解决方法希望给我留言,谢谢)。在网上搜索中发现zabbix插件-orabbix,原理是通过orabbix登陆被监控主机oracle数据库,查询数据。个人认为非常好用,包括自定义监控项。唯一的麻烦就是需要在配置文件中添加每一个数据库服务器ip、数据库用户、密码。
本文主要讲述zabbix通过orabbix插件来监控Oracle。
Orabbix简介
Orabbix是设计用来为zabbix监控Oracle的数据库的插件,它提供多层次的监控,包括可用性和服务器性能的指标。
它提供了从众多Oracle实例采集的有效机制,进而提供此信息的监控和性能指标。然后,您可以利用的zabbix的报告功能为收集的所有数据,并提供分析。目前的发行版中包含了一组预先定义的模板,包括从初始部署报警和图形功能。然而,这些可以进行微调,以满足您额需求和数据/监控要求。
Orabbix监控的内容
1、数据库版本
2、归档日志与生产趋势
3、触发器,表/过程命中率
4、逻辑IO性能
5、物理IO性能
6、PGA
7、SGA
8、共享池
9、Session
10、数据库大小
11、自定义oracle监控项
实验环境:
操作系统:centos6.5
服务端:192.168.0.119
客服端(数据库):192.168.0.110
服务端操作:
一、安装jre。(确保有Java的环境)
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/
1 2 3 4 5 6 7 8 9 | # rpm -ivh jre-7u67-linux-x64.rpm Preparing... ########################################### [100%] 1:jre ########################################### [100%] Unpacking JAR files... rt.jar... jsse.jar... charsets.jar... localedata.jar... jfxrt.jar... |
补充:如果不想修改系统配置,我们可以直接下载java压缩包,加压到某个目录,然后修改/orabbix/run.sh脚本,在java前加上完整java路径,如:/usr/java/j2sdk/bin/java -Duser.language=en........(省略)
二、安装orabbix
下载地址:http://www.smartmarmot.com/product/orabbix/download/
1)在/opt创建目录创建orabbix文件。(原因:orabbix启动文件默认写在/opt/orabbix目录下,也可以修改一下orabbix启动脚本的路径,启动脚本是/orabbix/init.d/orabbix)
1 2 3 4 | #mkdir /opt/orabbix #mv orabbix-1.2.3.zip /opt/orabbix #cd /opt/orabbit #unzip orabbix-1.2.3.zip |
2)授予文件可执行的权限
1 | #chmod a+x /opt/orabbix -R |
3)创建一个名为config.props文件,有模板可以参考。
1 | #cp /opt/orabbix/conf/config.props.sample config.props |
4)修改confi.props配置文件,仅需修改如下内容即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # cat /opt/orabbix/conf/config.props |grep -v "#" 这里仅取没有注释的。 ZabbixServerList=ZabbixServer #zabbix名称 ZabbixServer.Address=192.168.0.119 #zabbix服务端的IP地址 ZabbixServer.Port=10051 #zabbix服务端的端口 OrabbixDaemon.PidFile=./logs/orabbix.pid OrabbixDaemon.Sleep=300 OrabbixDaemon.MaxThreadNumber=100 DatabaseList=twstcptest.com #这个名称可以随便起,但是必须跟监控的主机名保持一致(可以添加IP地址)。 DatabaseList.MaxActive=10 DatabaseList.MaxWait=100 DatabaseList.MaxIdle=1 twstcptest.com.Url=jdbc:oracle:thin:@192.168.0.110:1521:rdcms #这里主要是通过JDBC来连接客户端的。rdcms主要是数据库的实例名称。在客户端可以通过select instance_name from v$instance来得到实例的名称。 twstcptest.com.Password=zabbix #数据库用户密码 twstcptest.com.MaxActive=10 twstcptest.com.MaxWait=100 twstcptest.com.MaxIdle=1 twstcptest.com.QueryListFile=./conf/query.props #监控项定义文件,后面我们添加自定义监控项就是添加到此文件中 |
5)启动服务和查看进程
1 2 3 4 | #cp -a /opt/orabbix/init.d/orabbix /etc/init.d/orabbix #/etc/init.d/orabbix start Starting Orabbix service: # ps aux |grep orabbix |
客户端操作:
登录数据库并授予用户相关权限即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #su - oracle #sqlplus /nolog #conn /as sysdba create user zabbix identified by "zabbix" default tablespace system temporary tablespace temp profile default account unlock; grant alter session to zabbix; grant create session to zabbix; grant connect to zabbix; alter user zabbix default role all; grant select on v_$instance to zabbix; grant select on dba_users to zabbix; grant select on v_$log_history to zabbix; grant select on v_$parameter to zabbix; grant select on sys.dba_audit_session to zabbix; grant select on v_$lock to zabbix; grant select on dba_registry to zabbix; grant select on v_$librarycache to zabbix; grant select on v_$sysstat to zabbix; grant select on v_$parameter to zabbix; grant select on v_$latch to zabbix; grant select on v_$pagstat to zabbix; grant select on v_$sagstat to zabbix; grant select on v_$librarycache to zabbix; grant select on v_$process to zabbix; grant select on dba_data_files to zabbix; grant select on dba_temp_files to zabbix; grant select on dba_free_space to zabbix; grant select on v_$sysem_event to zabbix; |
服务端操作
1、导入模板。模板在/opt/orabbix/template.
Orabbix_export_full.xml 全部导入(图表 监控项 触发器)
Orabbix_export_graphs.xml 图表
Orabbix_export_items.xml 监控项
Orabbix_export_triggers.xml 触发器
2、添加主机(名字必须跟config.props里面定义的名称的配置保持一致)
3、关联模板
4、结果演示
Zabbix通过Orabbix监控Oracle实验就搭建完成了,有问题的可以留言。
补充:
自定义oracle监控项
所有的监控项都在/orabbix/conf/query.props中,我添加三个监控项为例,有两处需要添加:
1、在QueryList中添加键值,就是可以直接在zabbix web填写的键值。
2、数据库中可以直接执行的查询命令,注意键值后面要添加".Query",不需要“;”结尾。
如:robots_website_all.Query=select count(*) from robots_website
3、OK!服务器上配置完成,登陆zabbix web界面对主机新建监控项即可。
引用文章:http://www.iyunv.com/thread-25197-1-1.html
原文地址:http://pynliu.blog.51cto.com/5027391/1591820