阈值死信检查插件
阈值死人检查插件为 InfluxDB 3 中的时间序列数据提供了全面的监控功能,结合了实时阈值检测和死人监控。它允许您根据可配置的阈值监控字段值,检测数据缺失模式,并根据聚合指标触发多级警报。该插件同时支持计划批处理监控和实时数据写入监控,并提供可配置的触发器计数和严重性级别。
配置
计划触发器参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
measurement | string | 必需 | 要监控的测量值 |
senders | string | 必需 | 点分隔的通知通道 |
window | string | 必需 | 用于数据检查的时间窗口 |
数据写入触发器参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
measurement | string | 必需 | 用于阈值条件的监控测量值 |
field_conditions | string | 必需 | 阈值条件(例如,"temp>30-WARN:status==ok-INFO") |
senders | string | 必需 | 点分隔的通知通道 |
阈值检查参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
field_aggregation_values | string | none | 计划检查的聚合条件 |
deadman_check | boolean | false | 启用死人数据存在性检查 |
interval | string | “5min” | 聚合时间间隔 |
trigger_count | 数字 | 1 | 触发警报前的连续失败次数 |
通知参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
influxdb3_auth_token | string | env var | InfluxDB 3 API 令牌 |
notification_deadman_text | string | template | 死人警报消息模板 |
notification_threshold_text | string | template | 阈值警报消息模板 |
notification_text | string | template | 通用通知模板(数据写入) |
notification_path | string | “notify” | 通知终结点路径 |
port_override | 数字 | 8181 | InfluxDB 端口覆盖 |
config_file_path | string | none | 相对于 PLUGIN_DIR 的 TOML 配置文件路径 |
特定通道配置
通知通道需要根据发送者类型提供额外参数(与 Notifier Plugin 相同)。
架构要求
该插件假定表架构已在数据库中定义,因为它依赖于此架构来检索处理所需的字段和标签名称。
需要现有架构
根据设计,如果架构不存在或不包含预期的列,则插件会返回错误。
TOML 配置
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
config_file_path | string | none | 相对于 PLUGIN_DIR 的 TOML 配置文件路径 (TOML 配置必需) |
要使用 TOML 配置文件,请设置 PLUGIN_DIR 环境变量并在触发器参数中指定 config_file_path。 这与启动 InfluxDB 3 时的 --plugin-dir 标志是附加的。
提供的示例 TOML 配置文件
- threshold_deadman_config_scheduler.toml - 用于计划触发器
- threshold_deadman_config_data_writes.toml - 用于数据写入触发器
有关使用 TOML 配置文件,请参阅 influxdb3_plugins /README.md 中的“使用 TOML 配置文件”部分。
安装
启用处理引擎来启动 InfluxDB 3 核心(
--plugin-dir /path/to/plugins)安装必需的 Python 包
requests(用于 HTTP 请求)
influxdb3 install package requests
创建计划触发器
创建用于定期阈值和死人检查的触发器
influxdb3 create trigger \
--database mydb \
--plugin-filename threshold_deadman_checks_plugin.py \
--trigger-spec "every:10m" \
--trigger-arguments "measurement=cpu,senders=slack,field_aggregation_values=temp:avg@>=30-ERROR,window=10m,trigger_count=3,deadman_check=true,slack_webhook_url=https://hooks.slack.com/services/..." \
threshold_scheduler创建数据写入触发器
创建用于实时阈值监控的触发器
influxdb3 create trigger \
--database mydb \
--plugin-filename threshold_deadman_checks_plugin.py \
--trigger-spec "all_tables" \
--trigger-arguments "measurement=cpu,field_conditions=temp>30-WARN:status==ok-INFO,senders=slack,trigger_count=2,slack_webhook_url=https://hooks.slack.com/services/..." \
threshold_datawrite启用触发器
influxdb3 enable trigger --database mydb threshold_scheduler
influxdb3 enable trigger --database mydb threshold_datawrite示例
死人监控
监控数据缺失情况并在未收到数据时发出警报
influxdb3 create trigger \
--database sensors \
--plugin-filename threshold_deadman_checks_plugin.py \
--trigger-spec "every:15m" \
--trigger-arguments "measurement=heartbeat,senders=sms,window=10m,deadman_check=true,trigger_count=2,twilio_from_number=+1234567890,twilio_to_number=+0987654321,notification_deadman_text=CRITICAL: No heartbeat data from \$table between \$time_from and \$time_to" \
heartbeat_monitor多级阈值监控
监控不同严重性级别的聚合值
influxdb3 create trigger \
--database monitoring \
--plugin-filename threshold_deadman_checks_plugin.py \
--trigger-spec "every:5m" \
--trigger-arguments "measurement=system_metrics,senders=slack.discord,field_aggregation_values=cpu_usage:avg@>=80-WARN\$cpu_usage:avg@>=95-ERROR\$memory_usage:max@>=90-WARN,window=5m,interval=1min,trigger_count=3,slack_webhook_url=https://hooks.slack.com/services/...,discord_webhook_url=https://discord.com/api/webhooks/..." \
system_threshold_monitor实时字段条件监控
监控数据写入是否立即违反阈值
influxdb3 create trigger \
--database applications \
--plugin-filename threshold_deadman_checks_plugin.py \
--trigger-spec "all_tables" \
--trigger-arguments "measurement=response_times,field_conditions=latency>500-WARN:latency>1000-ERROR:error_rate>0.05-CRITICAL,senders=http,trigger_count=1,http_webhook_url=https://alertmanager.example.com/webhook,notification_text=[\$level] Application alert: \$field \$op_sym \$compare_val (actual: \$actual)" \
app_performance_monitor组合监控
同时监控聚合阈值和死人条件
influxdb3 create trigger \
--database comprehensive \
--plugin-filename threshold_deadman_checks_plugin.py \
--trigger-spec "every:10m" \
--trigger-arguments "measurement=temperature_sensors,senders=whatsapp,field_aggregation_values=temperature:avg@>=35-WARN\$temperature:max@>=40-ERROR,window=15m,deadman_check=true,trigger_count=2,twilio_from_number=+1234567890,twilio_to_number=+0987654321" \
comprehensive_sensor_monitor新功能
- 双重监控模式:计划聚合检查和实时数据写入监控
- 死人检测:监控数据缺失和数据流丢失
- 多级警报:支持 INFO、WARN、ERROR 和 CRITICAL 严重性级别
- 聚合支持:监控 avg、min、max、count、sum、derivative 和 median 值
- 可配置触发器:需要多次连续失败后才触发警报
- 多通道通知:与各种通知系统集成
- 模板消息:支持动态变量的可自定义警报模板
- 性能优化:测量值和标签缓存以提高效率
故障排除
常见问题
未触发警报
- 验证阈值是否适合您的数据范围
- 检查通知通道是否配置正确
- 确保 Notifier Plugin 已安装且可访问
- 检查插件日志以查找配置错误
误报警报
- 增加
trigger_count以要求更多连续失败 - 调整阈值以降低灵敏度
- 考虑对嘈杂的数据使用更长的聚合间隔
缺少死人警报
- 在配置中验证
deadman_check=true是否已设置 - 检查测量值名称是否与现有数据匹配
- 确保时间窗口与您的数据频率相匹配
身份验证问题
- 设置
INFLUXDB3_AUTH_TOKEN环境变量 - 验证 API 令牌是否具有必要的数据库权限
- 检查 Twilio 凭证是否用于 SMS/WhatsApp 通知
配置格式
聚合条件(计划)
- 格式:
field:aggregation@"operator value-level" - 示例:
temp:avg@">=30-ERROR" - 多个条件:
temp:avg@">=30-WARN"$humidity:min@"<40-INFO"
字段条件(数据写入)
- 格式:
field operator value-level - 示例:
temp>30-WARN:status==ok-INFO - 支持的操作符:
>,<,>=,<=,==,!=
支持的聚合
avg:平均值min:最小值max:最大值count:记录数sum:总和derivative:变化率median:中位数
消息模板变量
死人通知
$table:测量值名称$time_from:检查期间的开始时间$time_to:检查期间的结束时间
阈值通知(计划)
$level:警报严重性级别$table:测量值名称$field:字段名$aggregation:聚合类型$op_sym:操作符符号$compare_val:阈值$actual:实际测量值$row:唯一标识符
阈值通知(数据写入)
$level:警报严重性级别$field:字段名$op_sym:操作符符号$compare_val:阈值$actual:实际字段值
行标识
row 变量使用以下格式唯一标识警报上下文:measurement:level:tag1=value1:tag2=value2
这确保了每个测量值、严重性级别和标签值的唯一组合的触发器计数都是独立维护的。
报告问题
有关插件问题,请参阅插件存储库的 issues 页面。
查找 InfluxDB 3 Core 的支持
InfluxDB Discord 服务器 InfluxDB Discord server 是获取 InfluxDB 3 Core 支持的最佳场所。对于其他 InfluxDB 版本,请参阅 支持和反馈 选项。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。