黑帽联盟

 找回密码
 会员注册
查看: 1312|回复: 0
打印 上一主题 下一主题

[运维监控] zabbix ODBC数据库监控

[复制链接]

895

主题

38

听众

3322

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情

    前天 13:01
  • 签到天数: 1643 天

    [LV.Master]伴坛终老

    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驱动
    要监控ysql等数据库必须先安装基于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:

    7.png

    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字节,因此错误消息太长会被截断.

    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    勿忘初心,方得始终!
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部