Z投稿|Zabbix如何通過ODBC對接Oracle獲取相關數據?

感謝作者鄒坤投稿!

其個人博客:https://blog.z0ukun.com/。


目  錄

1. 什麼是ODBC及其主要功能

2. 安裝Oracle-instantclient

3. 配置SQLPlus連接

4. 配置Zabbix監控項


1. 什麼是ODBC

ODBC數據源全稱是開放數據庫互連(Open Database Connectivity),在微軟公司開放的數據庫結構中的一部分,其實是一個應用程序的接口,主要用於提供數據庫的編寫應用程序的能力。因爲是微軟公司發佈的軟件,ODBC也提供了 SQL語句 的支持,用戶可以通過ODBC提供的API接口來使用和調度ODBC驅動程序,然後ODBC驅動程序通過SQL語言與數據庫管理系統進行聯繫。

ODBC數據源在每臺計算機中基本都存在,以WIN10爲例,打開控制面板—系統工具—數據源 (ODBC),很見到可以找到。雙擊打開ODBC數據源管理器,該管理器主要用於配置、添加、刪除各種不同的數據源,ODBC數據源對此專門進行了簡潔化,可以讓用戶更加方便的進行數據源的配置。

ODBC數據源管理器的主要功能如下:
1. 用戶DSN:ODBC用戶數據源存儲瞭如何與指定數據提供者連接的信息。用戶數據源只對當前的用戶可見,而且只能應用在本機上。
2. 系統DSN:ODBC系統數據源存儲瞭如何與指定數據提供者連接的信息。系統數據源對當前機器上的所有用戶可見。
3. 文件DSN:ODBC文件數據源允許用戶連接數據提供者。文件DSN可以由安裝了相同驅動程序的用戶共享。
4. 驅動程序:ODBC驅動程序允許那些支持ODBC的程序通過ODBC數據源獲取信息。如果安裝新的驅動程序,要使用其安裝程序。
5. 跟蹤:ODBC跟蹤允許創建調用ODBC驅動程序的日誌,以供技術人員查看;也可以輔助調試應用程序。Visual Studio跟蹤啓動Microsoft Visual Studio的ODBC跟蹤。
6. 連接池:連接池允許應用程序重新打開連接句柄,此操作將往返過程存入服務器。
以上是ODBC數據源管理器的主要功能,用戶也可以通過ODBC數據源管理器刪除原有的DNS,或者對以前配置的數據源進行修改,操作起來也很簡單快捷。今天介紹的是Zabbix如何通過ODBC對接Oracle獲取相關數據。
Zabbix官方文檔請 點擊查看

2. 安裝Oracle-instantclient

Instant Client Downloads for Linux x86-64 (64-bit) 下載地址
我這邊的Oracle數據庫環境是Oracle11GR2 v11.2.0.4;首先去Oracle的官方網站下載最新的Oracle客戶端。並在Zabbix主機上進行安裝:

   
   
   
# 我們先把需要用到的四個rpm離線包下載到本地
mkdir -p oracle
cd oracle

wget https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-basic-19.9.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-sqlplus-19.9.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-devel-19.9.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-odbc-19.9.0.0.0-1.x86_64.rpm
    
# 在安裝客戶端之前我們還需要在zabbix上安裝unixODBC和unixODBC-devel(這兩個包我們直接在線安裝即可)
yum -y install unixODBC unixODBC-devel

#
 安裝完成之後我們直接通過下面的命令安裝 oracle-instantclient
yum localinstall oracle-instantclient19.9-*

#
 oracle-instantclient的安裝位置如下
/usr/lib/oracle/19.9/client64
/usr/share/oracle/19.9/client64
/usr/include/oracle/19.9/client64

3. 配置SQLPlus連接

在設置環境變量之前,需要在/usr/lib/oracle/19.9/client64下創建 network/admin 文件夾,用來配置 tnsnames.ora :

   
   
   
# 創建 network/admin 文件夾
mkdir /usr/lib/oracle/19.9/client64/network/admin -p

#
 配置 tnsnames.ora 文件
Oracle=
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.200.110)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = 數據庫SID)
     )
   )
注:這裏也可以去創建 listener.ora和sqlnet.ora 配置文件。創建 sqlnet.ora 作用是配置解析順序, name/password@xxxxx xxxx會先去tnsnames尋找這個名字,沒有的話會解析爲IP NAME_DIRECTORY_PATH=(TNSNAMES,EZCONNECT) 。感興趣的小夥伴可以自定測試,這裏不再演示。
還需要配置環境變量。環境變量必須配置,否則會造成 [01000] unixODBC Can’t open lib ‘/usr/lib64/lxxxxx.so’ : file not found (執行一次即可)

   
   
   
export ORACLE_HOME=/usr/lib/oracle/19.9/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/19.9/client64/lib/libsqora.so.19.1
cd /usr/lib64/
ln -s libodbcinst.so.2.0.0 libodbcinst.so.1
添加Oracle驅動

   
   
   
# Example driver definitions
# vi /etc/odbcinst.ini
[Oracle]
Description     = Oracle ODBC driver for Oracle 11g
Driver          = /usr/lib/oracle/19.9/client64/lib/libsqora.so.19.1
添加Oracle數據源

   
   
   
# vi /etc/odbc.ini
# 配置示例
[DSN名稱]                               將在zabbix item key中使用
Driver = oracle                         tnsnames.ini 配置的驅動名稱
ServerName = ip:port/sid               ip:port/sid
UserID = 用戶名                         用戶名
Password = 密碼                         密碼

#
 具體配置
[Oracle]
Driver = Oracle
ServerName = 172.16.200.241:1521/數據庫SID
UserID = XXX
Password = XXX
ISQL測試

   
   
   
isql -v Oracle
# 檢測是否可連接及中間如遇到報錯的錯誤信息(這裏的Oracle要和DSN名稱一致)
[root@ZabbixServer]# isql -v Oracle
+---------------------------------------+
| Connected!                           |
|                                       |
| sql-statement                         |
| help [tablename]                     |
| quit                                 |
|                                       |
+---------------------------------------+
SQL>
SQLPlus測試連接

   
   
   
# sqlplus 用戶名/密碼@tnsnames.ora中配置的連接名稱
[root@ZabbixServer ~]# sqlplus 用戶名/用戶密碼@DSN名稱

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 6 11:34:11 2020
Version 19.9.0.0.0

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


???: 
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>
 

4. 配置Zabbix監控項

測試正常之後就可以去Zabbix裏面添加數據庫架監控項,需要填入鍵值、用戶名稱、密碼、具體的SQL查詢語句、更新時間;信息類型修改爲文本。具體配置信息如下:

配置完成以後我們可以點擊下方的測試按鈕,如果在結果裏能獲取到Result converted to 文本 OPEN 信息就代表成功了;可以去檢測-最新數據裏面看到已經成功拿到的數據。


延伸閱讀

Z投稿|12000nvps下Zabbix性能維護—某支付平臺經驗分享

歡迎投稿分享你的經驗,請以md格式發至小Z,審覈通過後發佈。



2021在線課本週四晚8點:告警的調用和處理!

最實用的課程,由社區專家張世宏毫無保留授課,還可以向老師交流日常疑問。點此報名本節課


 點擊報名:2021全年在線課 


關注Zabbix開源社區

乾貨滿滿

加“小Z“入羣

3000+Zabbixer已加入

本文分享自微信公衆號 - Zabbix開源社區(china_zabbix)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章