【问题标题】:Grafana send notification for each error logGrafana 为每个错误日志发送通知
【发布时间】:2021-05-11 20:32:26
【问题描述】:

在我的 Grafana 仪表板中,我会计算“错误日志”的数量,并在至少出现 1 个错误时发送警报。

这是我使用的查询

count_over_time(({logtype="app_log"} |= "ERROR")[1h])

此行计算过去一小时内包含“ERROR”的行数并返回计数。 然后,如果有这样的日志(1 个日志或 1000 个日志),我想向开发通道发送警报。

在警报选项卡中,我添加了一条规则:

规则

  • 名称:${RuleName}
  • 评估每:60m
  • 对于:0

条件

WHEN count () OF query (A, 60m, now) IS ABOVE 0

如果没有数据或所有值都为空

SET STATE TO <OK>

如果执行错误或超时

SET STATE TO <ALERTING>

我在这里遗漏了一些部分,我需要帮助:

  • 如果有错误日志,我希望每小时收到一条通知。目前,这个配置等待1小时,然后执行查询,发现有错误日志,并发送通知。那是正确的。然后,在接下来的一个小时里,它再次搜索上一小时的日志,发现至少另一个错误日志,但没有发送通知,因为它已经处于警报状态。我想向开发通道发送另一个通知,因为在最后一次执行中,还有另一个错误,我想知道它。
  • 第二个缺失部分如下所示:在第一个小时,至少有 1 个错误,我收到了通知。然后,在第二个小时没有错误,我再次收到通知,但这次是“OK”。我尝试了不同的组合,但找不到解决方法。如果第 1 小时有错误但第 2 小时没有错误,我不想收到通知。
  • 在通知部分,我想知道这个错误是什么时候发生的,错误信息是什么等等。我知道可以通过模板或 ${} 实现,但在消息部分,我无法访问日志行。如何将错误日志添加到通知中?

【问题讨论】:

  • 这个问题已经被问过很多次了 - 必须有一个解决方案。你找到什么了吗?
  • 不幸的是,没有。这是我想到的解决方案,但我还没有实现或测试它。服务器在夜间不忙,因此可以将 logscan 配置为(我不知道如何)进行夜间扫描。然后,在扫描之后,一个 cronjob 可以通过 API 删除这个监控并创建一个新的。这样,我们可以每 24 小时运行一次查询,然后删除查询。不理想,但可以工作......

标签: logging prometheus grafana


【解决方案1】:

我只知道第三个问题。 我做总和查询:

    sum by (message, ts, smthelse) 
(count_over_time(

然后我可以在通知文本中使用它们。在某些情况下它的工作方式很奇怪,但确实有效。

【讨论】:

    猜你喜欢
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 2013-05-05
    • 2020-09-26
    • 2021-03-26
    相关资源
    最近更新 更多