You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Grafana告警通知中包含完整错误日志(含Loki及替代方案)

用Loki+Grafana实现带完整错误日志的告警配置

先明确核心问题

你用的count_over_time只能返回错误日志的数量,拿不到具体日志内容,所以告警得拆成两步:先用计数判断要不要触发告警,再在通知模板里单独查一遍对应的错误日志。

具体配置步骤

1. 先建告警触发规则

  • 进入Grafana的「Alerting」→「Alert rules」→「New alert rule」
  • 选择Loki数据源,输入查询语句:
    count_over_time({app="some-application"} |= "ERROR" [1m]) > 0
    
    (时间范围别用1s,容易误触发,改成1m或者5m更合理,可根据实际需求调整)
  • 配置触发条件:比如「For」设为10s,确保错误不是一闪而过的偶发情况再触发告警
  • 填写告警名称、选择所属文件夹,保存规则

2. 配置通知模板拉取完整日志

Grafana的通知模板需要利用告警携带的标签(比如app名称),再去Loki查询具体日志:

  • 进入「Alerting」→「Notification policies」,找到你使用的通知渠道点击「Edit」
  • 在「Message template」中添加自定义模板,示例如下:
    {{ define "error_alert_with_logs" }}
    【告警触发】应用 {{ .Labels.app }} 出现错误日志
    ---
    错误日志详情:
    {{ range query "{app=\"{{ .Labels.app }}\"} |= \"ERROR\" [1m]" | log_entries }}
        {{ .Line }}
    {{ end }}
    {{ end }}
    
    {{ template "error_alert_with_logs" . }}
    
    注意:模板里的时间范围要和告警规则里的完全一致,否则可能查不到对应日志;如果告警规则里还有其他标签(比如env),也要同步加到模板的查询语句中。
  • 保存通知渠道配置

3. 测试验证

  • 让应用故意生成一条ERROR级日志
  • 等待告警触发后,检查通知内容是否包含完整的错误日志

如果上述模板无效,试试简化版直接嵌入通知内容:

应用 {{ $labels.app }} 错误告警:
{{ range query "{app=\"{{ $labels.app }}\"} |= \"ERROR\" [1m]" | log_entries }}
{{ .Line }}
{{ end }}

若Loki不适用,可选择这些替代工具

1. ELK Stack(Elasticsearch+Logstash+Kibana)

  • 配置步骤:
    • 用Filebeat或Logstash将应用日志同步到Elasticsearch
    • 在Kibana中创建告警规则:设置查询条件app:some-application AND level:ERROR,触发条件为“计数大于0”
    • 在告警通知模板中直接引用日志的_source.message字段,即可带上完整日志内容
  • 优势:生态成熟,支持复杂的日志查询和灵活的告警配置

2. Promtail+Loki+Alertmanager(绕开Grafana模板)

  • 若Grafana模板不好用,可直接用Alertmanager处理:
    • 在Loki的配置文件中添加告警规则,通过expr判断错误计数,然后在annotations中调用Loki API查询对应日志
    • 在Alertmanager的通知模板中解析annotations里的日志内容并展示

3. Datadog Logs

  • 配置步骤:
    • 安装Datadog Agent采集应用日志
    • 创建监控:设置日志查询service:some-application @level:ERROR,触发条件为“5分钟内出现日志”
    • 通知中勾选「Include sample logs」选项,自动附带完整错误日志

常见问题排查

  • 模板查不到日志:检查Loki数据源权限,确保Grafana可执行日志查询;核对标签匹配度(比如app名称的引号、大小写是否完全一致)
  • 通知内容为空:确认告警规则的触发条件是否正确,是否真的产生了错误日志;调整时间范围,避免查询范围过大或过小

内容的提问来源于stack exchange,提问作者Ivan Selianto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:45:20