1. 程式人生 > >Zabbix 3.2.6通過ODBC監控MySQL

Zabbix 3.2.6通過ODBC監控MySQL

zabbix

一、總覽

ODBC的監控和在Zabbix前端配置數據庫監控條目類型基本一致。

ODBC是用C語言編寫的用於連接數據庫管理系統的一個中間件,最初有微軟公司研發,後來發展到各大平臺。

有了ODBC的支持,Zabbix可以查詢很多種數據庫,因為Zabbix自己不直接去連接數據庫,而是通過ODBC的接口和驅動,因此可以更加高效的去監控不同的數據庫。

二、安裝配置

1、編譯Zabbix server

要支持ODBC功能,在編譯的時候需要加上--with-unixodbc,解決依賴需要安裝如下軟件包,

yum -y install unixODBC unixODBC-devel

2、安裝unixODBC驅動

驅動是用於ODBC連接數據庫用的,他可以支持各式各樣的驅動,在大部分的Linux發行版中的倉庫中,都有這些驅動,我們安裝一個MySQL的驅動,用來監控MySQL數據庫。

yum install mysql-connector-odbc

3、配置unixODBC

ODBC的配置主要是通過修改odbcinst.iniodbc.ini兩個文件,可以通過下面的命令去指定配置文件的位置。

# odbcinst -j
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

odbcinst.ini主要是配置安裝的ODBC數據庫驅動,各字段含義我不再介紹。

[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc5.so
Setup           = /usr/lib/libodbcmyS.so
Driver64        = /usr/lib64/libmyodbc5.so
Setup64         = /usr/lib64/libodbcmyS.so
FileUsage       = 1

odbc.ini主要是配置數據源。

[test]
Description = MySQL test database
Driver      = mysql
Server      = 127.0.0.1
User        = zabbix
Password    = zabbix
Port        = 3306
Database    = zabbix

我們可以通過在安裝unixODBC的時候附帶安裝的一個命令isql來判斷我們是否可以成功的連接數據庫。

# isql test
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

4、配置Zabbix前端web

首先創建一個監控條目。

技術分享

這幾個條目是必填的,具體解釋如下:

Type這裏我們選擇Database monitor
Key

選擇db.odbc.select[unique_description,data_source_name]

unique_description將會用於觸發器中的條目

data_source_name填寫在odbc.ini中的test

User name輸入在odbc.ini中的用戶名
Password輸入在odbc.ini中的密碼
SQL query輸入SQL查詢語句
Type of information需要我們之前查詢的返回值是什麽,正確的選擇才會被支持

5、註意事項

  • 查詢語句執行時間不能超過配置的超時時間

  • 查詢只允許返回一個值.

  • 如果查詢語句返回了多個列,它只讀取第一列

  • 如果查詢語句返回了多行,它讀取第一條

  • SQL語句必須是 select開頭,只能是查詢語句.

  • SQL語句不能包含換行符

6、錯誤消息

從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字節,因此錯誤消息太長會被截斷。

三、驗證

因為我們沒有創建圖像,可以從最新數據庫裏面查看我們創建的條目。

技術分享

你可以寫更加復雜的SQL查詢語句,以及制作觸發器來對數據庫更加詳細的監控。




技術分享

本文出自 “運維點滴記錄” 博客,請務必保留此出處http://wzlinux.blog.51cto.com/8021085/1948160

Zabbix 3.2.6通過ODBC監控MySQL