【问题标题】:How do I group a Elastic Stack alert by Docker Instances?如何按 Docker 实例对 Elastic Stack 警报进行分组?
【发布时间】:2018-05-06 13:43:24
【问题描述】:

某个周期性任务应该每分钟发生一次。在阈值警报中出现以下情况时,我可以发送警报。

WHEN count() GROUPED OVER top 1 'periodicTaskLog' IS BELOW 1 FOR THE LAST 2 minutes

(使用基本的 Watch 创建 GUI。如果需要,我可以使用 Advanced Watch JSON。)

我的复杂情况:此任务在 2 个或更多 Docker 实例中分别发生,我想检查 它们中的任何一个 是否被阻止。 (这是在 Google AppEngine 柔性环境中。)

我想说“密钥 periodicTaskLog 必须在每个实例中每分钟出现一次。否则发送警报。”

我有字段instance_name。每个实例的名称是任意值,如"a58hgh12g2""h9mm48dfh",在每个部署中都不同。因此,我无法将条件编码为将这些名称包含为文字。

那么,我该如何分组呢?

【问题讨论】:

  • 首先,您想知道如何在 Elastic 中编写此查询?(我不明白 Kibana 与您的问题有何关系)。其次,instance_name 字段是不是只有您要检查的这个 Docker 实例才有的字段?
  • “在 Elastic 中”。好的,我已经更正了。
  • 我可以进行仅收集这组 2-3 个实例的搜索。因此,将这些实例与其他实例区分开来不是问题。但是......查询必须在给定实例中聚合,以告诉我事件是否在每个实例的最后一分钟分别发生。
  • 您不想硬编码实例名称,对吗?但是查询应该如何知道你有哪些实例呢?
  • 在大多数查询语言中,这可以通过子查询来完成,您可以在其中为最后一分钟的日志行选择唯一的 instanceName

标签: elasticsearch kibana elastic-stack


【解决方案1】:

查看答案here

{
  "trigger": {
    "schedule": {
      "interval": "10s"
    }
  },
  "input": {
    "search": {
      "request": {
        "search_type": "query_then_fetch",
        "indices": [
          "packetbeat-*"
        ],
        "types": [],
        "body": {
          "size": 0,
          "query": {
            "match_all": {}
          },
          "aggs": {
            "unique_beat_names": {
              "terms": {
                "field": "ip",
                "size": 5
              },
              "aggs": {
                "response_code": {
                  "filter": {
                    "exists": {
                      "field": "dns.response_code"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "condition": {
    "script": {
      "source": "ctx.vars.missing=false;for (def beat_name : ctx.payload.aggregations.unique_beat_names.buckets){if(beat_name.doc_count == 0 || beat_name.response_code.doc_count == 0){ctx.vars.missing=true;}}return ctx.vars.missing;",
      "lang": "painless"
    }
  },
  "actions": {
    "my-logging-action": {
      "logging": {
        "level": "info",
        "text": "Oh yea"
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 2021-05-15
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多