一、登录要监控的数据库 创建 zabbix 用户并授权
创建用户
-> create user zabbix identified by "123546#" default tablespace tabels temporary tablespace TEMP ;
--此命令可能执行不成功,原因可能是11g与12c语法不同,但是没有深究。执行 -> alter session set "_ORACLE_SCRIPT"=true;但是实际生产环境不建议使用。
--授予权限
-> 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;
--如果当前的oracle版本是11g的话,还需要添加如下的语句开放acl的访问控制,否则在监控的过程中有部份内容无法正常显示(例于数据库版本,数据库文件大小等)。
-> 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;
--授权完成后可以使用zabbix用户登录测试下
sqlplus zabbix/"123456#"
--查看数据库实例可使用以下命令
-> select instance_name from v$instance; //查看实例名
-> select global_name from global_name; //查看服务名
二、上传orabbix安装包到 zabbix服务器目录,解压 并编辑orabbix配置文件信息,加入数据库连接池信息
Orabbix下载连接
[app@Server_1 ~]$ unzip orabbix-1.2.3.zip
[app@Server_1 ~]$ mv orabbix-1.2.3.zip orabbix
[app@Server_1 ~]$ vim orabbix/conf/config.props
#comma separed list of Zabbix servers
#Zabbix主机名
ZabbixServerList=ZabbixServer1
#Zabbix客户端IP
ZabbixServer1.Address=192.168.1.124
ZabbixServer1.Port=10051
#pidFile
OrabbixDaemon.PidFile=./logs/orabbix.pid
#frequency of item's refresh
OrabbixDaemon.Sleep=300
#MaxThreadNumber should be >= than the number of your databases
OrabbixDaemon.MaxThreadNumber=100
#put here your databases in a comma separated list
#DatabaseList的值未HOSTNAME配置的值,具体查看 vi /etc/sysconfig/network
DatabaseList=orcl
#Configuration of Connection pool
#if not specified Orabbis is going to use default values (hardcoded)
#Maximum number of active connection inside pool
DatabaseList.MaxActive=10
#The maximum number of milliseconds that the pool will wait
#(when there are no available connections) for a connection to be returned
#before throwing an exception, or <= 0 to wait indefinitely.
DatabaseList.MaxWait=100
DatabaseList.MaxIdle=1
#define here your connection string for each database
#配置JDBC连接池信息,此处orcl为数据库实例
orcl.Url=jdbc:oracle:thin:@172.0.0.1:1521:orcl
orcl.User=ZABBIX
orcl.Password=ZABBIX
#Those values are optionals if not specified Orabbix is going to use the general values
orcl.MaxActive=10
orcl.MaxWait=100
orcl.MaxIdle=1
orcl.QueryListFile=./conf/query.props
三、授权并启动orabbix,分析日志是否有误报错或授权不足情况
[app@Server_1 ~]$ chmod +x orabbix/run.sh
[app@Server_1 ~]$ /home/app/orabbix/init.d/orabbix start
[app@Server_1 ~]$ tail -f /opt/orabbix/logs/orabbix.log
#给主机Zabbix执行root的权限
[root@Server_2 zabbix_agentd.d]# vim /etc/sudoers
zabbix ALL=(root) NOPASSWD:/bin/python
zabbix ALL=(root) NOPASSWD:/bin/tail
四、导入自动发现 Oracle数据库 xml模板并关联相关主机,模板在之前你下载的Orabbix的template目录里
五、zabbix升级4.4以后,orabbix监控Oracle报错
在使用 zabbix 4.4 时, orabbix 会报错:
Orabbix – received unexpected response ’ ’ for key ‘alive’
根据这个 issue , 修改了 Sender.java, 并把编译好的 class 文件, 添加到 orabbix-1.2.3.jar 中、
使用方式:将下载下来的orabbix4zabbix4-master.zip放在orabbix环境下面,执行build.sh(执行有报错不用管),这个脚本会编译 Sender.java , 并把 class 文件,添加到原来的 jar 包中, 放到 orabbix 目录下。
将新生成的orabbix-1.2.3.jar,替换原来的jar包。
执行service orabbix start 就OK了