背景:公司原先使用odbc的安装,通过无agent的方式连接到oracle,并根据zabbix自带的oracle by odbc模板进行数据库监控,但是在后续的使用过程中,发现有zabbix每间隔一段时间自动重启的问题,排查目前定位到mysql和oracle的odbc的采集,在zabbix官方文档中也提及了,odbc的不稳定性,以及不建议使用odbc采集的方式,所以才查看agent2的指标项,发现了可以自定义采集sql的指标项oracle.custom.query。
一、安装
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-agent2
二、新增配置
新增文件/etc/zabbix/zabbix_agent2.d/monitor_oracle.conf ,内容如下:
Plugins.Oracle.Sessions.demo.Uri=tcp://192.168.113.180:1521
Plugins.Oracle.Sessions.demo.User=bsm
Plugins.Oracle.Sessions.demo.Password=bsm
Plugins.Oracle.Sessions.demo.Service=orcl
Plugins.Oracle.CustomQueriesPath=/etc/zabbix/zabbix_agent2.d/oracle/sql
解析:
connString为demo,被调用执行sql查询文件目录在/etc/zabbix/zabbix_agent2.d/oracle/sql
安装oracle连接客户端
rpm -ivh https://download.oracle.com/otn_software/linux/instantclient/211000/oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm
export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:$LD_LIBRARY_PATH
重启zabbix-agent2
systemctl start zabbix-agent2
三、启动并配置指标监控项
被调用执行sql查询文件目录新建一个get_data.sql,文件内容为select * from v$version;,然后通过zabbix_get测试
# 是否通
# zabbix_get -s 127.0.0.1 -p 10055 -k oracle.ping[demo]
1
# 执行sql
# zabbix_get -s 192.168.113.138 -p 10055 -k oracle.custom.query[demo,,,,get_data]
[{"BANNER":"Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production"},{"BANNER":"PL/SQL Release 11.2.0.1.0 - Production"},{"BANNER":"CORE\t11.2.0.1.0\tProduction"},{"BANNER":"TNS for Linux: Version 11.2.0.1.0 - Production"},{"BANNER":"NLSRTL Version 11.2.0.1.0 - Production"}]
返回以上信息,说明安装配置成功。
后记:同样想使用上述方法替换mysql的odbc连接,经过查看文档发现,mysql没有类似于oracle.custom.query的内置指标项。