首页 > 代码库 > zabbix监控Oracle

zabbix监控Oracle

       公司业务使用的是一直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.User=zabbix      #数据库用户
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

zabbix监控Oracle