问题描述
在日志中,如果出现错误信息(ERROR),我们希望能够通过告警信息发送给对应的人员;
WIP ! Grafana Loki 的规则及告警的使用方法;
WIP ! Grafana Loki 配置告警规则,并在告警中显示日志;
该笔记将记录:在 Grafana Loki 中,启用日志告警的方法,以及相关问题的解决办法;
解决方案
通过 Loki 的 Ruler 组件,能够实现日志的告警及记录(统计)功能。
原理简述
Grafana Loki 将周期查询日志,当出现满足条件的日志时,创建告警信息并发送到 Alertmanager 服务;
参考 Alerting and recording rules 文档,以获取关于告警的详细说明;
开启 Ruler 组件
我们通过 Helm Chart(grafana/loki-distributed)部署 Loki 服务,所以相关配置将与该 Chart 相关;
2)配置 ruler.alertmanager_url 参数,以指定 Alertmanager 地址;
关于 Ruler 组件:
问题描述:msg=”error running loki” err=”mkdir /etc/loki/rules: read-only file system…
解决方案:需要配置 ruler.directories 参数
[loki] msg=”error running loki” err=”mkdir /rules: read-only file” · Issue #577
[loki-distributed] Ruler pod won’t start. err=”mkdir /etc/loki/rules…” · Issue #537
helm-charts/charts/loki-distributed at main · grafana/helm-charts
常用配置
interval,控制 expr 的执行周期
针对每条错误进行告警:count_over_time({service=”xxx”, level=”ERROR”}[1m]) > 0
Alert on every log entry – Grafana Loki – Grafana Labs Community Forums
错误日志告警
Add log message in alert · Issue #5844 · grafana/loki
# -- Directories containing rules files
directories:
fake:
rules_container.txt: |
groups:
- name: fire_all_error
interval: 30s
rules:
- alert: ContainerErrorLogDetected
expr: "count_over_time({container=\"java-log-generator\"} |= `ERROR` | pattern `<message>` [30s])"
for: 0m
labels:
severity: warning
annotations:
summary: Container Error Log Detected
description: "{{ $labels.message }}"
常见问题处理
调试工具
# 11/07/2023 现在,官方暂未提供相关调试工具:Feature request: Loki alert rule tests · Issue #7655 · grafana/loki