Zabbix 使用 ODBC 监控 MySQL

文章
林里克斯

Zabbix 使用 ODBC 监控 MySQL


实验平台:CentOS Linux release 7.9.2009 (Core)

zabbix_server Version:zabbix_server (Zabbix) 6.0.6


ODBC监控对应于Zabbix Web管理端中的数据库监控器监控项类型。

ODBC是用于访问数据库管理系统(DBMS)的C语言中间件API。ODBC由Microsoft开发,后来移植到其它平台。

Zabbix可以查询ODBC支持的任何数据库。为了实现监控,Zabbix不直接连接到数据库,而是使用ODBC中设置的ODBC接口和驱动。该功能允许为多个目的更加有效地监控不同的数据库 - 例如,监控特定的数据库队列、使用统计信息等。 Zabbix支持unixODBC,它是最常用的开源ODBC API实现之一。

:star: 前提使用 zabbix 需要启用 ODBC 支持,使用 --with-unixodbc 此进行编译

1 安装 unixODBCunixODBC 驱动

$ sudo yum -y install unixODBC unixODBC-devel mysql-connector-odbc

2 配置 unixODBC

2.1 查看 odbc 默认配置文件位置

$ odbcinst -j
#查看 odbc 默认配置文件位置
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
#odbcinst.ini 用于列出已安装的 ODBC 数据库驱动程序
SYSTEM DATA SOURCES: /etc/odbc.ini
#odbc.ini 用于定义数据源
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/jarbo/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

2.2 odbcinst.ini

[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

2.3 odbc.ini

$ sudo vim /etc/odbc.ini
#新增数据源

[mysql01]
数据源名称 (DSN)
Description = MySQL Monitor
#数据源描述
Driver      = mysql
#数据库驱动名称。 - 被指定在文件 odbcinst.ini
Server      = 10.0.0.91
#数据库ip
User        = zabbix
#数据库用户
Password    = *****
#数据库密码
Port        = 3306
#数据库端口
Database    = zabbix
#数据库名称
#sock       = /data/mysql/run/mysql.sock

2.4 验证数据源

$ isql -v mysql01
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

3 配置 Zabbix

Zabbix 使用 ODBC 监控 MySQL

Type    #类型选择数据库监控
Key     #db.odbc.select[<unique short description>,<dsn>,<connection string>]
#db.odbc.select             #是必填,不能修改
#<unique short description> #简短描述,可随意。列如当前连接数就写为 Threads_connecyed
#<dsn>                      #数据源,配置在 odbc.ini 中的名称,比如本文中的数据源名称就是 mysql01
#<connection string>        #连接字符串,选填
用户名称    #数据库用户名(如果用户在odbc.ini中指定了这里就可以忽略,也可以用宏变量得形式)
密码       #数据库密码(如果用户在odbc.ini中指定了这里就可以忽略,也可以用宏变量得形式)
SQL 查询      #需要监控数值的 SQL 语句

重要信息

  • 该查询的执行时间不能超过服务器上的[Timeout]参数。从Zabbix 2.0.8开始,[Timeout]参数值也用作ODBC登录超时(请注意,根据ODBC驱动程序,登录超时设置可能会被忽略)。
  • 该查询只能返回一个值。
  • 如果查询返回多个列,则只读取第一列。
  • 如果查询返回多行,则只读取第一行。
  • SQL命令必须以select开始。
  • SQL命令不能包含任何换行符。

错误信息

从Zabbix 2.0.8开始,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

请注意,错误消息长度限制为2048字节,因此消息可以被截断。如果有多个ODBC诊断记录,Zabbix会尝试把它们连起来,只要长度限制允许。


Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

592 0 2023-02-16


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-04-28

今日天气
站点统计
  • 文章总数:240篇
  • 分类总数:29个
  • 评论总数:10条
  • 本站总访问量 216629 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!