某个周期性任务应该每分钟发生一次。如果在阈值警报中出现以下情况,我可以发送警报。
WHEN count() GROUPED OVER top 1 'periodicTaskLog' IS BELOW 1 FOR THE LAST 2 minutes
(它使用基本的Watch创建GUI。如果需要,我可以使用Advanced Watch JSON。)
我的复杂功能:此任务在两个或更多Docker实例中单独发生,我想检查中没有被阻止。 (这是在Google AppEngine Flexible Environment中。)
我想说“关键periodicTaskLog
必须在每个实例中每分钟发生一次。否则发送提醒。”
我有字段instance_name
。每个实例的名称都是一个任意值,如"a58hgh12g2"
或"h9mm48dfh"
,每个部署都不同。所以,我无法编写条件来将这些名称包含为文字。
那么,我该如何以这种方式分组?
答案 0 :(得分:0)
请参阅回答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"
}
}
}
}