使用 Zabbix 监控 PostgreSQL

使用 Zabbix 监控 PostgreSQL
Daria Vilkova 为 Zabbix Meetup Online 所做的报告

我想向您介绍我们公司正在使用Zabbix开发的PostgreSQL和操作系统监控工具。

我们长期以来选择Zabbix作为我们的监控工具,因为它是一个由活跃社区支持的开源平台,在俄罗斯非常受欢迎。

我们创建了一个主动代理 - Mamonsu,它提供了比当时允许的标准工具更灵活的监控,并确保收集指标并将其发送到 Zabbix Server。 在我们公司,Mamonsu用于审核。

马蒙苏

Mamonsu 是一个用于监控 PostgreSQL 和操作系统的主动代理(Zabbix Trapper)。 Mamonsu(用 Python 编写)允许您在五分钟内配置 PostgreSQL 和操作系统监控设置。

Mamonsu 还有其他工具:

  • mamonsuune 是一个命令,用于编辑安装 Mamonsu 代理的计算机的 PostgreSQL 配置文件中的设置。
  • mamonsu report 是一个生成有关操作系统和 PostgreSQL 的答案的命令。

Mamonsu 安装在 DBMS 服务器上,收集信息,将其组合成 JSON,然后将其发送到 Zabbix Server 进行可视化,其中应该有一个指标模板。

使用 Zabbix 监控 PostgreSQL

马蒙苏工作计划

特点 Mamonsu

  • 使用 PostgreSQL 高效工作。 与 PostgreSQL 的持久连接是 Mamonsu 的主要优点。 在这种情况下,最大连接数等于它连接的最大数据库数。
  • 可扩展性。 Mamonsu 是一个完全“插件”的代理,由于每个插件的固定结构和 Python 的相对简单性,人们可以轻松学习如何编写新的或编辑标准插件,即指标收集参数。
  • 监控指标覆盖面广 对于 PotgreSQL,包括特定于扩展的指标。
  • 快速启动, 开箱即用的可用性.
  • 上传模板和配置文件,以及上传到Zabbix Server。
  • 跨平台,这对于我们使用各种Linux发行版(包括国内发行版)的客户来说非常重要。
  • BSD 条款许可证.

目前我们提供了很多插件,并且在每个下一个版本中我们尝试添加新的东西。

  • 14 个 PostgreSQL 插件,
  • 8 个适用于 Linux 操作系统的插件,
  • 4 个适用于 Windows 操作系统的插件。

Mamonsu 收集了 110 多个 PostgreSQL 和操作系统指标:

  • 70 个 PostgreSQL 指标,
  • 40 个操作系统 Linux 指标,
  • 8 个操作系统 Windows 指标。

关键指标包括 DBMS 可用性、连接数、数据库大小、检查点、读/写速度、锁、autovacuum 进程数和 WAL 生成速度。 可用指标的完整列表以及所有工具的详细说明可在 储存库 在 GitHub 网站上。

使用 Zabbix 监控 PostgreSQL

GitHub 上可用指标的列表

5 分钟内运行 Mamonsu

要使用Mamonsu设置对PostgreSQL和操作系统的监控,您可以通过以下5个简单步骤在5分钟内完成。

  1. 安装Mamonsu。 Mamonsu 可以从源代码构建或使用可用的软件包。

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. 连接设置。 需要在agent.conf文件中设置PostgreSQL和Zabbix Server的连接参数。

/etc/mamonsu/agent.conf

  1. 将模板导出到 Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. 添加主机到 Zabbix Server。 导出的模板将自动连接到 Zabbix Server 上的新主机。

$ mamonsu zabbix host create mamonsu-demo

  1. 发射.

$ service mamonsu start

Mamonsu发展方向

作为 Mamonsu 开发的一部分,我们计划完善指标并创建新的插件,例如用于监控单个表大小的插件。 我们还计划改进和创建额外的工具,并通过命令扩展自动调整功能 马蒙苏调.

PostgreSQL 监控模块作为 Zabbix Agent 2 的一部分

使用快速且流行的驱动程序连接到 PostgreSQL PGX (Go 的 PG 驱动程序和工具包)。

到目前为止,我们使用了两个接口:Exporter(通过密钥调用处理程序)和 Configurator Zabbix Agent 2(读取并检查配置文件中指定的服务器的连接参数)。

我们尝试通过对指标进行分组并使用指标和指标组的处理程序(handler),以及使用 JSON 中的指标组作为因变量(依赖项)以及低级发现(发现规则)来优化 DBMS 的工作)。

主要特点

  • 在检查之间保持与 PostgreSQL 的持久连接;
  • 支持灵活的轮询间隔;
  • 兼容 PostgreSQL 10 版本和 Zabbix Server 4.4 版本;
  • 由于 Zabbix Agent 2 允许您创建多个会话,因此能够同时连接和监控多个 PostgreSQL 实例。

PostgreSQL 连接参数级别

PostgreSQL 连接参数总共分为三个级别,即任务和设置:

  • 全球,
  • 会议,
  • 宏。

  1. 全局参数在代理级别设置,会话和宏参数定义数据库连接参数。

  2. PostgreSQL 的连接参数 - 会话在文件中设置 zabbix_agent2.conf.

使用 Zabbix 监控 PostgreSQL

PostgreSQL 连接选项 - 会话

  • 关键字之后 会议 指定了唯一的会话名称,该名称必须在密钥(模板)中指定。
  • 参数 的URI и 用户名 每个会话都需要。
  • 如果未指定基本名称,则使用所有 PostgreSQL 会话的默认公共基本名称,该名称也在配置文件中设置。

  1. PostgreSQL 的连接参数 - 宏在模板中的度量键中设置(类似于 Zabbix Agent 1 中使用的方法),即它们在模板中创建,然后指定为键中的参数。 在这种情况下,宏的顺序是固定的,即,例如, 的URI 总是列在第一位。

使用 Zabbix 监控 PostgreSQL

PostgreSQL 连接参数 - 宏

PostgreSQL 监控模块已经包含超过 95 个指标,使您可以覆盖相当广泛的 PostgreSQL 参数,包括:

  • 连接数
  • 数据库大小,
  • 归档 wal 文件,
  • 检查站,
  • “臃肿”的表的数量,
  • 复制状态,
  • 副本延迟。

如果没有操作系统参数,PostgreSQL 指标就无法提供信息。 但 Zabbix Agent 2 已经知道如何收集操作系统参数,因此为了获得完整的情况,我们只需将必要的模板连接到主机即可。

处理程序

处理程序是模块的主要单元,在其中执行请求本身并允许您接收指标。

要获得一个简单的指标:

  1. 创建一个文件以获取新指标:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. 我们连接包并指定指标的唯一键(keys):

使用 Zabbix 监控 PostgreSQL

  1. 我们使用请求创建一个处理程序(handler),即我们启动一个包含结果的变量:

使用 Zabbix 监控 PostgreSQL

  1. 我们执行请求:

使用 Zabbix 监控 PostgreSQL

有必要检查请求是否有错误,然后 Zabbix Agent 2 进程将获取结果。

  1. 注册新的度量密钥:

使用 Zabbix 监控 PostgreSQL

注册指标后,您可以使用新指标重建代理。

该模块从 Zabbix 5.0 开始在网站上可用 https://www.zabbix.com/download。 在这个版本的Zabbix中,参数是通过主机和端口分别设置的。 在即将发布的 Zabbix 5.0.2 中,连接参数将被打包到单个 URI 中。

谢谢你!

有用的链接

GitHub Mamonsu

Mamonsu文档

Zabbix Git

来源: habr.com

添加评论