阿里云 SLS 查询 (商业版)

从实际使用场景出发,介绍夜莺阿里云 SLS 日志告警:用 SLS 查询分析语法统计日志、提取值判阈值,以及多语句联合判定与成本控制。

[PLUS] 阿里云 SLS 作为告警数据源是夜莺企业版(PLUS)独有功能。

概述

阿里云 SLS 日志告警用 SLS 的查询分析语法查询日志、提取统计值(ValueKey),再判阈值。查询语法和你在 SLS 控制台里用的一致,区别只是告警查询是周期性执行的。

字段 必填 说明
数据源类型 / 数据源 选 SLS(log)类型并选中已接入的 SLS 数据源
查询分析语句 SLS 检索 + SQL 分析语句,结果的某列作为提取值
提取值(ValueKey) 取哪一列作为 $A 参与告警判定
告警条件 基于提取值判阈值,如 $A > 0 && $A != 3
执行频率 多久跑一次查询,建议 ≥ 1 分钟

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

场景一:单语句统计判阈值

「查询代理日志中状态码 404 和 405 的数量,结果大于 0 且不等于 3 时告警」:

status:404 OR status:405 | SELECT status AS status, count(*) AS count GROUP BY status

提取值取 count,告警条件用 $A > 0 && $A != 3

场景二:多语句联合判定

要对不同指标分别判定,填两条查询分析语句,分别用 $A$B 取值比较。「status:404 的量 > 100 status:405 的量 > 1 才告警」,写两条查询后:

$A > 100 && $B > 1

和 PromQL 一样,如果两条语句返回的数据标签不一致,会被视为两条不同的曲线,无法直接比较运算。

常见问题

Q1:SLS 查询返回的字段怎么映射?

A:和 MySQL 告警 类似——提取值(ValueKey)选 SQL 返回的某列作为 $A 参与数值判定;如需分组,把分组列作为标签注入告警事件。

Q2:SLS 的 SQL 语法和标准 SQL 有差异吗?

A:SLS 增强 SQL 支持时序、统计、JSON 解析等扩展函数,如 time_series(...)(时序填充)、numeric_histogram(...)(数值分桶)。详见 SLS 查询分析

Q3:执行频率和查询性能怎么平衡?

A:SLS 单查询有成本,执行频率建议 ≥ 1 分钟;时间范围用相对短的窗口;复杂聚合尽量在 SLS 端算完,n9e 告警条件只做布尔判定。

Q4:能用 SLS 的 ScheduledSQL 替代 n9e 告警吗?

A:看场景。ScheduledSQL 适合纯 SLS 内部聚合 + 数据回写;n9e 告警的优势在于联动整套告警治理体系(屏蔽/订阅/工作流/通知)。日常告警用 n9e,归档统计用 ScheduledSQL。

参考资料

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