下面是对应的攻略:
准备
- 安装ODBC驱动
在Zabbix Server上安装ODBC驱动,例如UnixODBC驱动:yum install unixODBC unixODBC-devel
- 安装Oracle Instant Client
在Zabbix Server上安装 Oracle Instant Client,以供ODBC连接访问Oracle数据库:下载地址
- 配置ODBC数据源
在Zabbix Server上编辑ODBC配置文件/etc/odbc.ini,添加以下内容:
ini
[dsnname]
Driver=OracleInClient
ServerName=<ip or hostname>:<port>/<service_name>
UserID=<username>
Password=<password>
其中driver、ServerName、UserID、Password为必填项,dsnname可自定义名称。
Zabbix Server配置
- 安装Zabbix Server
根据官网安装手册进行安装
- 添加Zabbix Server ODBC监控项
a. 确认客户端中ODBC驱动已安装并配置好ODBC数据源
b. 在Zabbix Server中进入Configuration -> Templates -> Create template
,创建模板
c. 添加ODBC监控项。在模板内部添加ODBC Items,例如:
``` ini
// item配置示例:zabbix_agentd.conf中以UserParameter定义的东西
UserParameter={#ODBC_NAME},echo 'SELECT count() from {#TABLE_NAME} where status="OPEN";'| /usr/local/unixODBC/bin/isql {#ODBC_NAME} -b -v | awk '$1== "count()" {print $2}'
// example:
UserParameter=oracle_active:xargs -0 echo < /oracle12c/app/oracle/product/12.1.0.2/dbhome_1/bin/sqlplus -S / as sysdba <<! \n select * from v$session where status='ACTIVE';\n!|grep '^ *1 '|awk '{print $9}'\n
``
{#ODBC_NAME}`: odbc数据源名称,与/etc/odbc.ini中[dsnname]相同
{#TABLE_NAME}: 在oracle数据库中查询的表名,以实际需求而定。
- 添加Zabbix Server ODBC触发器
在模板内部添加相应的触发器,例如:
ini
// oracle_active
{Template_ODBC:oracle_active.last()}>"10"
其中{Template_ODBC:oracle_active.last()}
为上面对应的监控项键值,"10"是对应的阈值。
- 应用模板至Oracle主机
监控项和触发器已创建完成,将模板应用到需要监控的Oracle主机上即可。
示例
假设我们有一个名为my_oracle_datasource的ODBC数据源,可以按照以下方式创建一个监控项:
UserParameter=oracle_active:xargs -0 echo < /oracle12c/app/oracle/product/12.1.0.2/dbhome_1/bin/sqlplus -S / as sysdba <<! \n select * from v$session where status='ACTIVE';\n!|grep '^ *1 '|awk '{print $9}'\n
对应的触发器可以设置为:
{Template_ODBC:oracle_active.last()}>"10"
其含义为,如果Oracle里有超过10个会话状态为"ACTIVE",就触发警报。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Zabbix6通过ODBC方式监控Oracle 19C的详细过程 - Python技术站