Zabbix 5.0通过orabbix监控Oracle 11g

0x00 环境

zabbix 5.0.4

orabbix 1.2.3

oracle 11g  11.2.0.4

0x01  前提条件

zabbix-server需要安装jdk 版本1.8即可

orabbix安装在zabbix-server端

oracle端安装zabbix agent

#安装jdk (略)
#安装orabbix 解压
unzip orabbix-1.2.3.zip
mv orabbix-1.2.3 /usr/local/orabbix
cp /usr/local/orabbix/conf/config.props.sample /usr/local/orabbix/conf/config.props
cp /usr/local/orabbix/init.d/orabbix /etc/init.d/orabbix

chmod +x /etc/init.d/orabbix
chmod +x /usr/local/orabbix/run.sh

修改配置,指定zabbix server的ip地址,端口,数据库清单等

vi /usr/local/orabbix/conf/config.props
#关键配置

ZabbixServerList=zabbix

ZabbixServer1.Address=zabbix服务器地址
ZabbixServer1.Port=10051  #ZABBIX端口 默认10051

DatabaseList=数据库IP地址  #多个以逗号隔开

数据库IP地址.Url=jdbc:oracle:thin:@数据库IP地址:端口:<SID>
数据库IP地址.User=zabbix    #oracle数据库用户 需要在oracle端对应新建
数据库IP地址.Password=xxxx  #oracle数据库用户密码
#Those values are optionals if not specified Orabbix is going to use the general values
数据库IP地址.MaxActive=10
数据库IP地址.MaxWait=100
数据库IP地址.MaxIdle=1
数据库IP地址.QueryListFile=./conf/query.props

#其他数据库  DB2需要添加到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

#保存退出

0x02 添加ojdbc8.jar驱动,删除jdbc6.jar驱动

ojdbc8.jar驱动链接:https://pan.baidu.com/s/1hEABz4ww-AoiMgso6H1Xhw 
提取码:QGS1

mv ojdbc8.jar /usr/local/orabbix/lib
cd /usr/local/orabbix/lib
rm -f ojdbc6.jra

chown -Rf root.root ojdbc8.jar

chmod 644 ojdbc8.jar

orabbix默认是不支持zabbix4+的,因为orabbix在传输数据的时候在数据包中没有加 Header包头 ,在zabbix4之前版本中zabbix server和zabbix proxy收到的数据包允许不加 Header包头,所以orabbix在zabbix4.0版本之前可以游刃有余的对orabbix监控,但是在zabbix4.0之后由于zabbix官方删除了对纯本文协议的支持(无Header)的支持

0x03 编译orabbix 启动orabbix

#git orabbix源码到本地目录
cd /usr/local/src
git clone https://github.com/snickerjp/orabbix.git
#git超时自己找方法即可
cd orabbix/
#拷贝原来的orabbix zip包到src/orabbix目录下
cp -rf  orabbix-1.2.3.zip /usr/local/src/orabbix
cd /usr/local/src/orabbix
mkdir orabbix-1.2.3
unzip -o orabbix-1.2.3.zip -d orabbix-1.2.3
javac -cp "orabbix-1.2.3/orabbix-1.2.3.jar:orabbix-1.2.3/lib/*" com/smartmarmot/orabbix/Sender.java
mkdir -p ./build
cp orabbix-1.2.3/orabbix-1.2.3.jar ./build
cd ./build
jar -xvf orabbix-1.2.3.jar com
cp ../com/smartmarmot/orabbix/Sender.class com/smartmarmot/orabbix/Sender.class
jar -uf orabbix-1.2.3.jar com
cp -rf orabbix-1.2.3.jar /usr/local/orabbix/orabbix-1.2.3.jar
cd /usr/local/orabbix/
./run.sh
chkconfig --add orabbix
chkconfig orabbix on
systemctl start orabbix
#如果报错,请修改run.sh或者 /etc/init.d/orabbix下的路径指向
#通过tail -f /usr/local/orabbix/logs/orabbix.log查看日志

模板文件存在于orabbix/template/下,下载下来导入zabbix server中,作为监控模板,这里不再赘述

需要注意的是,默认模板没有dbfilesize和dbsize大小的监控,修改配置文件增加即可

vi /usr/local/orabbix/conf/query.props

#在QueryList后增加dbfilesize,dbsize,并且在该文件末尾增加SQL查询语句
#如下
dbfilesize.Query=select to_char(sum(bytes/1024/1024/10), 'FM99999999999999990') retvalue from dba_data_files
dbsize.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')

0x04 oracle端配置

新增监控用户zabbix

su - oracle
sqlplus / as sysdba
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;

针对oracle11g版本还需要执行以下语句:

 exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'监控用户名', is_grant => true, privilege => 'resolve');
 exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');
commit;

oracle防火墙放行oracle端口

zabbix 添加oracle主机和模板,获取数据即可

注意:orabbix默认对于表空间的监控在小于93%的时候是没有实时数据的,当表空间的占用率超过93%时,会触发告警,这个阈值可以通过修改query.props中的SQL语句。

数据库没有数据响应 数据库无数据响应 High Oracle:alive
数据库实例不可用 数据库实例是否可用 High Oracle:alive
数据库中存在锁 数据库中存在锁 High Oracle:locks
session使用量过高 session过多,比如session超过80% High (Oracle:session.last(0)}*100/Oracle:maxsession.last(0)})>80
Process 使用量过高 process过多,比如process超过80% High (Oracle:procnum.last(0)}*100/Oracle:maxprocs.last(0)})>80
异常信息的通用审计 异常信息的审计,比如密码错误次数过多 High Oracle:audit
active session数过高 active session数 High Oracle:session_active
用户异常锁定 用户密码过期或者错误登录次数过多账户锁定 Warning Oracle:users_locked
表空间使用率过高 表空间使用率超过90% Warning Oracle:showtsps
归档日志量过高 归档日志量 Warning Oracle:archive
正常运行时间 正常运行情况 Average Oracle:uptime
PGA 使用量过高 PGA使用率过高 Average (Oracle:pga.last(0)}*100/Oracle:pga_aggregate_target.last(0)})>90
缓存命中率不足 缓存命中率不足 Information Oracle:hitratio_table_proc.avg(60)}<50|Oracle:hitratio_trigger.avg(60)}<50|Oracle:hitratio_sqlarea.avg(60)}<50|Oracle:hitratio_body.avg(60)}<50

 

posted @ 2022-11-22 16:41  BlackData  阅读(1067)  评论(0编辑  收藏  举报