zoukankan      html  css  js  c++  java
  • 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安装的,

    [root@zabbix ~]# rpm -ivh jdk-8u102-linux-x64.rpm
    
    Preparing...                ########################################### [100%]
    
       1:jdk1.8.0_102           ########################################### [100%]
    

    在/opt目录下新建一个orabbix目录:

     [root@oracle orabbix]#mkdir -p /opt/orabbix
    

    (建议在此目录下,如果放置其他目录稍后需要更改orabbix的启动文件orabbix,启动文件默认写在opt/orabbix目录下 )

    [root@zabbix opt]# cd orabbix/

    上传orabbix-1.2.3.zip

    [root@zabbix orabbix]# ls
    
    orabbix-1.2.3.zip
    
    解压
    
    [root@zabbix orabbix]# unzip -q orabbix-1.2.3.zip
    
    [root@zabbix orabbix]# ls
    
    conf  init.d       lib      orabbix-1.2.3.zip  orabbixw.exe  run.sh    uninstall.cmd
    
    doc   install.cmd  orabbix-1.2.3.jar  orabbix.exe        run.bat       template
    
    授权
    
    [root@zabbix orabbix]# cd ..
    
    [root@zabbix opt]# chmod -R a+x orabbix/
    
    [root@zabbix ~]# cd /opt/orabbix/conf/
    
    [root@zabbix conf]# ls
    
    config.props    log4j.properties    query_a_1.props  query_b.props     query.props
    
    config.props.sample  log4j.properties.sample  query_a.props  query - Copy.props  query.props.sample
    
    [root@zabbix conf]# cp config.props.sample config.props
    

    编辑配置文件:

    [root@zabbix conf]# vim config.props

    源配置文件

    [root@zabbix conf]# egrep "^[a-Z,1-9]" config.props.sample
    
    ZabbixServerList=ZabbixServer1,ZabbixServer2
    
    ZabbixServer1.Address=IP_ADDRESS_OF_ZABBIX_SERVER
    
    ZabbixServer1.Port=PORT_OF_ZABBIX_SERVER
    
    ZabbixServer2.Address=IP_ADDRESS_OF_ZABBIX_SERVER
    
    ZabbixServer2.Port=PORT_OF_ZABBIX_SERVER
    
    OrabbixDaemon.PidFile=./logs/orabbix.pid
    
    OrabbixDaemon.Sleep=300
    
    OrabbixDaemon.MaxThreadNumber=100
    
    DatabaseList=DB1,DB2,DB3
    
    DatabaseList.MaxActive=10
    
    DatabaseList.MaxWait=100
    
    DatabaseList.MaxIdle=1
    
    DB1.Url=jdbc:oracle:thin:@server.domain.example.com:<LISTENER_PORT>:DB1
    
    DB1.User=zabbix
    
    DB1.Password=zabbix_password
    
    DB1.MaxActive=10
    
    DB1.MaxWait=100
    
    DB1.MaxIdle=1
    
    DB1.QueryListFile=./conf/query.props
    
    DB2.Url=jdbc:oracle:thin:@server2.domain.example.com:<LISTENER_PORT>:DB2
    
    DB2.User=zabbix
    
    DB2.Password=zabbix_password
    
    DB2.QueryListFile=./conf/query.props
    
    DB3.Url=jdbc:oracle:thin:@server3.domain.example.com:<LISTENER_PORT>:DB3
    
    DB3.User=zabbix
    
    DB3.Password=zabbix_password
    
    DB3.QueryListFile=./conf/query.props
    

    修改之后

    [root@zabbix conf]# egrep "^[a-Z,1-9]" config.props
    
    ZabbixServerList=ZabbixServer1   #(zabbixserver的名字,下行中address和port都引用到了这个名字,所以下面两行的前缀名字要与这里的名字保持一致)
    
    ZabbixServer1.Address=127.0.0.1    #我这里就是在zabbix server上面操作的,所以这里是127.0.0.1
    
    ZabbixServer1.Port=10051   #zabbix server的服务端口
    
    OrabbixDaemon.PidFile=./logs/orabbix.pid
    
    OrabbixDaemon.Sleep=300
    
    OrabbixDaemon.MaxThreadNumber=100
    
    DatabaseList=172.20.10.183-oracle,192.168.56.99-oracle   #这里很重要,跟下面的对应上
    
    DatabaseList.MaxActive=10
    
    DatabaseList.MaxWait=100
    
    DatabaseList.MaxIdle=1
    
    172.20.10.183-oracle.Url=jdbc:oracle:thin:@172.20.10.183:1521:orcl      #172.20.10.183 oracle数据库的地址,1521端口,orcl数据库实例名
    
    172.20.10.183-oracle.User=zabbix      #授权的账号
    
    172.20.10.183-oracle.Password=zabbix   #授权的密码
    
    172.20.10.183-oracle.MaxActive=10
    
    172.20.10.183-oracle.MaxWait=100
    
    172.20.10.183-oracle.MaxIdle=1
    
    172.20.10.183-oracle.QueryListFile=./conf/query.props    #要查询的语句都在这定义的,不满意自己改
    

    oracle主机上操作

    下面是oracle 11g的(12c 语法不一样)授权语句如下,创用户,授权,这些操作,我都是在oracle数据库的sqlplus下执行的

    [oracle@oracle ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 11.2.0.3.0 Production on Wed Sep 7 18:01:54 2016
    
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> CREATE USER ZABBIX IDENTIFIED BY zabbix DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; 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; GRANT SELECT ON V_$SESSION TO ZABBIX; GRANT SELECT ON V_$SYSTEM_EVENT TO ZABBIX; GRANT SELECT ON V_$EVENT_NAME TO ZABBIX; GRANT SELECT ON V_$RECOVERY_FILE_DEST TO ZABBIX;

    启动orabbix

    [root@zabbix orabbix]# cp init.d/orabbix /etc/init.d/
    
    [root@zabbix orabbix]# ll /etc/init.d/orabbix
    
    -rwxr-xr-x 1 root root 1693 Sep 14 21:40 /etc/init.d/orabbix
    
    [root@zabbix orabbix]# /etc/init.d/orabbix start
    
    Starting Orabbix service:

    centos7系统可以加入systemctl服务

    [root@cn-hongkong ~]# cat /usr/lib/systemd/system/orabbix.service 
    [Unit]
    Description=Orabbix
    After=network.target
    [Service]
    Type=forking
    Restart=on-failure
    PIDFile=/opt/orabbix/orabbix/logs/orabbix.pid
    ExecStart=/opt/orabbix/orabbix/init.d/orabbix start
    ExecReload=/opt/orabbix/orabbix/init.d/orabbix restart
    ExecStop=/opt/orabbix/orabbix/init.d/orabbix stop
    PrivateTmp=true
    [Install]
    WantedBy=multi-user.target

    报错的话,检查配置文件,数据库地址,端口,实例名,账号,密码是否正确,需要验证对于不懂oracle的怎么办,搜命令呗,我也是一路过来,各种坑~~~~~

    然后里面看日志

    [root@zabbix orabbix]# tailf /opt/orabbix/logs/orabbix.log

     [main] INFO  Orabbix - --------- on Database -> orcl

     [pool-1-thread-1] WARN  Orabbix - Error while executing ->dbversion- on database ->172.20.10.183-oracle- Exception received ORA-24247: network access denied by access control list (ACL)

    ORA-06512: at "SYS.UTL_INADDR", line 4

    ORA-06512: at "SYS.UTL_INADDR", line 35

    ORA-06512: at line 1

    出现这些日志,不影响后面的操作,如果你是完美主义者,满足你

    在oracle数据库的sqlplus下执行下面三条命令

    exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description =>'resolve acl', principal =>'ZABBIX', is_grant => true, privilege =>'resolve');
    
    exec dbms_network_acl_admin.assign_acl(acl=> 'resolve.xml', host =>'*');
    
    commit;

    到此,安装配置完成,则通过web页面访问监控界面直接导入模板即可

    模版放置在/opt/orabbix/template下
    Orabbix_export_full.xml   #只需要导入这个一个模板就好

     

    添加主机(注意host name 要和conf.props文件中指定的DatabaseList一致

     

    然后链接oracle的模板

     

    添加完成之后的效果

    查看最新数据

     

    这时候图也有了

     

    常见错误

    [root@zabbix orabbix]# tailf /opt/orabbix/logs/orabbix.log

     [main] ERROR Orabbix - Error on Configurator for database 172.20.10.183 oracle -->ORA-01017: invalid username/password; logon denied

    config.props配置文件中,数据库账号密码不对,或者在oracle数据库没授权这个用户。

    ORA-28040: No matching authentication protocol这个错误

    解决:在Oracle用户(不是grid用户)下,将$ORACLE_HOME/network/admin/sqlnet.ora文件原来的SQLNET.ALLOWED_LOGON_VERSION=8注释掉(如果没有sqlnet.ora文件,那么就创建一个),修改为如下的行:

    SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
    
    SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
    
    不用重启数据库或者监听,也不用重启应用。
    

    1.orabbix配置文件出现异常,首先需要清楚每个参数的含义,然后再进行配置;
    2.数据无法获取(通过查看orabbix的日志文件可以看到报错),orabbix查询oracle数据库的用户权限不够,需要授予足够的权限;
    3.zabbix界面无法得到数据,如果可以确保上面一项是可以从数据库中获得数据的话,则需要查看conf.props文件中指定的DatabaseList是否正确(必须是zabbix控制台上的主机名)。

    补充:

        自定义oracle监控项

        所有的监控项都在/orabbix/conf/query.props中,添加新监控项为例,有两处需要添加:

        1、在QueryList中添加键值,就是可以直接在zabbix web填写的键值。

       2、数据库中可以直接执行的查询命令,注意键值后面要添加".Query",不需要“;”结尾。

    如:all_tables.Query=select count(*) from all_all_tables

        3、OK!服务器上配置完成,登陆zabbix web界面对主机新建监控项即可。

    zabbix4.0版本相应安装包:https://github.com/hejianlai/Zabbix

  • 相关阅读:
    Eclipse启动Tomcat报错,系统缺少本地apr库
    Linux(Debian)下Maven的安装
    Debian ls 文件 文件夹颜色显示
    Mybatis3.0防止SQL注入
    MySql初始配置
    文档在线预览开源实现方案一:OpenOffice + SwfTools + FlexPaper
    Java多线程的信号量
    判断线程池中的线程是否全部执行完毕
    一个简单的死锁
    使用并发来提高数据抓取的效率
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/8886181.html
Copyright © 2011-2022 走看看