zabbix ODBC 數據庫監控

ODBC是C語言開發的、用於訪問數據庫的中間件接口.zabbix支持查詢任何ODBC支持的數據庫.zabbix經過調用ODBC來獲取數據庫的數據以及數據庫狀態等等信息.html

1. 安裝unixODBC

官方主頁:http://www.unixodbc.org/download.html.安裝方法以下mysql

RedHat/Fedora/Cetnos
shell> yum -y install unixODBC unixODBC-develweb

SUSE zyppersql

# zypper in unixODBC-develshell

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-unixODBCcentos

3. 配置unixODBC

配置odbcinst.ini和odbc.ini兩個配置文件便可,驗證配置是否正常,以下命令:
# odbcinst -jide

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
odbcinst.ini範例:
# vi /etc/odbcinst.ini
[mysql]
Description = ODBC for MySQL
Driver      = /usr/lib/libmyodbc5.so
參數詳解:
屬性    描述
mysql    數據庫驅動名稱.
Description    數據庫驅動描述.
Driver    數據庫驅動類庫具體路徑ui

odbc.ini範例:
[test]
Description = MySQL test database
Driver      = mysql
Server      = 127.0.0.1
User        = root
Password    =
Port        = 3306
Database    = zabbix
參數詳解:
Attribute    Description
test    數據源名稱 (DSN).
Description    數據源描述.
Driver    數據庫驅動名 - 在 odbcinst.ini指定
Server    數據庫 IP/DNS.
User    數據庫用戶名.
Password    數據庫密碼.
Port    數據庫端口
Database    數據庫名稱.spa

驗證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字節,所以錯誤消息太長會被截斷.

相關文章
相關標籤/搜索