基于Helm部署的Loki配置Slack告警方案咨询
配置Loki告警并推送至Slack的步骤
1. 修正Loki告警规则(基于日志计数触发)
你当前的告警规则仅匹配日志条目,未做计数统计,需要修改expr来统计错误日志数量,当计数达到阈值时触发告警。
修改后的告警规则示例:
alert_rules: - alert: AppErrorCount expr: | count_over_time({namespace="health-help", pod=~"stgidentity-.*"} |= `request completed` [5m]) >= 1 for: 1m labels: severity: critical annotations: summary: "错误日志告警: {{ $labels.namespace }}/{{ $labels.pod }}" description: "过去5分钟内出现了{{ $value }}条包含`request completed`的错误日志"
说明:
count_over_time(...) [5m]:统计5分钟内匹配到的日志条目数量pod=~"stgidentity-.*":用正则匹配所有stgidentity开头的Pod,避免硬编码单个Pod名称- 阈值设为
>=1:只要出现错误日志就触发告警
2. 配置Alertmanager推送至Slack
方式一:使用Loki内置Alertmanager(推荐)
在你的Loki Helm values中添加Alertmanager配置,指定Slack接收地址:
loki: # 保留现有其他配置... ruler: enable_api: true enable_alertmanager_v2: true enable_sharding: true wal: dir: /var/loki/wal alertmanager_url: http://loki-alertmanager:9093 alertmanager: enabled: true config: global: slack_api_url: "https://hooks.slack.com/services/XXX/XXX/XXX" # 替换为你的Slack Webhook地址 route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'slack-notifications' receivers: - name: 'slack-notifications' slack_configs: - channel: '#alerts' # 替换为你的Slack告警频道 send_resolved: true title: "{{ .CommonAnnotations.summary }}" text: "{{ .CommonAnnotations.description }}"
方式二:使用独立Prometheus Alertmanager
如果使用独立的Prometheus Alertmanager,需做以下配置:
- 修改Loki的ruler配置,指向Alertmanager地址:
loki: ruler: alertmanager_url: http://prometheus-alertmanager:9093 # 替换为你的Alertmanager地址
- 在Alertmanager配置文件中添加Slack接收器:
global: slack_api_url: "https://hooks.slack.com/services/XXX/XXX/XXX" route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'slack' receivers: - name: 'slack' slack_configs: - channel: '#alerts' send_resolved: true title: "{{ .CommonAnnotations.summary }}" text: "{{ .CommonAnnotations.description }}"
3. 应用配置并验证
- 用Helm更新Loki部署:
helm upgrade loki grafana/loki -f your-values.yaml # 替换为你的values文件路径
- 验证告警规则:访问Loki的Ruler API(
http://loki-url:3100/ruler/api/v1/rules),确认规则已加载 - 触发测试:生成一条包含
request completed的错误日志,等待1分钟后检查Slack频道是否收到告警
内容的提问来源于stack exchange,提问作者Illthizam Nazar
相关产品推荐
相关产品推荐

