Loki接入夜莺告警引擎
前言
在云原生与微服务架构普及的当下,实时可靠的监控体系是保障系统稳定性的核心。Loki凭借轻量化的日志聚合能力和类Prometheus的标签体系,成为日志处理的关键工具;而国产开源监控系统夜莺(Nightingale)则以灵活的告警引擎和多维度降噪能力见长。两者的深度集成,能够将日志数据与告警规则无缝衔接,打破传统运维中日志与指标告警的割裂状态,构建从日志异常感知到告警精准触发的闭环链路。
夜莺的部署可以参考之前的文章
1. 配置 Loki 数据源
集成中心
--> 数据源
--> 新增
--> Loki
,配置需要告警的数据源
2. 配置告警规则
告警管理
--> 告警规则
--> Default Busi Group
--> 新增
- 规则名称: 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
#### {{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. 日志告警测试
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
运维小记!
喜欢就支持一下吧
打赏
微信
支付宝