概述
ODBC監控對應於Zabbix Web管理端中的Database monitor監控項類型。
ODBC是用於訪問數據庫管理系統(DBMS)的C語言中間件API。ODBC由Microsoft開發,后來移植到其它平台。
Zabbix可以查詢ODBC支持的任何數據庫。為了實現監控,Zabbix不直接連接到數據庫,而是使用ODBC中設置的ODBC接口和驅動。該功能允許為多個目的更加有效地監控不同的數據庫 - 例如,監控特定的數據庫隊列、使用統計信息等。Zabbix支持unixODBC,它是最常用的開源ODBC API實現之一。
安裝unixODBC
安裝unixODBC的建議方法是使用Linux操作系統的默認軟件包存儲庫。在流行的Linux發行版中,unixODBC默認包含在軟件包存儲庫中。如果不可用,可以在unixODBC主頁獲取:http://www.unixodbc.org/download.html.
使用yum包管理器在基於RedHat/Fedora的系統上安裝unixODBC:
shell> yum -y install unixODBC unixODBC-devel
unixODBC-devel包需要使用unixODBC support來編譯Zabbix。
安裝unixODBC驅動(同樣在server上安裝,用於連接遠程數據庫)
安裝unixODBC數據庫驅動。unixODBC有一個受支持的數據庫和驅動程序的列表:http://www.unixodbc.org/drivers.html. 在一些Linux發行版中,數據庫驅動程序包含在包倉庫中。使用yum包管理器在基於RedHat/Fedora的系統上安裝MySQL數據庫驅動:
shell> yum install -y mysql-connector-odbc
配置unixODBC
通過編輯odbcinst.ini和odbc.ini文件來完成ODBC配置。要確認配置文件位置,請鍵入:
shell> odbcinst -j
odbcinst.ini用於列出已安裝的ODBC數據庫驅動程序:
[mysql]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
參數詳細信息:
屬性 |
描述 |
mysql |
數據庫驅動程序名稱。 |
Description |
數據庫驅動描述。 |
Driver |
數據庫驅動程序庫位置。 |
odbc.ini用於定義數據源:(該文件/etc/odbc.ini默認不存在需要手動建立,添加以下內容)
[test]
Description = MySQL test database
Driver = mysql
Server = 127.0.0.1
User = root
Password =
Port = 3306
Database = zabbix
屬性 |
描述 |
test |
數據源名稱 (DSN)。 |
Description |
數據源描述。 |
Driver |
數據庫驅動名稱。 - 被指定在文件 odbcinst.ini |
Server |
數據庫服務器的 IP/DNS。 |
User |
數據庫連接的用戶。 |
Password |
數據庫連接用戶的密碼。 |
Port |
數據庫連接端口。 |
Database |
數據庫名稱。 |
要驗證ODBC連接是否正常工作,應測試與數據庫的連接。 可以使用isql實用程序(包含在unixODBC包中):
shell> isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
使用ODBC support編譯Zabbix
要啟用ODBC支持,Zabbix應該使用以下標志進行編譯:
--with-unixodbc[=ARG] 使用odbc驅動程序與unixODBC包
在Zabbix Web前端配置監控項
配置數據庫的 監控項:
專用於數據庫監控項的必要輸入:
Type |
選擇數據庫監控器。 |
Key |
輸入db.odbc.select[unique_description,data_source_name]。這里唯一的描述將用於識別觸發器中的監控項等。必須按照odbc.ini中的指定設置數據源名稱(DSN)。 |
User name |
輸入數據庫用戶名(如果用戶在odbc.ini中指定,則可選) |
Password |
輸入數據庫用戶密碼(如果在odbc.ini中指定密碼,則為可選項) |
SQL query |
輸入SQL查詢 |
Type of information |
了解查詢將返回什么類型的信息很重要,以便在此處正確選擇。 使用不正確的類型的信息監控項將不受支持。 |
重要信息
- 該查詢的執行時間不能超過服務器上的Timeout參數。從Zabbix 2.0.8開始,Timeout參數值也用作ODBC登錄超時(請注意,根據ODBC驅動程序,登錄超時設置可能會被忽略)。
- 該查詢只能返回一個值。
- 如果查詢返回多個列,則只讀取第一列。
- 如果查詢返回多行,則只讀取第一行。
- SQL命令必須以select開始。
- SQL命令不能包含任何換行符。
- 另請參考ODBC的已知問題。
錯誤信息
從Zabbix 2.0.8開始,ODBC錯誤消息被構造為字段以提供更詳細的信息。示例:
Cannot execute ODBC query:[SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]|
------------------------- --------- ----- | ------------------------------------------------------------------- |
| | | `- Native error code `- error message. `- Record separator
| | `-SQLState
`- Zabbix message `- ODBC return code
注意,錯誤消息長度限制為2048字節,因此消息可以被截斷。如果有多個ODBC診斷記錄,Zabbix會嘗試把它們連起來,只要長度限制允許。
注意:
目前CentOS倉庫中的mysql-connector-odbc版本是8.0,可用於連接MySQL Server 8.0, 5.7, 5.6, and 5.5
下面是整個過程:
yum install unixODBC unixODBC-devel mysql-connector-odbc -y
vim /etc/odbcinst.ini
vim odbc.ini