首页 > 代码库 > Zabbix 3.2.6通过ODBC监控MySQL

Zabbix 3.2.6通过ODBC监控MySQL

一、总览

    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