You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置超2天未上线网关计数变化的告警规则

解决方案:基于历史快照的计数变化告警实现

要实现失联网关计数变化时触发告警,核心是对比当前计数与上一次的计数结果——你当前的查询仅能获取实时值,无法直接感知数值变化。以下是无需依赖diff()函数的最优实现方案:

1. 创建历史计数快照表

首先需要一张表存储每次的计数结果,用于后续对比:

CREATE TABLE gateway_offline_count_history (
    record_id SERIAL PRIMARY KEY,
    count_time TIMESTAMP NOT NULL DEFAULT NOW(),
    offline_count INT NOT NULL
);

2. 编写包含历史对比的查询语句

修改原有查询,同时获取当前失联网关计数和上一次的历史计数:

WITH current_count AS (
    SELECT 
        NOW() AS current_time,
        COUNT(*) AS current_value
    FROM gateway_status 
    WHERE last_seen <= NOW() - INTERVAL '2 days'
),
last_history AS (
    SELECT offline_count AS last_value
    FROM gateway_offline_count_history
    ORDER BY count_time DESC
    LIMIT 1
)
SELECT
    cc.current_time AS "time",
    cc.current_value AS "value",
    COALESCE(lh.last_value, 0) AS previous_value
FROM current_count cc
CROSS JOIN last_history lh
UNION ALL
-- 处理首次运行无历史记录的情况
SELECT
    cc.current_time AS "time",
    cc.current_value AS "value",
    0 AS previous_value
FROM current_count cc
WHERE NOT EXISTS (SELECT 1 FROM gateway_offline_count_history);

3. 配置定时任务更新历史表

需要定期(与你的部件刷新频率保持一致)将当前计数写入历史表,确保每次查询都有可对比的历史值。可以用数据库定时任务(如PostgreSQL的pg_cron)或外部调度工具执行以下SQL:

INSERT INTO gateway_offline_count_history (offline_count)
SELECT COUNT(*)
FROM gateway_status 
WHERE last_seen <= NOW() - INTERVAL '2 days';

4. 配置告警规则

基于查询返回的value和previous_value,设置告警触发条件:

  • 当value != previous_value时触发告警
  • 可额外区分场景,优化通知内容:
    • previous_value = 0 AND value > 0:新增失联网关
    • previous_value > value:网关恢复上线
    • previous_value < value:新增失联网关

示例告警逻辑(伪代码)

IF value != previous_value THEN
    触发通知,内容包含:
    - 变化类型(恢复/新增)
    - 变化前后数值(如从2变为1)
    - 当前时间
END IF

5. 测试验证

用你提供的测试数据验证:

  1. 首次运行时,历史表为空,previous_value=0,current_value=2,触发告警(0→2)
  2. 当gateway_001的last_seen更新为2024-06-12 10:00:00后,current_value=1,与上一次的2不等,触发告警(2→1)
  3. 若后续无网关状态变化,value与previous_value一致,不触发告警

内容的提问来源于stack exchange,提问作者statsquestions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:59:55