zabbix-ODBC-oracle

odbc版本向下兼容,本次使用的是18.5版本的

在zabbix-server上安装
yum -y install unixODBC unixODBC-devel

下载以下4个包

-rw-r--r-- 1 root root 51528664 6月   3 12:27 oracle-instantclient18.5-basic-18.5.0.0.0-3.x86_64.rpm
-rw-r--r-- 1 root root   609896 6月   3 12:25 oracle-instantclient18.5-devel-18.5.0.0.0-3.x86_64.rpm
-rw-r--r-- 1 root root   257264 6月   3 12:24 oracle-instantclient18.5-odbc-18.5.0.0.0-3.x86_64.rpm
-rw-r--r-- 1 root root   709112 6月   3 12:26 oracle-instantclient18.5-sqlplus-18.5.0.0.0-3.x86_64.rpm

本地安装
yum localinstall oracle-instantclient18.5-*

安装位置分别在

/usr/share/oracle/18.5/client64
/usr/include/oracle/18.5/client64
/usr/lib/oracle/18.5/client64

设置环境变量之前,在/usr/lib/oracle/18.5/client64下创建network/admin文件夹,
mkdir /usr/lib/oracle/18.5/client64/network/admin -p

配置sqlplus连接扩展

network/admin下创建tnsnames.ora

test_oracle=
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = PORT))
     (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = 数据库SID)
     )
    )

创建sqlnet.ora 作用是配置解析顺序, name/password@xxxxx xxxx会先去tnsnames寻找这个名字,没有的话会解析为ip
NAME_DIRECTORY_PATH=(TNSNAMES,EZCONNECT)

配置环境变量
环境变量必须配置,否则会造成[01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib64/lxxxxx.so' : file not found

export ORACLE_HOME=/usr/lib/oracle/18.5/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:$LD_LIBRARY_PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

配置需要的类库

chmod +x /usr/lib/oracle/18.5/client64/lib/libsqora.so.18.1
cd /usr/lib64/
ln -s libodbcinst.so.2.0.0  libodbcinst.so.1

添加oracle驱动

# vim  /etc/odbcinst.ini
[oracle]
Description     = Oracle ODBC driver for Oracle 11g
Driver          = /usr/lib/oracle/18.5/client64/lib/libsqora.so.18.1

添加oracle数据源

# vim  /etc/odbc.ini 
[DSN名称]                                将在zabbix item key中使用
Driver= oracle                          tnsnames.ini 配置的驱动名称
ServerName= ip:port/sid        ip:port/sid
UserID= 用户名                        用户名
Password= 密码                       密码

isql测试

isql -v test 
检测是否可连接及中间如遇到报错的错误信息
isql test
+---------------------------------------+
| Connected!                                                |
|                                                                     |
| sql-statement                                            |
| help [tablename]                                       |
| quit                                                             | 
|                                                                     |
+---------------------------------------+

sqlplus测试连接

# sqlplus 用户名/密码@tnsnames.ora中配置的连接名称

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 19 11:39:18 2017

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> exit

zabbix配置

出现的问题

  1. 以nologin用户启动的监控系统,配置上监控项之后,报错

    需要查找zabbix服务的环境变量文件 没有则新建 默认情况在 /etc/sysconfig 下 server 新建zabbix-server proxy新建zabbix-proxy
    对于自定义的zabbix服务,可以查询相关的service文件查找环境变量文件路径
    cat /usr/lib/systemd/system/sdata-server.service

    编辑该文件即可
    在其中添加
vim /etc/sysconfig/zabbix-server
LD_LIBRARY_PATH=/usr/lib/oracle/18.5/client64/lib

重启servewr服务即可
官方issue https://support.zabbix.com/browse/ZBX-12450

sql的自动发现

https://www.zabbix.com/documentation/4.0/zh/manual/discovery/low_level_discovery/sql_queries

原文地址:https://www.cnblogs.com/cizao/p/13039881.html