前言

在云原生与微服务架构普及的当下,实时可靠的监控体系是保障系统稳定性的核心。Loki凭借轻量化的日志聚合能力和类Prometheus的标签体系,成为日志处理的关键工具;而国产开源监控系统夜莺(Nightingale)则以灵活的告警引擎和多维度降噪能力见长。两者的深度集成,能够将日志数据与告警规则无缝衔接,打破传统运维中日志与指标告警的割裂状态,构建从日志异常感知到告警精准触发的闭环链路。

Loki夜莺告警

夜莺的部署可以参考之前的文章


1. 配置 Loki 数据源

集成中心 --> 数据源 --> 新增 --> Loki ,配置需要告警的数据源

image-20250402182725571


2. 配置告警规则

告警管理 --> 告警规则 --> Default Busi Group --> 新增

image-20250402182815208

image-20250402182835198

  • 规则名称: ERROR出现次数过多
  • 数据源类型: loki
  • 告警条件: count_over_time({job="varlogs"}|~ "ERROR"[5m]) > 5 5分钟内采集指标的平均值
  • 告警级别: 二级告警 ,针对不同的阈值设置不同的等级
  • 执行频率:30s,每30s执行一次指标查询
  • 持续时长:60s,60s内每次查询都符合指标随即发送告警
  • 通知媒介:dingtalk、wecom、email
  • 告警接收组:demo-root-group
  • 启用恢复通知
  • 留观时长(秒):0 ,触发规则时直接发送告警
  • 重复通知间隔(分钟):60 ,该告警一直未恢复时,7天后会再次发送告警信息
  • 最大发送次数:0 , 不做限制

3. 配置告警通知模板(以钉钉通知为例)

告警通知 --> 通知模板 --> dingtalk

image-20250402183004515

#### {{if .IsRecovered}}<font color="#008800">💚 {{.RuleName}}恢复</font>{{else}}<font color="#FF0000">💔 {{.RuleName}}告警</font>{{end}}

---
**级别状态**:{{if .IsRecovered}}<font color="#008800">S{{.Severity}}</font>{{else}}<font color="#FF0000">S{{.Severity}}</font>{{end}}   
{{if eq (index .TagsMap "job") "varlogs"}}   
**类型**:{{index .TagsMap "job"}}   
**服务名称**:{{index .TagsMap "service_name"}}   
**文件名称**:{{index .TagsMap "filename"}}   
{{if .IsRecovered}}**恢复内容**:{{.RuleName}}恢复!   
{{else}}**告警内容**:{{.RuleName}}!   
{{end}}
{{end}}
{{if .IsRecovered}}**触发时间**:{{timeformat .FirstTriggerTime}}   
**恢复时间**:{{timeformat .LastEvalTime}}{{else}}**触发时间**:{{timeformat .FirstTriggerTime}}{{end}}   
  • {{if .IsRecovered}} 判断告警状态为 告警 or 恢复
  • {{if eq (index .TagsMap "job") "varlogs"}} 判断告警jos标签是否为varlogs,这个可以帮我们判断是否是日志告警,从而选用不同的告警模板
  • {{index .TagsMap "service_name"}} 获取告警事件中 service_name 标签的值

4. 日志告警测试

image-20250405102435777

文章作者: hzbb
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 运维小记
Loki Loki 夜莺
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝