zabbix ODBC数据库监控(22)

凉白开 zabbix1539,79011字数 2709阅读9分1秒阅读模式

ODBC是C语言开发的、用于访问数据库的中间件接口.zabbix支持查询任何ODBC支持的数据库.zabbix通过调用ODBC来获取数据库的数据以及数据库状态等等信息.

1. 安装unixODBC

官方主页:http://www.unixodbc.org/download.html.安装方法如下文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

RedHat/Fedora/Cetnos
shell> yum -y install unixODBC unixODBC-devel文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

SUSE zypper文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

# zypper in unixODBC-devel文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

2. 安装unixODBC驱动

要监控mysql等数据库必须先安装基于c开发的unixODBC数据库驱动.redhat直接yum安装,suse使用zypper安装.其他系统,源码安装,官方地址:http://www.unixodbc.org/drivers.html.文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

redhat/centos
shell> yum install mysql-connector-odbc
SUSE
zypper in MyODBC-unixODBC文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

3. 配置unixODBC

配置odbcinst.ini和odbc.ini两个配置文件即可,验证配置是否正常,如下命令:
# odbcinst -j文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

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    数据库驱动类库具体路径文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

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    数据库名称.文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

验证ODBC是否可用,使用isql(命令unixODBC包提供)命令,如下:
# isql test
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

命令解释
help:列出所有表
help tablename:查询表所有数据,类似select * from tablename
quit:退出文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

4.  编译支持ODBC的zabbix

增加ODBC的支持,需要增加如下参数.起先我没有加这个参数,我需要重新编译一次
--with-unixodbc[=ARG]   use odbc driver against unixODBC package文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

5.  配置监控项

配置数据库监控项:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

Specifically for database monitoring items you must enter:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

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 返回值类型,如果类型选错了,这个监控项会不可用

 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

6. 注意事项

查询语句执行时间不能超过配置的超时时间
查询只允许返回一个值.
如果查询语句返回了多个列,它只读取第一列
如果查询语句返回了多行,它读取第一条
SQL语句必须是 select开头,只能是查询语句.
SQL语句不能包含换行符文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

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字节,因此错误消息太长会被截断.文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

预祝大家端午节快乐,运维生存时间zabbix教程节后继续更新,欢迎大家常回来看看。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/ 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 30/05/2014 01:00:23
  • 转载请务必保留本文链接:https://www.ttlsa.com/zabbix/zabbix-odbc-monitor/
评论  15  访客  13
    • 何もない、
      何もない、 0

      您好,按照您的这个操作。我试了一下。运行isql test命令的时候。报错[ISQL]ERROR: Could not SQLConnect 。 系统是centos7 64位的,mysql是5.6版本的。zabbix是3.2的。odbcinst.ini配置和odbc.ini配置,跟您上述的是一样的,看了网上的问题,说是description的路径有问题,也的确/usr/lib/libmyodbc5.so 这路径没有该文件。做了一个软链接。还是无法进入页面。还请指教。

      • Tang
        Tang 9

        ./configure –prefix=/usr/local/zabbix –enable-server –enable-agent –with-mysql=/usr/local/mysql/bin/mysql_config –with-net-snmp –with-libcurl –with-libxml2 –with-OpenIMPI –with-unixodbc
        编译过程中,经过测试,zabbix 能够正常使用。

        • 85757916
          85757916 3

          好牛,谢谢分享..

          • 泡面花装弩
            泡面花装弩 9

            问个问题啊,现在需要使用proxy, ODBC可以用proxy么

            • 泡面花装弩
              泡面花装弩 9

              ..弱弱的问下。ODBC支持使用 proxy获取数据么?

              • 运维生存时间
                运维生存时间 7

                –with-unixodbc[=ARG] 改成l –with-unixodbc

                  • 蒋元方(Peja)
                    蒋元方(Peja) 9

                    @ 运维生存时间 重新编译的话只要加这一个参数还是说原来那些参数需要重新一起写上?例如–enable-server这种
                    接着还需要make和make install么?新手,多指教。

                    • stojakoivic
                      stojakoivic 9

                      @ 运维生存时间 重新编译的话只要加这一个参数还是说原来那些参数需要重新一起写上?例如–enable-server这种
                      接着还需要make和make install么?新手,多指教。

                      • stojakoivic
                        stojakoivic 9

                        @ 运维生存时间 重新编译的话只要加这一个参数还是说原来那些参数需要重新一起写上?例如–enable-server这种
                        接着还需要make和make install么?需要先make clean么?新手,多指教。

                      • aa
                        aa 9

                        [root@localhost zabbix-2.4.3]# ./configure –with-mysql –with-net-snmp –with-libcurl –with-unixodbc[=ARG] –enable-server –enable-agent –enable-proxy –prefix=/usr/local/zabbix
                        configure: error: invalid package name: unixodbc[
                        什么意思?

                      评论已关闭!