zabbix ODBC 數據庫監控
1. 安裝unixODBC
官方主頁:http://www.unixodbc.org/download.html.安裝方法如下
RedHat/Fedora/Cetnos
shell> yum -y install unixODBC unixODBC-devel
SUSE zypper
# zypper in unixODBC-devel
2. 安裝unixODBC驅動
要監控mysql等數據庫必須先安裝基於c開發的unixODBC數據庫驅動.redhat直接yum安裝,suse使用zypper安裝.其他系統,源碼安裝,官方地址:http://www.unixodbc.org/drivers.html.
redhat/centos
shell> yum install mysql-connector-odbc
SUSE
zypper in MyODBC-unixODBC
3. 配置unixODBC
配置odbcinst.ini和odbc.ini兩個配置文件即可,驗證配置是否正常,如下命令:
# odbcinst -j
unixODBC 2.2.14DRIVERS............: /etc/odbcinst.iniSYSTEM DATA SOURCES: /etc/odbc.iniFILE DATA SOURCES..: /etc/ODBCDataSourcesUSER DATA SOURCES..: /root/.odbc.iniSQLULEN Size.......: 8SQLLEN Size........: 8SQLSETPOSIROW Size.: 8
# vi /etc/odbcinst.ini
[mysql]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
參數詳解:
屬性 描述
mysql 數據庫驅動名稱.
Description 數據庫驅動描述.
Driver 數據庫驅動類庫具體路徑
odbc.ini範例:
[test]
Description = MySQL test database
Driver = mysql
Server = 127.0.0.1
User = root
Password =
Port = 3306
參數詳解:
Attribute Description
test 數據源名稱 (DSN).
Description 數據源描述.
Driver 數據庫驅動名 - 在 odbcinst.ini指定
Server 數據庫 IP/DNS.
User 數據庫用戶名.
Password 數據庫密碼.
Port 數據庫端口
Database 數據庫名稱.
驗證ODBC是否可用,使用isql(命令unixODBC包提供)命令,如下:
# isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
命令解釋
help:列出所有表
help tablename:查詢表所有數據,類似select * from tablename
quit:退出
4. 編譯支持ODBC的zabbix
增加ODBC的支持,需要增加如下參數.起先我沒有加這個參數,我需要重新編譯一次
--with-unixodbc[=ARG] use odbc driver against unixODBC package
5. 配置監控項
配置數據庫監控項:
Specifically for database monitoring items you must enter:
Type | 類型,選擇監控數據庫. |
Key | 監控項key db.odbc.select[unique_description,data_source_name] unique_description:描述,要唯一 data_source_name:odbc.ini中定義的數據源名稱. |
User name | 數據庫用戶名 (可選,如果odbc.ini中已經定義) |
Password | 數據庫密碼 (可選,如果odbc.ini中已經定義) |
SQL query | SQL語句 |
Type of information | 返回值類型,如果類型選錯了,這個監控項會不可用 |
6. 註意事項
查詢語句執行時間不能超過配置的超時時間
查詢只允許返回一個值.
如果查詢語句返回了多個列,它只讀取第一列
如果查詢語句返回了多行,它讀取第一條
SQL語句必須是 select開頭,只能是查詢語句.
SQL語句不能包含換行符
7. 錯誤消息
從zabbix 2.08開始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
錯誤消息最長不能超過128字節,因此錯誤消息太長會被截斷.
zabbix ODBC 數據庫監控