【问题标题】:Alert when percent of total count exceeds threshold当总计数百分比超过阈值时发出警报
【发布时间】:2020-03-10 18:05:52
【问题描述】:

背景

我们需要知道何时收到状态码为 500 的响应的请求百分比高于正常百分比。不是原始计数,而是总数的百分比。

Web 请求日志被传送到 Elasticsearch 并使用 Grafana 进行可视化。

使用SingleStat Math 插件,我们创建了一个仪表板,显示状态代码为 500 的所有请求的百分比。

  • 查询 A - 统计所有状态码为 500 的地方
  • 查询 B - 全部统计

查询数学:A/B * 100

我们甚至将小部件中的阈值设置为在达到 1% 时变为红色。

这很容易。当然,这需要有人观看仪表板。我们需要的是警报。

问题

如何创建在相同情况下触发的警报 - 即在给定时间段内,当 500 的数量超过请求总数的 1% 时。

我了解警报仅适用于图表小部件。所以我的问题的答案是创建一个显示总数百分比的图表。

我可以像使用 SingleStat Math 小部件一样将这两个查询添加到图表中,但我不知道如何设置警报缩减器以同时使用这两个查询,更不用说将一个除以另一个了。

看起来应该很简单:当小部件变红时给我发一封电子邮件。但是我该怎么做呢?

我的尝试

  • 使用MetaQueries(类型:算术,表达式:A/B)但没有数据出现。
  • 仪表板作为数据源有望从 SingleStat Math 小部件中提取值。这似乎只是为了提取查询,而不是计算。

【问题讨论】:

标签: elasticsearch grafana


【解决方案1】:

@biscuit314 您可以使用 Metaqueries 插件在图形面板中计算百分比。我已经验证了这一点,它有效。您只需要正确获取百分比计算语法的格式,并且使用 Metaquery 数据源的查询需要低于用于计算的查询。这将使它工作。

【讨论】:

  • 我无法让 MetaQueries 工作。我见过的所有示例都通过名称/别名引用查询中的指标,例如A['alias'] / B['name'] 但我看不到如何使用 Elasticsearch 作为数据源的指标别名。别名查询,是的,但 A/B 不起作用。
  • Grafana 在 elasticsearch 数据源查询面板中的查询旁边提供了一个别名部分。您应该为每个查询指定查询别名,并在元查询算术计算语法中使用该别名。例如,如果您对查询 A 使用别名“sc500”,对查询 B 使用别名“all”,那么您的语法将是元查询中的 A['all']-B['sc500']。
  • 如果您没有为 elasticsearch 查询提供别名,那么指标名称将在元查询语法中使用,即在您的情况下为“count”,因此,您的语法应该是 A['Count ']-B['计数']。我不记得计数中的“c”是否必须为大写/小写。也要验证一下。
  • 我很欣赏详细的解释。我尝试了一切(嗯,很明显,除了有效的一切)。为了简化,我创建了一个弹性搜索查询和一个元查询。我尝试填充和不填充 Alias 字段。在元查询表达式字段中,我尝试了 A['Count']、A['count']、A[0]、A[1]。我用 A 或别名尝试了所有这些。我尝试了所有这些组合,比如 A['Count']+1 在所有排列中我得到“无数据”
  • 您还应该检查使用 elasticsearch 作为数据源的查询是否能够在输出中获取数据。他们应该从 elasticsearch 接收数据,并且应该显示在面板中,而与元查询查询无关。元查询的输出应在面板中显示为单独的系列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2018-04-19
相关资源
最近更新 更多