zabbix之ODBC监控方式

news2024/11/15 9:37:39

如有错误,敬请谅解!

此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!

15.1 概述

ODBC监控对应于Zabbix前端中的 数据库监视器 监控项类型。

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

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

15.2 安装unixODBC

安装unixODBC建议的方式是使用Linux操作系统默认的软件包仓库。在最流行的Linux发行版中,unixODBC默认是包含在软件包仓库中的。如果没有,可以在unixODBC主页获取:unixODBC

使用 yum 软件包管理器在基于RedHat/Fedora的系统上安装unixODBC:

bash

[root@node1 ~]# dnf -y install unixODBC unixODBC-devel

15.3 安装unixODBC驱动

应该为将要被监控的数据库安装unixODBC数据库驱动。unixODBC有一个支持的数据库和驱动程序列表:http://www.unixodbc.org/drivers.html。在一些Linux发行版中,数据库驱动程序已经包含在了软件包仓库中了。使用 yum 软件包管理器,在基于RedHat/Fedora的系统上安装MySQL数据库驱动:

bash

[root@node1 ~]# dnf list | grep connector-odbc
mariadb-connector-odbc.x86_64                          3.1.12-1.el8                                      appstream            
[root@node1 ~]# dnf install -y mariadb-connector-odbc

15.4 配置unixODBC

通过编辑 odbcinst.ini 和 odbc.ini 文件来完成ODBC配置。要确认配置文件位置,请键入:

bash

[root@node1 ~]# odbcinst -j
unixODBC 2.3.7
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数据库驱动程序:

bash

[root@node1 ~]# cat /etc/odbcinst.ini
# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description	= ODBC for PostgreSQL
Driver		= /usr/lib/psqlodbcw.so
Setup		= /usr/lib/libodbcpsqlS.so
Driver64	= /usr/lib64/psqlodbcw.so
Setup64		= /usr/lib64/libodbcpsqlS.so
FileUsage	= 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[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


# Driver from the freetds-libs package
# Setup from the unixODBC package
[FreeTDS]
Description     = Free Sybase & MS SQL Driver
Driver          = /usr/lib/libtdsodbc.so
Setup           = /usr/lib/libtdsS.so
Driver64        = /usr/lib64/libtdsodbc.so
Setup64         = /usr/lib64/libtdsS.so
Port            = 1433


# Driver from the mariadb-connector-odbc package
# Setup from the unixODBC package
[MariaDB]
Description     = ODBC for MariaDB
Driver          = /usr/lib/libmaodbc.so
Driver64        = /usr/lib64/libmaodbc.so
FileUsage       = 1

odbc.ini 用来定义数据源

bash

[root@node1 ~]# cat /etc/odbc.ini 
[test]
Description = MySQL test database
Driver      = MariaDB
Server      = localhost
User        = zabbix
Password    = zabbix
Port        = 3306
Database    = zabbix

参数详细信息:

属性 描
test数据源名称(DSN)
Description数据源描述.
Driver数据库驱动名称 - 在odbcinst.ini文件中指定
Server数据库服务器的IP/DNS
User用于数据库连接的用户名
Password数据库用户的密码
Port数据库连接端口
Database数据库名称

要验证ODBC连接是否正常运行,应测试到数据库的连接。可以使用 isql 程序(包含在unixODBC软件包中):

bash

[root@node1 ~]# isql test
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> quit

15.5 配置Item

添加一个统计hosts表条数的Item

image-20220131114403548

所有标有红色星号的为必填字段。

对数据库监控,必须输入的监控项:

Type这里选择 数据库监控器
Key输入 db.odbc.select[unique_description,data_source_name] 这里唯一的描述将用于识别触发器中的监控项等 数据源名称 (DSN)必须按照odbc.ini中指定的方式设置。
User name输入数据库用户名 (如果用户在odbc.ini中已指定,此项可选填)
Password输入数据用户密码 (如果用户在odbc.ini中已指定,此项可选填)
SQL query输入SQL查询
Type of information了解查询返回的信息类型很重要, 以便在此处选择正确的类型。若使用不正确的 信息类型 监控项将不受支持。

注意事项

  • Zabbix不限制查询执行时间。 用户可以选择在合理时间内执行的查询。
  • Zabbix server的 Timeout 参数值也用作于ODBC登陆超时时间 (请注意,根据ODBC驱动,登录超时设置可能会被忽略)。
  • 查询只能返回一个值。
  • 如果查询返回多个列,则只读取第一列。
  • 如果查询返回多行,则只读取第一行。
  • SQL命令必须以select开头。
  • SQL命令不能包含任何换行符。
  • 另请参阅ODBC检查的 已知问题

错误信息

ODBC错误消息被构造成字段,以提供详细信息。例如:

none

Cannot execute ODBC query: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]└───────────┬───────────┘  └────┬────┘ └──┬──┘└┬┘└─────────────────────────────┬─────────────────────────────────────┘            │                   │         │    └─ Native error code            └─ Native error message            │                   │         └─ SQLState            └─ Zabbix message   └─ ODBC return code

请注意,错误消息长度限制为2048字节,因此信息可以被截断。如果有多个ODBC诊断记录,只要长度限制允许,Zabbix将尝试把它们连接起来(用“|”分隔)。

查看数据

如有错误,请联系作者删除

并恳请同行朋友予以斧正,万分感谢!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 使用组件 uni-list 实现聊天列表功能

如何使用 uniapp 的组件实现聊天列表的功能呢,翻阅了半天文档,终于找到一个实用的方法,下面是具体的步骤 1、首先需要下载对应的插件 去uniapp的官方文档进行下载(uni-ui - DCloud 插件市场),这里直接下载…

机器学习 day17( Tensorflow和Numpy中的数据形式 )

Numpy和Tensorflow NumPy (Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。TensorFlow是Google开源的第二代用于数字计算的软件库。它是基于数据流图的处理框架,…

使用Docker-Compose对Docker容器集群快速编排

目录 一、Docker-Compose1、Docker-Compose使用场景2、Docker-Compose简介3、Docker-Compose安装部署4、YAML 文件格式及编写注意事项5、Docker Compose配置常用字段6、Docker Compose 常用命令7、Docker Compose 文件结构8、docker Compose撰写nginx 镜像9、docker Compose撰写…

leetcode 链表+双指针问题小结

文章目录 141. 环形链表142. 环形链表 II19. 删除链表的倒数第 N 个结点160. 相交链表 141. 环形链表 设置两个速度不一样的链表,如果其中他们两个在经过一定的步数(进入环之后,在 n ∣ 环的大小 ∣ n \times |环的大小| n∣环的大小∣ 步后会重合)之后…

Redis的复制

配置 在Redis中使用复制功能非常容易 在从Redis服务器的redis.conf中写入slaveof masterip masterport即可,主Redis服务器不需要做任何配置在启动Redis服务器的时候,指定主服务器,redis-server --slaveof masterip masterport在客户端指定主…

038_SSS_Multi-Architecture Multi-Expert Diffusion Models

Multi-Architecture Multi-Expert Diffusion Models 1. Motivations & Arguments & Contributions 本文提出了一种在diffusion的不同步数采用不同的网络结构的方法提高生成质量和效率。 Diffusion模型需要大量的计算时间成本,改进方式主要有两个方面&…

教你用栈实现队列怎么写

大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 队列(Queue)和栈(Stack)是两个基本的数据结构。队列是一种先进先出(First-In-First-Out, FIFO)…

【Spring】——Spring生命周期

前言 ❤️❤️❤️Spring专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring_冷兮雪的博客-CSDN博客 前面我们讲完了Spring中有关Bean的读和取,我们还没有好好去了解了解Bean对象,这篇 …

XML文件原理详解

文章目录 一、简介1. XML定义2. 测试3. HTML和XML的区别 二、XML基本语法1. 语法规则2. 元素的属性3. CDATA4. DTD文件5. XSD文件 三、Java解析XML1. 简介2. 解析XML文件 四、Xpath1. 简介2. Xpath的使用 一、简介 1. XML定义 XML(可扩展标记语言)是一…

高压放大器在介电材料中的应用有哪些

高压放大器是一种能够输出高电压的放大器,具有多种应用,其中之一就是在介电材料中的应用。介电材料是指能够保持一定电荷和电场状态的物质,其特点包括绝缘性、极化性和介电常数等。下面安泰电子将详细介绍高压放大器在介电材料中的应用。 介电…

《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第4章 OpenHarmony应用开发实例

开发环境: 开发系统:Ubuntu 20.04 开发板:Pegasus物联网开发板 MCU:Hi3861 OpenHarmony版本:3.0.1-LTS 4.1新建工程及配置 1.新建工程及源码 新建目录 $ mkdir hello在applications/sample/myapp中新建src目录以及…

【零基础学机器学习 5】机器学习中的分类:什么是分类以及分类模型

👨‍💻 作者简介:程序员半夏 , 一名全栈程序员,擅长使用各种编程语言和框架,如JavaScript、React、Node.js、Java、Python、Django、MySQL等.专注于大前端与后端的硬核干货分享,同时是一个随缘更新的UP主. 你可以在各个…

华为OD机试真题 JavaScript 实现【字符串加密】【2023Q1 100分】,附详细解题思路

一、题目描述 有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,将所得结果作为新字母…

Spark大数据处理学习笔记(2.4)IDEA开发词频统计项目

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/0qE1L】 文章目录 一、词频统计准备工作1.1 安装Scala2.12.151.2 启动集群的HDFS与Spark1.3 在HDFS上准备单词文件 二、本地模式运行Spark项目2.1 新建Maven项目2.2 添加项目相关依赖2.3 创建日志…

009:vue中el-table删除当前行的代码示例

第009个 查看专栏目录: VUE — element UI echarts,openlayers,cesium,leaflet,mapbox,d3,canvas 免费交流社区 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例…

计算机网络(网络层,传输层,应用层,复习自用)

计算机网络 网络层网络层功能IP数据报格式IP数据报分片IPV4地址网络地址转换(NAT)子网划分与子网掩码无分类编址CIDRARP协议DHCP协议ICMP协议IPV6路由算法及路由协议RIR协议及距离向量算法OSPF协议及链路状态算法BGP协议IP组播移动IP网络层设备 传输层传…

Linux 部署Java项目-jar包和war包(五)

文章目录 一、前景(jar包和war包区别)一、部署jar包程序1. 项目打成jar包①方式一:使用idea工具打包项目②方式二:通过cmd命令的方式打包项目 2. 项目命令启动① 查看之前启动的程序,关闭之② 启动程序③ 验证是否部署…

Vue中如何进行数据筛选与搜索功能实现

Vue中如何进行数据筛选与搜索功能实现 在Vue应用中,数据筛选和搜索是常见的需求。本文将介绍如何在Vue中进行数据筛选和搜索功能的实现,包括基于原生JavaScript的筛选和搜索、基于Lodash库的筛选和搜索、以及基于Vue插件的筛选和搜索。 基于原生JavaScr…

Hazel游戏引擎(012)GLFW窗口事件

文中若有代码、术语等错误,欢迎指正 文章目录 前言如何确定GLFW窗口事件的回调函数参数Application接收事件回调流程原项目流程(12345)自己写的简单Demo与流程(123) 前言 此节目的 为了完成008计划窗口事件的接收glfw窗口事件以及回调部分 此节要完成 使用glfw函数…

C语言之指针初阶(1)

本章重点 1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 今天我们讲解前4个稍微简单一点的内容,下一篇博客讲解后三部分 首先引入话题 我们口语讲到指针,比如p指针,其实想要…