PostgreSQL 查询

从实际使用场景出发,介绍夜莺 PostgreSQL 数据源告警:用 SQL 直接查业务库做告警判定,以及值字段、标签字段与分组告警的配置要点。

概述

PostgreSQL 数据源告警直接用 SQL 查业务库或运维库做判定——不必先把业务数据 export 成指标,省掉采集层。适合业务实时监控(订单量、失败率)、数据完整性告警(表 N 分钟未更新)、异常状态扫描等场景。

理解 PostgreSQL 告警的关键,是理解 SQL 的表结构结果怎么映射成告警引擎能判定的时序数据——靠「值字段」和「标签字段」两个配置:

字段 必填 说明
数据源类型 / 数据源 PostgreSQL 类型并选中已接入的实例
查询条件 SQL 语句,如 SELECT count(*) as count FROM schema_name.table_name
值字段(辅助配置) SQL 结果的哪一列作为数值,用 $A.<列名> 在告警条件里引用
标签字段(辅助配置) SQL 结果的哪些列作为告警事件的标签,通常是 GROUP BY 的分组列
告警条件 基于值字段写告警表达式,如 $A.count > 10
执行频率 多久跑一次 SQL,业务库建议 ≥ 1 分钟
持续时长 满足条件持续多久才触发

值字段是数值、标签字段是字符串——这个区分决定了每列在告警表达式里能做什么运算,详见 告警表达式语法 的核心概念。

下面按实际使用场景介绍。

场景一:单条件告警——统计一个数值判阈值

用聚合函数算出一个数,超过阈值就告警。「最近 5 分钟失败订单数 > 10」:

SELECT count(*) AS failed_count
FROM public.orders
WHERE status = 'failed'
  AND created_at > now() - INTERVAL '5 minutes';
  • 值字段failed_count
  • 告警条件$A.failed_count > 10

写完 SQL 点「数据预览」,确认返回的列名和值符合预期,再配阈值。

场景二:GROUP BY 分组告警

想让每个业务维度单独告警,用 GROUP BY 分组,并把分组列设为标签字段

SELECT status AS status, count(*) AS count
FROM public.orders
WHERE created_at > now() - INTERVAL '5 minutes'
GROUP BY status;
  • 值字段count标签字段status
  • 告警条件 $A.count > 100

SQL 返回几行就有几条"伪时序",告警引擎逐行独立判定——status=failedstatus=timeout 各自触发独立的告警事件,事件标签里带对应的 status

场景三:多查询混合判定

对比多条 SQL 的结果,比如算失败率。添加 $A$B 两条查询:

-- $A:成功订单数
SELECT count(*) AS ok_count FROM public.orders WHERE status = 'success';
-- $B:失败订单数
SELECT count(*) AS failed_count FROM public.orders WHERE status = 'failed';

告警条件:

$B.failed_count / ($A.ok_count + $B.failed_count) * 100 > 5

更多 SQL 业务告警的表达式写法(算术、字符串匹配、时间戳新鲜度等),见 MySQL 告警举例——表达式语法与数据源无关,同样适用于 PostgreSQL。

常见问题

Q1:SQL 返回多行会怎样?

A:每行作为一条独立"伪时序",逐行判定告警。返回 10 行就最多产生 10 条告警事件。用 GROUP BY + 标签字段控制分组粒度。

Q2:值字段和标签字段怎么选?

A:要做数值比较的列(计数、金额、耗时)选值字段,用 $A.<列名> 引用;要作为告警分组维度或事件标签的列(状态、机器名、接口)选标签字段。

Q3:业务库压力大怎么办?

A:用只读副本而非主库;SQL 加 LIMIT 限制返回行数;执行频率从默认调到 1–5 分钟;复杂查询提前 EXPLAIN;用专用只读账号隔离权限。

Q4:怎么做"数据 N 分钟未更新"这类新鲜度告警?

A:查最新一条记录的时间戳作为值字段,再用 now() 比较。例如 SQL 取 SELECT extract(epoch from max(created_at)) AS last_ts FROM public.orders,告警条件写 now().Unix() - $A.last_ts > 60

参考资料

更新时间 2026-07-17

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云