使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库

1. 服务器端配置1.1 运行环境说明1.2 安装JDK1.3 安装orabbix软件1.4 配置orabbix的配置文件1.5 启动orabbix服务1.6 解决zabbix-4.0.17与orabbix-1.2.3版本不兼容问题1.7 导入模板1.8 zabbix web页面添加主机1.9 添加Oracle模板2. 客户端配置2.1 数据库操作2.2 针对Oracle 11G的数据库版本3. 验证数据4. 配置监控Oracle 数据库4.1 监控库大小4.1.1 备份query.props配置文件4.1.2 添加监控库大小4.1.3 测试的SQL语句4.1.4 将SQL语句添加到query.props配置文件4.1.5 重启orabbix服务4.1.6 查看orabbix.loge日志4.1.7 查看DB Size和DB File Size数据5. 安装配置过程中产生的问题5.1 问题15.2 问题25.3 问题3目录

本文大纲

服务器端配置客户端配置验证数据配置监控oracle数据库安装过程中可能产生的问题1. 服务器端配置

1.1 运行环境说明1.2 安装JDK1.3 安装orabbix软件1.4 配置orabbix的配置文件1.5 启动orabbix访问1.6 解决zabbix-4.0.17与orabbix-1.2.3版本不兼容问题1.7 导入模板1.8 Zabbix web添加主机1.9 添加oracle模板1.1 运行环境说明

系统运行环境情况可见下表

1.2 安装JDK

使用yum来对JDK进行安装,具体需要安装的如下。

java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7.x86_64java-atk-wrapper-0.30.4-5.el7.x86_64javapackages-tools-3.4.1-11.el7.noarchjavassist-3.16.1-10.el7.noarchpython-javapackages-3.4.1-11.el7.noarchtzdata-java-2016a-1.el7.noarch 注意:如果不安装tzdata-java,则jdbc就不会从客户端获取到数据。

1.3 安装orabbix软件

Orabbix的相关的软件包,在本文的文末会提供相关的下载链接。

创建orabbix目录。

[root@afc ]# mkdir -p /opt/orabbix #创建orabbix目录上传orabbix-1.2.3.zip至/opt/orabbix目录下,并解压。

[root@afc orabbix]# unzip orabbix-1.2.3.zip #解压这个文件赋权

[root@afc opt]# chmod a+x /opt/orabbix –R #添加可执行权限下面是解压出来的文件。

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第1张图片

注意orabbix-1.2.3.jar这个jdbc文件这个很关键。

1.4 配置orabbix的配置文件

具体配置过程及相关操作如下。

[root@afc opt]# cd /opt/orabbix/conf/ [root@afcr conf]# cp config.props.sample config.props #复制模板文件[root@afc conf]# vi config.props #编辑配置文件ZabbixServerList=afc #定义服务器的主机名或IP地址,如有多个服务器主机则用英文逗号隔开afc.Address=192.168.145.132 #服务器的主机名或IP地址,此地址需要与zabbix proxy本机的zabbix_agentd.conf配置文件中的Server参数制定的地址一致,如果zabbix_agentd.conf配置文件中指定的proxy的地址,那么在此也要写proxy的地址,如果指定为server地址,那么就指定server地址afc.Port=10051 #指定zabbix server/proxy的端口#orabbix守护进程配置OrabbixDaemon.PidFile=./logs/orabbix.pid #orabbix pid文件路径OrabbixDaemon.Sleep=300 #orabbix监控的刷新频率OrabbixDaemon.MaxThreadNumber=100 #orabbix的最大线程数,此线程数最大数量大于等于数据库#数据库连接池配置DatabaseList=192.168.145.132 #指定数据库地址,多个数据库使用英文逗号隔开,此数据库地址需要与数据库机器上的 zabbix_agentd.conf中 Hostname 参数指定的一致DatabaseList.MaxActive=10 #数据库连接池中的最大活跃数量DatabaseList.MaxWait=100 #数据库连接池中的最大等待的毫秒数DatabaseList.MaxIdle=1#数据库配置192.168.145.132.Url=jdbc:oracle:thin:@192.168.145.132:1521:afc #因为是通过jdbc连接,所以需要配置jdk环境,格式为:ip:端口:数据库实例192.168.145.132.User=sc40db #orbbix监控Oracle所用到的用户192.168.145.132.Password=sc40db #orabbix监控Oracle的用户密码192.168.145.132.MaxActive=10 #以下几个可对单个数据库进行配置,如果不配置则引用上面的数据库连接池配置192.168.145.132.MaxWait=100192.168.145.132.MaxIdle=1192.168.145.132.QueryListFile=./conf/query.props #指定查询SQL语句1.5 启动orabbix服务

启动orabbix服务,具体如下。

[root@afc orabbix]# cp -a /opt/orabbix/init.d/orabbix /etc/init.d/orabbix[root@zabbix-server opt]# service orabbix start或者

[root@afc orabbix]# sh /opt/orabbix/run.sh #推荐使用脚本方式启动,可以看到启动过程中的问题。查看orabbix进程,具体如下。

[root@afc orabbix]# ps -ef | grep orabbix1.6 解决zabbix-4.0.17与orabbix-1.2.3版本不兼容问题

由于orabbix-1.2.3不支持Zabbix4.0.17,即版本不兼容,无法获取监控的数据值,具体可以通跟踪日志来发现该问题,具体如下。

[root@afc build]# tail -f /opt/orabbix/logs/orabbix.log 2020-04-29 22:27:20,365 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'waits_singleblock_read' 2020-04-29 22:27:20,366 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'hitratio_trigger' 2020-04-29 22:27:20,367 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'lio_block_changes' 2020-04-29 22:27:20,367 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'lio_consistent_read' 2020-04-29 22:27:20,367 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'waits_other' 2020-04-29 22:27:20,368 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'waits_sqlnet' 2020-04-29 22:27:20,368 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'users_locked' 2020-04-29 22:27:20,369 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'uptime' 2020-04-29 22:27:20,369 [pool-1-thread-1] INFO Orabbix - Done with dbJob on database 192.168.145.132 QueryList elapsed time 441 ms通过日志可以发现,返回大量的异常信息,检查配置我呢见机Oracle的连通性都正常,导致该最终原因是zabbix 4.0.17与orabbix-1.2.3的版本不兼容所致,具体的解决方案如下。

[root@afc orabbix]# mkdir -p test/orabbix[root@afc orabbix]# cd test/orabbix[root@afc orabbix]# rz #上传orabbix-master.zip[root@afc orabbix]# ls -l总用量 28drwxr-xr-x 2 root root 6 4月 30 00:25 orabbix-rw-r--r-- 1 root root 26459 4月 29 16:24 orabbix-master.zip[root@afc test]#[root@afc test]# unzip orabbix-master.zip -d /opt/orabbix/test/orabbix[root@afc test]# mv orabbix-master/* /opt/orabbix/test/orabbix[root@afc test]# ls -l总用量 32drwxr-xr-x 3 root root 25 2月 7 2019 comdrwxr-xr-x 2 root root 6 4月 30 00:25 orabbixdrwxr-xr-x 2 root root 6 4月 30 00:28 orabbix-master-rw-r--r-- 1 root root 26459 4月 29 16:24 orabbix-master.zip-rw-r--r-- 1 root root 843 2月 7 2019 README.md[root@afc orabbix]# rz #上传orabbix-1.2.3.zip[root@afc orabbix]# ls -l总用量 4748-rw-r--r-- 1 root root 4858160 4月 29 16:24 orabbix-1.2.3.zip[root@afc orabbix]#[root@afc orabbix]# mkdir orabbix-1.2.3[root@afc orabbix]# unzip orabbix-1.2.3 -d orabbix-1.2.3[root@afc orabbix]# ls -l总用量 4752drwxr-xr-x 3 root root 25 2月 7 2019 comdrwxr-xr-x 7 root root 203 4月 30 00:35 orabbix-1.2.3-rw-r--r-- 1 root root 4858160 4月 29 16:24 orabbix-1.2.3.zip-rw-r--r-- 1 root root 843 2月 7 2019 README.md[root@afc orabbix]# pwd/opt/orabbix/test/orabbix[root@afc orabbix]# javac -cp "orabbix-1.2.3/orabbix-1.2.3.jar:orabbix-1.2.3/lib/*" com/smartmarmot/orabbix/Sender.java[root@afc orabbix]#[root@afc orabbix]# mkdir -p ./build[root@afc orabbix]# cp orabbix-1.2.3/orabbix-1.2.3.jar ./build/[root@afc orabbix]# cd build/[root@afc build]# jar -xvf orabbix-1.2.3.jar com[root@afc build]# cp ../com/smartmarmot/orabbix/Sender.class com/smartmarmot/orabbix/Sender.class [root@afc build]# jar -uf orabbix-1.2.3.jar com执行完上述的操作之后,将build、com、orabbix-1.2.3目录下所有的文件移动到/opt/orabbix/目录下即可。

[root@afc orabbix]# sh run.sh [root@afc orabbix]# service orabbix startStarting orabbix (via systemctl): [ 确定 ][root@afc orabbix]#[root@afc orabbix]# tail -f /opt/orabbix/logs/orabbix.log2020-04-30 00:47:28,950 [main] INFO Orabbix - Starting Orabbix Version 1.2.3 2020-04-30 00:47:33,389 [main] INFO Orabbix - Orabbix started with pid:34612 2020-04-30 00:47:33,390 [main] INFO Orabbix - PidFile -> ./logs/orabbix.pid 2020-04-30 00:47:33,540 [main] INFO Orabbix - DB Pool created: org.apache.commons.dbcp.datasources.SharedPoolDataSource@3f8f9dd6 2020-04-30 00:47:33,540 [main] INFO Orabbix - URL=jdbc:oracle:thin:@192.168.145.132:1521:afc 2020-04-30 00:47:33,540 [main] INFO Orabbix - maxPoolSize=10 2020-04-30 00:47:33,540 [main] INFO Orabbix - maxIdleSize=1 2020-04-30 00:47:33,540 [main] INFO Orabbix - maxIdleTime=1800000ms 2020-04-30 00:47:33,540 [main] INFO Orabbix - poolTimeout=100 2020-04-30 00:47:33,540 [main] INFO Orabbix - timeBetweenEvictionRunsMillis=-1 2020-04-30 00:47:33,540 [main] INFO Orabbix - numTestsPerEvictionRun=3 2020-04-30 00:47:34,177 [main] INFO Orabbix - Connected as SC40DB 2020-04-30 00:47:34,182 [main] INFO Orabbix - --------- on Database -> afc 2020-04-30 00:47:34,656 [pool-1-thread-1] INFO Orabbix - Done with dbJob on database 192.168.145.132 QueryList elapsed time 434 ms 2020-04-30 00:47:45,765 [pool-1-thread-88] INFO Orabbix - Done with dbJob on database 192.168.145.132 QueryList elapsed time 5 ms 2020-04-30 00:47:46,781 [pool-1-thread-88] INFO Orabbix - Done with dbJob on database 192.168.145.132 QueryList elapsed time 11 ms编译使用相关的软件包,在本文的文末会提供相关的下载链接。

1.7 导入模板

自带的模板都在这个目录下面共有4个文件 导入时只需要导入Orabbix_export_full.xml即可,在此全部的模板的配置文件都导入。

[root@afc orabbix]# ls -l /opt/orabbix/template/总用量 228-rwxr--r-- 1 root root 107257 10月 25 2011 Orabbix_export_full.xml-rwxr--r-- 1 root root 21399 10月 25 2011 Orabbix_export_graphs.xml-rwxr--r-- 1 root root 86724 10月 25 2011 Orabbix_export_items.xml-rwxr--r-- 1 root root 4911 10月 25 2011 Orabbix_export_triggers.xml[root@afc orabbix]#

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第2张图片

1.8 zabbix web页面添加主机

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第3张图片

注意:主机名称:必须是客户机的主机名否则zabbix无法监控

1.9 添加Oracle模板

添加模板,具体操作如下;选择“配置”→“主机”,选择要添加模板的主机,→“模板”。

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第4张图片

2. 客户端配置

2.1 数据库操作2.2 针对Oracle 11G的数据库版本2.1 数据库操作

1)使用su - oralce登录 oracle 命令行

SQL> sqlplus / as sysdba2)创建zabbix用户

create user zabbix identified by “zabbix” default tablespace system temporary tablespace temp profile default account unlock;3)赋予zabbix一切查看权限

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;2.2 针对Oracle 11G的数据库版本

如果是Oracle 11G数据库,还需要执行下面的语句开放ACL的访问控制,否则在监控的过程中有部份内容无法正常显示(例于数据库版本,数据库文件大小等),而且orabbix的日志显示中也会有相关的错误提示。解决改问题的相关操作如下。

SQL> exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'ZABBIX', is_grant => true, privilege => 'resolve');SQL> exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');SQL> commit; #提交事务3. 验证数据

登陆zabbix web端查看:这里监控的内容都是orabbix自带的模板监控项;如果想要其他的监控内容还需要自己添加。

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第5张图片

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第6张图片

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第7张图片

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第8张图片

数据信息正常获取。

4. 配置监控Oracle 数据库

4.1 监控库大小

在默认的情况下orabbix是未开数据库大小的,需要通过配置query.props来开启。

4.1.1 备份query.props配置文件

[root@afc conf]# cp -a /opt/orabbix/conf/query.props /opt/orabbix/conf/query.props_backup202004294.1.2 添加监控库大小

[root@afc conf]# vim /opt/orabbix/conf/query.props

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第9张图片

然后在query.props配置文件末尾添加对应的SQL语句,其语法为:

dbfilesize.Query=SQL语句dbsize.Query=SQL语句4.1.3 测试的SQL语句

#dbfilesizeselect to_char(sum(bytes/1024/1024/10), 'FM99999999999999990') retvalue from dba_data_files#dbsizeSELECT to_char(sum( NVL(a.bytes/1024/1024/10 - NVL(f.bytes/1024/1024/10, 0), 0)), 'FM99999999999999990') retvalue FROM sys.dba_tablespaces d,(select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a,(select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) fWHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+)AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')4.1.4 将SQL语句添加到query.props配置文件

将上述的SQL测试语句添加入到query.props配置文件末尾处;加入到query.props中的语句必须要使用 \ 换行符,否则会报错

“Error on DBEnquiry on query=dbfilesize on database=192.168.11.141 Error returned is java.lang.IllegalArgumentException: null value for key ‘dbfilesize’”具体如下

dbfilesize.Query=select to_char(sum(bytes/1024/1024/10), 'FM99999999999999990') retvalue from dba_data_filesdbsize.Query=SELECT to_char(sum( NVL(a.bytes/1024/1024/10 - NVL(f.bytes/1024/1024/10, 0), 0)), 'FM99999999999999990') retvalue \FROM sys.dba_tablespaces d, \(select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, \(select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f \WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) \AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第10张图片

4.1.5 重启orabbix服务

[root@afc conf]# /etc/init.d/orabbix restartRestarting orabbix (via systemctl): [ 确定 ][root@afc conf]#4.1.6 查看orabbix.loge日志

若日志返回信息如下所示,则表明orabbix正常运行。

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第11张图片

4.1.7 查看DB Size和DB File Size数据

在zebbix web前端菜单栏操作,选择“监控”→“图形”→选择要查看的群组与主机,再选择DB Size/FileSize;具体如下图所示。

使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库_第12张图片

5. 安装配置过程中产生的问题

5.1 问题1

安装完成后启动服务后正常无报错,但接收不到任何数据;查看日志。

[root@afc ~]# cat /opt/orabbix/logs/orabbix.log日志内信息Starting Orabbix Version 1.2.3 Orabbix started with pid:18944PidFile -> ./logs/orabbix.pid日志信息不完整且没有成功连接数据库的信息,下面为正常日志信息。

[root@afc orabbix]# tail -f /opt/orabbix/logs/orabbix.log2020-04-30 00:47:28,950 [main] INFO Orabbix - Starting Orabbix Version 1.2.3 2020-04-30 00:47:33,389 [main] INFO Orabbix - Orabbix started with pid:34612 2020-04-30 00:47:33,390 [main] INFO Orabbix - PidFile -> ./logs/orabbix.pid 2020-04-30 00:47:33,540 [main] INFO Orabbix - DB Pool created: org.apache.commons.dbcp.datasources.SharedPoolDataSource@3f8f9dd6 2020-04-30 00:47:33,540 [main] INFO Orabbix - URL=jdbc:oracle:thin:@192.168.145.132:1521:afc 2020-04-30 00:47:33,540 [main] INFO Orabbix - maxPoolSize=10 2020-04-30 00:47:33,540 [main] INFO Orabbix - maxIdleSize=1 2020-04-30 00:47:33,540 [main] INFO Orabbix - maxIdleTime=1800000ms 2020-04-30 00:47:33,540 [main] INFO Orabbix - poolTimeout=100 2020-04-30 00:47:33,540 [main] INFO Orabbix - timeBetweenEvictionRunsMillis=-1 2020-04-30 00:47:33,540 [main] INFO Orabbix - numTestsPerEvictionRun=3 2020-04-30 00:47:34,177 [main] INFO Orabbix - Connected as SC40DB 2020-04-30 00:47:34,182 [main] INFO Orabbix - --------- on Database -> afc 2020-04-30 00:47:34,656 [pool-1-thread-1] INFO Orabbix - Done with dbJob on database 192.168.145.132 QueryList elapsed time 434 ms 2020-04-30 00:47:45,765 [pool-1-thread-88] INFO Orabbix - Done with dbJob on database 192.168.145.132 QueryList elapsed time 5 ms 2020-04-30 00:47:46,781 [pool-1-thread-88] INFO Orabbix - Done with dbJob on database 192.168.145.132 QueryList elapsed time 11 ms解决措施:检查tzdata-java-2016a-1.el7.noarch.rpm相关的rpm包是否安装,若没有按则进行安装。

5.2 问题2

使用sh /opt/orabbix/run.sh脚本运行报错

Caused by: java.lang.Error: java.io.FileNotFoundException: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/tzdb.dat (No such file or directory)去目录下查看tzdb.dat文件,发现链接

tzdb.dat -> /usr/share/javazi-1.8/tzdb.dat但是/usr/share/javazi-1.8/tzdb.dat这个文件不存在;则需要安装tzdata-java-2016a-1.el7.noarch.rpm 就是本文开始中提到的。安装该RPM包重启orabbix后数据正常收取。

5.3 问题3

通过查询日志,报错信息如下。

[root@afc orabbix]# sh /opt/orabbix/run.sh [root@afc orabbix]# Stoppingjava.lang.Exception: ERROR on main - Connections is emptyat com.smartmarmot.orabbix.Orabbixmon.run(Orabbixmon.java:101)at com.smartmarmot.orabbix.bootstrap.main(bootstrap.java:50)[root@afc orabbix]#解决措施:检查/opt/orabbix/config/config.props配置文件是否全部配置正确及网络的连通性是否正常。

举报/反馈

你可能感兴趣的:(使用zabbix管理oracle,基于Zabbix使用Orabbix实现监控Oracle数据库)