zabbix mysql 查询_zabbix ODBC数据库监控(22)

ODBC是C语言开发的、用于访问数据库的中间件接口.zabbix支持查询任何ODBC支持的数据库.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

odbcinst.ini范例:

# 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

Database    = zabbix

参数详解:

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教程节后继续更新,欢迎大家常回来看看。


版权声明:本文为weixin_36247139原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。