由于agent2监控oracle目前只支持oracle12以上,所以低于12c版本的oracle需要用Orabbix插件来监控oracle11g
zabbix5.0监控oracle11g—Orabbix插件的必备条件
必备条件1,zabbix-server安装好jdk,参考链接 https://bbs.huaweicloud.com/blogs/246145
必备条件2,oracle端,安装好agent2,并安装好oracle客户端
不满足条件,无法监控oracle11g
首先在zabbix server服务器上创建orabbix插件目录 /opt/orabbix
#创建/opt/orabbix目录
mkdir -p /opt/orabbix
#安装wget和unzip命令并下载orabbix安装文件到/opt/目录并解压文件
yum -y install wget
yum -y install unzip
#切换到/opt/目录
cd /opt/
wget https://jaist.dl.sourceforge.net/project/orabbix/orabbix-1.2.3.zip
解压文件到/opt/orabbix
unzip -o orabbix-1.2.3.zip -d /opt/orabbix/
#拷贝orabbix模板配置文件
cp /opt/orabbix/conf/config.props.sample /opt/orabbix/conf/config.props
#拷贝orabbix启动文件并授权
cp /opt/orabbix/init.d/orabbix /etc/init.d/
chmod u+x /etc/init.d/orabbix
chmod u+x /opt/orabbix/run.sh
#安装 net-tools
yum -y install net-tools
#查看zabbix端口
netstat -tnlp|grep zabbix
#查看config.props文件路径,并编辑,配置如下图
vim /opt/orabbix/conf/config.props
添加ojdbc8.jar驱动,删除jdbc6.jar驱动,ojdbc6.jar驱动的认证协议不匹配。
ojdbc8.jar驱动链接:https://pan.baidu.com/s/1hEABz4ww-AoiMgso6H1Xhw
提取码:QGS1
#cd回到root目录下操作
cd
#把ojdbc8.jar驱动文件移动到/opt/orabbix/lib/下面
mv ojdbc8.jar /opt/orabbix/lib/
# 删除/opt/orabbix/lib/目录下面的ojdbc6.jar驱动文件
rm -rf /opt/orabbix/lib/ojdbc6.jar
给ojdbc8.jar授予权限
chown -Rf root.root /opt/orabbix/lib/ojdbc8.jar
chmod 644 /opt/orabbix/lib/ojdbc8.jar
#切到/lib/目录下
cd /opt/orabbix/lib/
orabbix默认是不支持zabbix4+的,因为orabbix在传输数据的时候在数据包中没有加 Header包头 ,在zabbix4之前版本中zabbix server和zabbix proxy收到的数据包允许不加 Header包头,所以orabbix在zabbix4.0版本之前可以游刃有余的对orabbix监控,但是在zabbix4.0之后由于zabbix官方删除了对纯本文协议的支持(无Header)的支持,官方解释:Header and data length。
#重新编译orabbix-1.2.3.jar
#安装git命令
yum -y install git
#切换到cd /usr/local/src/目录下操作
cd /usr/local/src/
git clone https://github.com/snickerjp/orabbix.git
cd orabbix/
cp -rf /opt/orabbix-1.2.3.zip ./
mkdir orabbix-1.2.3
unzip -o orabbix-1.2.3.zip -d orabbix-1.2.3/
#拷贝orabbix-1.2.3.jar和lib库下的jar包到指定文件
javac -cp "orabbix-1.2.3/orabbix-1.2.3.jar:orabbix-1.2.3/lib/*" com/smartmarmot/orabbix/Sender.java
#创建build目录
mkdir -p ./build
cp orabbix-1.2.3/orabbix-1.2.3.jar ./build
#切换到./build目录下操作,重新打包orabbix
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 /opt/orabbix/orabbix-1.2.3.jar
#切换到orabbix目录下
cd /opt/orabbix/
#运行./run.sh
./run.sh
# 加入开机启动
chkconfig --add orabbix
# 验证开机启动项
chkconfig orabbix on
# 启动orabbix
systemctl start orabbix
# 验证orabbix是否启动
ps aux | grep orabbix
# 检查orabbix日志是否报错,如下图,说明没有报错,有报错就处理报错即可
tail -f /opt/orabbix/logs/orabbix.log
#验证agent2是否能通客户端(被监控端)
zabbix_get -s 'IP' -p 10050 -k 'agent.ping'
zabbix_get -s 'IP' -p 10050 -k 'system.hostname'
#由于无法监控到数据库大小所以进入该文件,进行添加一些语句,QueryList=类目下增加dbfilesize,dbsize
vim /opt/orabbix/conf/query.props
#添加内容如下
dbfilesize,dbsize
#在最后添加如下内容
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')
客户端,被监控端需要防火墙开放1521
或者防火墙“ firewalld”中开启公网访问1521端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload
#查看进程
ps -ef | grep 'Orabbix'
#报警信息描述如下
故障类型 | 简述 | 类型 | 报警对应项 |
数据库没有数据响应 | 数据库无数据响应 | 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 |
数据库操作
1)使用su - oralce登录 oracle 命令行
1 | SQL> sqlplus / as sysdba |
2)创建zabbix用户
1 | create user zabbix identified by “zabbix” default tablespace system temporary tablespace temp profile default account unlock; |
3)赋予zabbix一切查看权限
1 2 3 4 5 6 7 8 | 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的日志显示中也会有相关的错误提示。解决改问题的相关操作如下。
1 2 3 | 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自带的模板监控项;如果想要其他的监控内容还需要自己添加。