阿里云 SLS 查询 (商业版)
夜莺( Nightingale )阿里云 SLS 日志告警规则
在告警规则—> 选择 log 数据源 —> 配置查询语句和提取值 ValueKey —> 选择简单模式设置指定时间内 ValueKey 的阈值即可。

配置场景一:查询代理日志中状态码为404和405的日志数量,如果查询结果大于0且不等于3个报警。
查询语句 status:404 OR status:405 | SELECT status AS status,count(*) AS count GROUP BY status,这里是以查询值结果进行条件判断,所以在条件判断时使用了$A > 0且$A !=3。

配置场景二:配置不同的指标进行结果判断,status:404值大于100且status:405值大于1触发报警。
为了实现不同的语句值联合判断,需要填写两个不同的查询分析语句,将值取出进行判断,判断条件分别使用提取值 $A 和 $B 进行比较运算。
注意:与PromQL一样,如果数据标签不一致查询分析语句会被视为两条不同的曲线,无法进行比较运算。

常见问题
Q1:SLS 告警查询返回的字段映射?
A:和 MySQL 告警 类似 — “值字段"和"标签字段"由你配置:
- 值字段选 SQL 返回结果的某列(如
count) → 表达式用$A.count; - 标签字段选其他列 → 注入告警事件标签。
Q2:SLS SQL 语法和标准 SQL 有差异吗?
A:SLS 增强 SQL 支持时序函数、统计函数、JSON 解析等扩展。常见:
time_series(...)— 时序填充;numeric_histogram(...)— 数值分桶统计;histogram(...)— 文本类型统计。
详见 SLS 查询分析。
Q3:告警执行频率 vs 查询性能怎么平衡?
A:
- SLS 单查询不便宜,每条告警规则的"执行频率"建议 ≥ 1 分钟;
- 时间范围用相对短的(
@now - 5m to @now); - 复杂聚合查询尽量在 SLS 端做完,n9e 表达式只判定布尔。
Q4:能不能用 SLS 的 ScheduledSQL 替代 n9e 告警?
A:取决于场景。SLS ScheduledSQL 适合纯 SLS 内部聚合 + 数据回写。n9e 告警查询的优势在于联动告警治理体系(屏蔽 / 订阅 / 工作流 / 通知)。建议日常告警用 n9e,归档统计用 ScheduledSQL。