Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 如何按Docker实例对弹性堆栈警报进行分组?_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Kibana_Elastic Stack - Fatal编程技术网 elasticsearch 如何按Docker实例对弹性堆栈警报进行分组?,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack" /> elasticsearch 如何按Docker实例对弹性堆栈警报进行分组?,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack" />

elasticsearch 如何按Docker实例对弹性堆栈警报进行分组?

elasticsearch 如何按Docker实例对弹性堆栈警报进行分组?,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack,某项定期任务应该每分钟发生一次。在阈值警报中,我可以在以下情况下发送警报 WHEN count() GROUPED OVER top 1 'periodicTaskLog' IS BELOW 1 FOR THE LAST 2 minutes (使用基本的手表创建GUI。如果需要,我可以使用高级手表JSON。) 我的复杂之处:此任务在两个或多个Docker实例中单独发生,我想检查它们是否都被阻止。(这是在谷歌AppEngine灵活的环境中。) 我想说“在每个实例中,keyperiodicTask

某项定期任务应该每分钟发生一次。在阈值警报中,我可以在以下情况下发送警报

WHEN count() GROUPED OVER top 1 'periodicTaskLog' IS BELOW 1 FOR THE LAST 2 minutes
(使用基本的手表创建GUI。如果需要,我可以使用高级手表JSON。)

我的复杂之处:此任务在两个或多个Docker实例中单独发生,我想检查它们是否都被阻止。(这是在谷歌AppEngine灵活的环境中。)

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

我有字段
instance\u name
。每个实例的名称都是一个任意值,如
“a58hgh12g2”
“h9mm48dfh”
,在每个部署中都不同。因此,我无法将条件编码为将这些名称作为文本包含

那么,我如何以这种方式分组呢?

请参见答案


首先,您想知道如何用Elastic编写此查询?(我不明白Kibana与您的问题有什么关系)。其次,字段
instance\u name
是一个字段,该字段仅包含您希望检查的Docker实例?“in Elastic”。好的,我做了更正。我可以做一个搜索,只收集这组2-3个实例。因此,将这些实例与其他实例区分开来并不是一个问题。但是查询必须在给定实例中聚合,以分别告诉我每个实例中是否在最后一分钟发生了事件。您不想硬编码实例名称,对吗?但是查询如何知道您有哪些实例呢?在大多数查询语言中,这可以通过在最后一分钟为日志行选择唯一instanceName的子查询来完成
{
  "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"
      }
    }
  }
}