使用 Python Processing Engine 的 Deadman 警报

导航至

有时沉默不是金;而是一个危险信号。无论您是监控物联网传感器、系统日志还是应用程序指标,数据丢失可能与异常数据一样重要。如果无法看到这些空白,您可能会忽略潜在的故障、安全威胁或运营效率低下。在时间序列工作流程中,检测沉默通常是故障的第一个迹象——无论是网络问题、设备故障、传感器故障还是进程停滞。

之前的博客文章中,我们学习了如何将 Python Processing Engine 与 InfluxDB 3 Core 和 Enterprise 结合使用,以构建阈值警报,并使用 Wall Sync 触发器将通知发送到 Slack、Discord 或 HTTP 端点。在这篇文章中,我们将学习如何利用称为 deadman 触发器的计划触发器来构建 deadman 检查和警报。Deadman 触发器是一种强大的警报策略,可在预期数据停止到达时立即通知您。

deadman 检查插件可以在此处找到。该插件监控目标表是否有最近的写入,如果在可配置的时间阈值内未收到任何新数据,则发送 Slack 警报。

这篇博文将涵盖

  • InfluxDB 3 Core 和 Enterprise 的要求和设置(这篇文章适用于 Core 和 Enterprise)
  • 获取 Slack Webhook URL
  • 创建 InfluxDB 3 Core 和 Enterprise 资源
  • 测试插件并发送 deadman 警报

要求和设置

下载 InfluxDB 3 Core 或 Enterprise,并按照相应的 CoreEnterprise 安装指南进行操作,以便与本教程一起使用。您可以在本地或 Docker 容器中运行此示例,但我建议使用 Docker 以方便设置、隔离和清理。也就是说,这篇文章假设您在 Docker 容器化环境中运行 InfluxDB 3。

在 Docker 中运行之前,请确保您的系统上已安装 Docker,并为您选择的版本(Core 或 Enterprise)拉取最新的 InfluxDB 3 镜像。我将使用 InfluxDB 3 Core,因为它是 OSS 版本。您可以免费使用 Enterprise,只需指定“家庭使用”即可。

拉取此 repo 后,将文件另存为 deadman_alert.py 在您配置的插件目录中(例如,/path/to/plugins/)。然后运行以下命令

docker run -it --rm --name test_influx -v
~/influxdb3/data:/var/lib/influxdb3   -v /path/to/plugins/:/plugins -p 
8181:8181 quay.io/influxdb/influxdb3-core:latest serve --node-id 
my_host --object-store file --data-dir /var/lib/influxdb3 --plugin-dir 
/plugin

此命令使用最新镜像运行名为 test_influx 的临时 InfluxDB 3 Core 容器。它挂载您的本地数据目录以持久化数据库文件,并挂载包含 deadman 检查插件的插件目录。它还公开端口 8181,以便您可以在本地访问数据库并使用 serve 命令 和基于文件的对象存储(您也可以轻松地使用 S2 存储桶进行基于文件的存储)、自定义节点 ID 和挂载的插件目录来启动服务器。

按照此 文档 了解如何创建 Slack webhook URL。您需要在触发器创建过程中包含 webhook 作为参数。或者,您可以使用 acpublic webhook,该 webhook 为用户提供测试与 InfluxDB 相关的通知的机会。它已固定在 InfluxDB Slack 中的 #notifications-testing 频道中。

创建 InfluxDB 3 资源并生成 deadman 警报

创建一个数据库来监控心跳

influxdb3 create database my_database

现在,向其中写入一些数据

influxdb3 write --database my_database "sensor_data temp=20"

接下来,创建并启用触发器

influxdb3 create trigger \’
  --trigger-spec "every:10s" \
--plugin-filename "deadman_alert.py" \
  --trigger-arguments table=sensor_data,threshold_minutes=1,slack_webhook=https://hooks.slack.com/services/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 \
  --database my_database \
  sensor_deadman

deadman 检查插件每 10 秒运行一次。它检查在最后一分钟内写入到 my_database 中的 sensor_data 表的数据。如果写入了数据,您将在 InfluxDB 日志中看到以下输出

INFO influxdb3_py_api::system_py: processing engine: Data exists in 'sensor_data' in the last 1 minutes.

如果在最后一分钟内没有写入数据,您将在 Slack 中收到以下通知

触发器将继续触发,直到您使用以下命令禁用它

influxdb3 disable trigger --database my_database sensor_deadman
Trigger sensor_deadman disabled successfully

最后想法和注意事项

用于 InfluxDB 3 Core 和 Enterprise 的此 deadman 检查和警报插件提供了一种强大而灵活的方式来实时监控数据管道的持久性。我希望本教程能帮助您开始使用 Python 插件进行警报,并在 Docker 中启用 InfluxDB 3 Core 和 Enterprise 中的触发器。我鼓励您查看 InfluxData/influxdb3_plugins,因为我们会在其中添加示例和插件。此外,请贡献您自己的插件!要了解有关构建自己的插件的更多信息,请查看以下资源

此外,请查看以下资源以获取有关其他警报插件的更多信息和示例

我邀请您贡献您在那里创建的任何插件。查看我们的 Core 入门指南Enterprise,并在 Discord 中的 #influxdb3_core 频道、Slack 中的 #influxdb3_core 频道或我们的 社区论坛 上与我们的开发团队分享您的反馈。