本文使用loki-stack+alertmanager实现日志告警
文档参考:Alerting and recording rules | Grafana Loki documentation
loki-stack: chart包中包含组件很多,例如loki、promtail、grafana、prometheus、alertmanager,不需要可将enable参数改为false,本文只装了loki+promtail,作者喜欢且习惯使用operator安装其他三件套,需要的可关注作者,下篇讲述三件套安装方法
安装loki-stack,使用helm(>=v3)方式安装:
在线安装:
#添加helm仓库
helm repo add grafana https://grafana.github.io/helm-charts
#执行安装
helm install loki-stack -f values.yaml -n loki-stack
离线安装:
方式一:通过其他通公网机器转存
#拉取离线包
helm search grafana/loki-stack
helm pull grafana/loki-stack --verison 2.10.2
#转存
scp loki-stack-2.10.2.tgz
方式二: 从artifacthub仓拉取
wget https://github.com/grafana/helm-charts/releases/download/loki-stack-2.10.2/loki-stack-2.10.2.tgz
安装:
解压: tar -xf loki-stack-2.10.2.tgz && cd loki-stack
部署: helm install loki-stack -n loki-stack .
编辑配置集成alertmanager并新增告警规则
#charts/loki/values.yaml
ruler:
storage:
type: local
local:
directory: /rules
rule_path: /tmp/scratch
alertmanager_url: http://alertmanager-main.monitoring:9093
ring:
kvstore:
store: inmemory
enable_api: true
alerting_groups:
#groups:
- name: "example"
rules:
- alert: HighApplicationErrorRate
expr: sum by(container) (rate({job=~"loki-stack/loki"}[1m])) > 1
for: 2m
labels:
severity: critical
annotations:
summary: Too many logs
description: Too many logs
useExistingAlertingGroup:
enabled: true
configmapName: "loki-stack-alerting-rules"
重启loki-stack,使用 helm upgrade loki-stack -n loki-stack -f values.yaml, 加载新配置 ,查看alertmanager页面告警是否触发
这里已收到邮件告警:
更多的告警规则可参考grafana官方文档,例如根据日志中请求返回码告警等等
本次遇到一些问题记录:
loki-stack配置好alertmanager集成及规则后,loki日志无异常报错,并且从grafana页面集成loki后可通过规则语句正常触发结果,但alert并未收到告警
最终的最终,是因为规则中的group 名称必须加双引号,grafana官方提供的规则也并未添加双引号,以至于很难定位到问题,分享就到这里了。。。