状态变更插件
状态变更插件为 InfluxDB 3 数据流提供了全面的字段监控和阈值检测。检测字段值变化,监控阈值条件,并在满足指定标准时触发通知。支持预定的批量监控和实时数据写入监控,并具有可配置的稳定性检查和多通道警报。
配置
计划触发器参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
measurement | string | 必需 | 用于监控字段变更的测量值 |
field_change_count | string | 必需 | 点分隔的字段阈值(例如,"temp:3.load:2") |
senders | string | 必需 | 点分隔的通知通道 |
window | string | 必需 | 用于分析的时间窗口。格式:<数字><单位> |
数据写入触发器参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
measurement | string | 必需 | 用于监控阈值条件的测量值 |
field_thresholds | string | 必需 | 阈值条件(例如,"temp:30:10@status:ok:1h") |
senders | string | 必需 | 点分隔的通知通道 |
通知参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
influxdb3_auth_token | string | env var | InfluxDB 3 API 令牌 |
notification_text | string | template | 用于预定通知的消息模板 |
notification_count_text | string | template | 用于基于计数通知的消息模板 |
notification_time_text | string | template | 用于基于时间通知的消息模板 |
notification_path | string | “notify” | 通知终结点路径 |
port_override | 数字 | 8181 | InfluxDB 端口覆盖 |
高级参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
state_change_window | 数字 | 1 | 用于检查稳定性的最近值 |
state_change_count | 数字 | 1 | 稳定性窗口内允许的最大变更次数 |
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 配置文件
- state_change_config_scheduler.toml - 用于预定触发器
- state_change_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 state_change_check_plugin.py \
--trigger-spec "every:10m" \
--trigger-arguments "measurement=cpu,field_change_count=temp:3.load:2,window=10m,senders=slack,slack_webhook_url=https://hooks.slack.com/services/..." \
state_change_scheduler创建数据写入触发器
为实时阈值监控创建触发器
influxdb3 create trigger \
--database mydb \
--plugin-filename state_change_check_plugin.py \
--trigger-spec "all_tables" \
--trigger-arguments "measurement=cpu,field_thresholds=temp:30:10@status:ok:1h,senders=slack,slack_webhook_url=https://hooks.slack.com/services/..." \
state_change_datawrite启用触发器
influxdb3 enable trigger --database mydb state_change_scheduler
influxdb3 enable trigger --database mydb state_change_datawrite示例
预定的字段变更监控
监控时间窗口内的字段变更并在超出阈值时发出警报
influxdb3 create trigger \
--database sensors \
--plugin-filename state_change_check_plugin.py \
--trigger-spec "every:15m" \
--trigger-arguments "measurement=temperature,field_change_count=value:5,window=1h,senders=slack,slack_webhook_url=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX,notification_text=Temperature sensor $field changed $changes times in $window for tags $tags" \
temp_change_monitor实时阈值检测
监控数据写入的阈值条件
influxdb3 create trigger \
--database monitoring \
--plugin-filename state_change_check_plugin.py \
--trigger-spec "all_tables" \
--trigger-arguments "measurement=system_metrics,field_thresholds=cpu_usage:80:5@memory_usage:90:10min,senders=discord,discord_webhook_url=https://discord.com/api/webhooks/..." \
system_threshold_monitor多条件监控
监控具有不同阈值类型的多个字段
influxdb3 create trigger \
--database application \
--plugin-filename state_change_check_plugin.py \
--trigger-spec "all_tables" \
--trigger-arguments "measurement=app_health,field_thresholds=error_rate:0.05:3@response_time:500:30s@status:down:1,senders=slack.sms,slack_webhook_url=https://hooks.slack.com/services/...,twilio_from_number=+1234567890,twilio_to_number=+0987654321" \
app_health_monitor新功能
- 双重监控模式:预定的批量监控和实时数据写入监控
- 灵活的阈值:支持基于计数和基于持续时间条件的监控
- 稳定性检查:可配置的状态变更检测以减少噪声
- 多通道警报:与 Slack、Discord、HTTP、SMS 和 WhatsApp 集成
- 模板通知:具有动态变量的可自定义消息模板
- 缓存优化:测量值和标签名称缓存以提高性能
- 环境变量支持:通过环境变量进行凭据管理
故障排除
常见问题
未触发通知
- 验证通知通道配置(Webhook URL、凭据)
- 检查阈值是否适合您的数据
- 确保 Notifier Plugin 已安装并配置正确
- 检查插件日志以获取错误消息
通知过多
- 调整
state_change_window和state_change_count以进行稳定性过滤 - 提高阈值以降低灵敏度
- 考虑为预定触发器使用更长的时间窗口
身份验证错误
- 设置
INFLUXDB3_AUTH_TOKEN环境变量 - 验证令牌是否具有适当的数据库权限
- 检查 Twilio 凭据是否正确用于 SMS/WhatsApp 通知
字段阈值格式
基于计数的阈值
- 格式:
field_name:"value":count - 示例:
temp:"30.5":10(温度为 30.5 的 10 次出现)
基于时间的阈值
- 格式:
field_name:"value":duration - 示例:
status:"error":5min(状态为“error”持续 5 分钟) - 支持的单位:
s、min、h、d、w
多个条件
- 用
@分隔:temp:"30":5@humidity:"high":10min
消息模板变量
预定通知
$table:测量值名称$field:字段名称$changes:检测到的变更次数$window:时间窗口$tags:标签值
数据写入通知
$table:测量值名称$field:字段名称$value:阈值$duration:持续时间或计数$row:唯一行标识符
报告问题
有关插件问题,请参阅插件存储库的 issues 页面。
查找 InfluxDB 3 Core 的支持
InfluxDB Discord 服务器 InfluxDB Discord server 是获取 InfluxDB 3 Core 支持的最佳场所。对于其他 InfluxDB 版本,请参阅 支持和反馈 选项。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。