如何将日志接入alertmanager告警

本文使用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官方提供的规则也并未添加双引号,以至于很难定位到问题,分享就到这里了。。。

### 配置 Kubernetes 中 Alertmanager 与企业微信机器人集成 #### 创建 Prometheus 和 Alertmanager 的配置文件 为了使 Alertmanager 能够发送告警到企业微信机器人,首先需要创建 `prometheus-alertmanager-cfg.yaml` 文件并定义相应的报警规则和处理方式。此文件将包含有关如何触发报警以及如何传递这些报警的通知方法的信息[^1]。 ```yaml global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'wechat-receiver' receivers: - name: 'wechat-receiver' webhook_configs: - url: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your-webhook-key' send_resolved: true ``` 上述 YAML 文件中的关键部分是 `webhook_configs` 字段下的 URL 地址。该地址应替换为企业微信机器人 Webhook API 提供的具体 key 值[^2]。 #### 设置企业微信机器人 Webhook 在企业微信中启用机器人功能后,可以获取一个唯一的 Webhook URL。这个 URL 将被用来配置 Alertmanager 发送通知的目标位置。按照官方文档说明操作即可获得所需的 Webhook Key 并将其填入前面提到的配置文件中[^3]。 #### 启动服务并验证端口监听情况 当完成以上步骤之后,启动相关服务(如 Prometheus 和 Alertmanager),此时应该能看到类似如下日志输出表明服务已准备好接受请求: > "level":"info","ts":timestamp,"msg":"Listening on address", "address":"0.0.0.0:8060" 这表示有一个新的 webhook-dingtalk 服务正在指定端口号上等待连接尝试。同时也会有指导信息告诉你怎样把刚才得到的那个 DingTalk 或 WeChat 的外部链接加入到内部系统的 alertmanager 配置当中去。 #### 测试整个流程 最后一步是要确保所有的组件都能协同工作。可以通过模拟一些错误条件或者手动触发某些预设好的阈值违反事件来检验实际效果;也可以利用 Grafana 界面查看历史记录以便更好地理解当前状态变化趋势图谱等等[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值