【发布时间】: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