Orabbix插件下载地址: http://www.smartmarmot.com/product/orabbix/download/
一、 zabbix_server安装部署orabbix:
1. orabbix通过JDBC连接数据库,zabbix server需要安装jdk,jdk1.7和jdk1.8都可以
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 -y
java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
2. 创建/opt/orabbix目录***建议在此目录下,如果放置其他目录需要更改orabbix的启动文件orabbix,默认写在opt/orabbix目录下***
mkdir -p /opt/orabbix
3. 下载orabbix安装文件到/opt/目录并解压文件
wget https://jaist.dl.sourceforge.net/project/orabbix/orabbix-1.2.3.zip
unzip -o orabbix-1.2.3.zip -d /opt/orabbix/
4. 拷贝orabbix配置文件
cp /opt/orabbix/conf/config.props.sample /opt/orabbix/conf/config.props
5. 拷贝orabbix启动文件并授权
cp /opt/orabbix/init.d/orabbix /etc/init.d/
chmod u+x /etc/init.d/orabbix
chmod u+x /opt/orabbix/run.sh
6. 修改orabbix配置文件
原配置文件:
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
修改之后:
ZabbixServerList=ZabbixServer # (zabbixserver的名字,下行中address和port都引用到了这个名字,所以下面两行的前缀名字要与这里的名字保持一致,自己觉得还是不修改更好一点)
ZabbixServer.Address=192.168.245.111 #zabbix server ip地址
ZabbixServer.Port=10051 # zabbix server的服务端口
OrabbixDaemon.PidFile=./logs/orabbix.pid
OrabbixDaemon.Sleep=300
OrabbixDaemon.MaxThreadNumber=100
DatabaseList=ORACLETEST #这里很重要,不仅要跟zabbix监控配置的主机名一致,而且跟上面配置zabbixserver一样,下面DB1都需要修改为ORACLETEST,如果多个数据库就用逗号分隔
DatabaseList.MaxActive=10 # 数据库连接池中的最大活跃数量(全局参数)
DatabaseList.MaxWait=100 # 数据库连接池中的最大等待的毫秒数(全局参数)
DatabaseList.MaxIdle=1
ORACLETEST.Url=jdbc:oracle:thin:@192.168.245.222:1521:ORACLETEST #192.168.246.222 oracle数据库的地址,1521端口,ORACLETEST数据库实例名
ORACLETEST.User=zabbix #授权的账号
ORACLETEST.Password=zabbix #授权的密码
# 以下几个可对单个数据库进行配置,如果不配置则引用上面的数据库连接池全局配置
ORACLETEST.MaxActive=10
ORACLETEST.MaxWait=100
ORACLETEST.MaxIdle=1
#要查询的语句都在这定义的,根据需求可添加新的监控项
ORACLETEST.QueryListFile=./conf/query.props
***如果有多个数据库需要监控、可以在下面增加配置。当然、上面的DatabaseList也需要进行添加***
#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
二、 Oracle 数据库端操作:
1. 创建Oracle监控账号
create user zabbix identified by zabbix default tablespace system temporary tablespace temp profile default account unlock;
2. 赋予角色权限
GRANT IMP_FULL_DATABASE TO zabbix;
GRANT CONNECT TO zabbix;
GRANT RESOURCE TO zabbix;
ALTER USER zabbix DEFAULT ROLE ALL;
GRANT UNLIMITED TABLESPACE TO zabbix;
GRANT CREATE ANY TRIGGER TO zabbix;
GRANT CREATE VIEW TO zabbix;
GRANT DROP ANY TABLE TO zabbix;
GRANT CREATE TABLE TO zabbix;
GRANT CREATE ANY PROCEDURE TO zabbix;
GRANT UPDATE ANY TABLE TO zabbix;
GRANT SELECT ANY TABLE TO zabbix;
GRANT CREATE ANY SYNONYM TO zabbix;
GRANT DELETE ANY TABLE TO zabbix;
GRANT INSERT ANY TABLE TO zabbix;
GRANT CREATE SEQUENCE TO zabbix;
GRANT DBA TO zabbix;
3. 开放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;
三丶添加ojdbc8.jar驱动:
orabbix默认使用的是ojdbc6.jar驱动,因为ojdbc6.jar驱动的认证协议对12c的认证协议不匹配,所以这里换成ojdbc8.jar驱动:
下载址: https://www.oracle.com/database/technologies/appdev/jdbc-ucp-183-downloads.html
1. 把ojdbc8.jar文件移动到/opt/orabbix/lib/下面
mv ojdbc8.jar /opt/orabbix/lib/
2. 删除/opt/orabbix/lib/目录下面的默认ojdbc6.jar
rm -rf /opt/orabbix/lib/ojdbc6.jar
3. 给ojdbc8.jar授权
chown -Rf root.root /opt/orabbix/lib/ojdbc8.jar
chmod 644 /opt/orabbix/lib/ojdbc8.jar
四丶重新编译orabbix-1.2.3.jar
orabbix默认是不支持zabbix4+的,因为orabbix在传输数据的时候在数据包中没有加 Header包头 ,在zabbix4之前版本中zabbix server和zabbix proxy收到的数据包允许不加 Header包头,所以orabbix在zabbix4.0版本之前可以游刃有余的对orabbix监控,但是在zabbix4.0之后由于zabbix官方删除了对纯本文协议的支持(无Header)的支持
所以现在zabbix4.0之后版本必须强制添加 Header包头,对于没有添加 Header包头的数据包,Zabbix Server/Zabbix Proxy将会拒绝此数据报文,在github上给出了一个解决方法,将重新编译orabbix-1.2.3.jar加入 Header 协议头的支持。 具体操作如下
1. 访问https://github.com/hsnotebook/orabbix4zabbix4 点击code 下载orabbix4.zip
2. 上传到服务器并解压
unzip orabbix4zabbix4-master.zip -d /usr/local/
3. 修改配置文件
cd /usr/local/orabbix4zabbix4-master
vi /usr/local/orabbix4zabbix4-master/bind.sh
#注释最后一行:
#docker build . -t zabbix-agent-oracle
4. 编译
cd /usr/local/orabbix4zabbix4-master
./bind.sh
5. 把编译好的orabbix-1.2.3.jar移动到/opt/orabbix/
mv /usr/local/orabbix4zabbix4-master/orabbix/orabbix-1.2.3.jar /opt/orabbix/
6. 启动orabbix
systemctl start orabbix
7. 证orabbix是否启动
ps aux | grep orabbix
五、添加 Orabbix 监控到Zabbix Web
1.在winds系统解压orabbix-1.2.3
Orabbix默认自带监控模板在emplate 下
Orabbix_export_full.xml 全部导入(图表 监控项 触发器)
Orabbix_export_graphs.xml 图表
Orabbix_export_items.xml 监控项
Orabbix_export_triggers.xml 触发器
3. zabbix-server web页面上添加监控模板
配置 - 模板 - 导入
4. 选择Orabbix_export_full.xml
5. 再次选择导入
6. 在关联到oracle主机就好啦