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 进行可视化,其中应该有一个指标模板。
马蒙苏工作计划
特点 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 上可用指标的列表
5 分钟内运行 Mamonsu
要使用Mamonsu设置对PostgreSQL和操作系统的监控,您可以通过以下5个简单步骤在5分钟内完成。
- 安装Mamonsu。 Mamonsu 可以从源代码构建或使用可用的软件包。
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- 连接设置。 需要在agent.conf文件中设置PostgreSQL和Zabbix Server的连接参数。
/etc/mamonsu/agent.conf
- 将模板导出到 Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- 添加主机到 Zabbix Server。 导出的模板将自动连接到 Zabbix Server 上的新主机。
$ mamonsu zabbix host create mamonsu-demo
- 发射.
$ service mamonsu start
Mamonsu发展方向
作为 Mamonsu 开发的一部分,我们计划完善指标并创建新的插件,例如用于监控单个表大小的插件。 我们还计划改进和创建额外的工具,并通过命令扩展自动调整功能 马蒙苏调.
PostgreSQL 监控模块作为 Zabbix Agent 2 的一部分
使用快速且流行的驱动程序连接到 PostgreSQL
到目前为止,我们使用了两个接口:Exporter(通过密钥调用处理程序)和 Configurator Zabbix Agent 2(读取并检查配置文件中指定的服务器的连接参数)。
我们尝试通过对指标进行分组并使用指标和指标组的处理程序(handler),以及使用 JSON 中的指标组作为因变量(依赖项)以及低级发现(发现规则)来优化 DBMS 的工作)。
主要特点
- 在检查之间保持与 PostgreSQL 的持久连接;
- 支持灵活的轮询间隔;
- 兼容 PostgreSQL 10 版本和 Zabbix Server 4.4 版本;
- 由于 Zabbix Agent 2 允许您创建多个会话,因此能够同时连接和监控多个 PostgreSQL 实例。
PostgreSQL 连接参数级别
PostgreSQL 连接参数总共分为三个级别,即任务和设置:
- 全球,
- 会议,
- 宏。
-
全局参数在代理级别设置,会话和宏参数定义数据库连接参数。
-
PostgreSQL 的连接参数 - 会话在文件中设置 zabbix_agent2.conf.
PostgreSQL 连接选项 - 会话
- 关键字之后 会议 指定了唯一的会话名称,该名称必须在密钥(模板)中指定。
- 参数 的URI и 用户名 每个会话都需要。
- 如果未指定基本名称,则使用所有 PostgreSQL 会话的默认公共基本名称,该名称也在配置文件中设置。
- PostgreSQL 的连接参数 - 宏在模板中的度量键中设置(类似于 Zabbix Agent 1 中使用的方法),即它们在模板中创建,然后指定为键中的参数。 在这种情况下,宏的顺序是固定的,即,例如, 的URI 总是列在第一位。
PostgreSQL 连接参数 - 宏
PostgreSQL 监控模块已经包含超过 95 个指标,使您可以覆盖相当广泛的 PostgreSQL 参数,包括:
- 连接数
- 数据库大小,
- 归档 wal 文件,
- 检查站,
- “臃肿”的表的数量,
- 复制状态,
- 副本延迟。
如果没有操作系统参数,PostgreSQL 指标就无法提供信息。 但 Zabbix Agent 2 已经知道如何收集操作系统参数,因此为了获得完整的情况,我们只需将必要的模板连接到主机即可。
处理程序
处理程序是模块的主要单元,在其中执行请求本身并允许您接收指标。
要获得一个简单的指标:
- 创建一个文件以获取新指标:
zabbix/src/go/plugins/postgres/handler_uptime.go
- 我们连接包并指定指标的唯一键(keys):
- 我们使用请求创建一个处理程序(handler),即我们启动一个包含结果的变量:
- 我们执行请求:
有必要检查请求是否有错误,然后 Zabbix Agent 2 进程将获取结果。
- 注册新的度量密钥:
注册指标后,您可以使用新指标重建代理。
该模块从 Zabbix 5.0 开始在网站上可用
谢谢你!
有用的链接
来源: habr.com