zabbix5.0监控oracle11g—Orabbix插件(linux)

由于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'

#报警信息描述如下
故障类型简述类型报警对应项
数据库没有数据响应数据库无数据响应HighOracle:alive
数据库实例不可用数据库实例是否可用HighOracle:alive
数据库中存在锁数据库中存在锁HighOracle: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
异常信息的通用审计异常信息的审计,比如密码错误次数过多HighOracle:audit
active session数过高active session数HighOracle:session_active
用户异常锁定用户密码过期或者错误登录次数过多账户锁定WarningOracle:users_locked
表空间使用率过高表空间使用率超过90%WarningOracle:showtsps
归档日志量过高归档日志量WarningOracle:archive
正常运行时间正常运行情况AverageOracle:uptime
PGA 使用量过高PGA使用率过高Average(Oracle:pga.last(0)}*100/Oracle:pga_aggregate_target.last(0)})>90
缓存命中率不足缓存命中率不足InformationOracle: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自带的模板监控项;如果想要其他的监控内容还需要自己添加。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值