需要一个在预定时间前 5 分钟开始的 elasticsearch 查询过滤器范围
Need an elasticsearch query filter range which starts 5 minutes before scheduled time
我正在使用 elasticsearch 6.5.4 和一个 kibana 观察器来发出警报。
我有一个像这样的过滤器范围:
"filter": [
{
"range": {
"@timestamp": {
"gte": "{{ctx.trigger.scheduled_time}}||-{{ctx.metadata.triggered_interval}}m"
}
}
}
]
scheduled_time是每小时第5分钟(1:05,2:05等)triggered_interval是60。
我想收集一系列@timestamps,忽略最近的 5 分钟。基本上,某些状态消息可能对真正的错误来说太新了,所以想忽略它们。
我正在尝试制作它,因此它的内容如下:开始时间为 trigger.scheduled_time - 5m,结束时间为 triggered_interval.
范围格式为time1-time2,所以scheduled_time-5m-triggered_interval是无效语法。
我尝试了几次迭代,但似乎没有任何效果。观察者只是 returns 空指针异常。
"gte": "<{{{ctx.trigger.scheduled_time}}||-5m}>-{{ctx.metadata.triggered_interval}}m"
"gte": "<{{ctx.trigger.scheduled_time}}||-5m>-{{ctx.metadata.triggered_interval}}m"
"gte": "{{ctx.trigger.scheduled_time}}||-5m-{{ctx.metadata.triggered_interval}}m"
"gte": "({{ctx.trigger.scheduled_time}}||-5m)-{{ctx.metadata.triggered_interval}}m"
这可以在范围过滤器中执行吗?
elasticsearch date math functionality together with a range query 应该可以解决问题。
如果你想要 select 所有超过 5 分钟和低于 60 分钟的事件,相对于执行时间,我会这样做:
"filter": [
{
"range": {
"@timestamp": {
"lte": "now-5m/m",
"gte": "now-60m/m"
}
}
}
]
换句话说:获取所有事件,其中@timestamp 早于 5 分钟但不早于 60 分钟,所有 @timestamps 都四舍五入到整分钟。如果您不需要四舍五入,只需删除 /m
.
干杯!
我正在使用 elasticsearch 6.5.4 和一个 kibana 观察器来发出警报。 我有一个像这样的过滤器范围:
"filter": [
{
"range": {
"@timestamp": {
"gte": "{{ctx.trigger.scheduled_time}}||-{{ctx.metadata.triggered_interval}}m"
}
}
}
]
scheduled_time是每小时第5分钟(1:05,2:05等)triggered_interval是60。
我想收集一系列@timestamps,忽略最近的 5 分钟。基本上,某些状态消息可能对真正的错误来说太新了,所以想忽略它们。
我正在尝试制作它,因此它的内容如下:开始时间为 trigger.scheduled_time - 5m,结束时间为 triggered_interval.
范围格式为time1-time2,所以scheduled_time-5m-triggered_interval是无效语法。 我尝试了几次迭代,但似乎没有任何效果。观察者只是 returns 空指针异常。
"gte": "<{{{ctx.trigger.scheduled_time}}||-5m}>-{{ctx.metadata.triggered_interval}}m"
"gte": "<{{ctx.trigger.scheduled_time}}||-5m>-{{ctx.metadata.triggered_interval}}m"
"gte": "{{ctx.trigger.scheduled_time}}||-5m-{{ctx.metadata.triggered_interval}}m"
"gte": "({{ctx.trigger.scheduled_time}}||-5m)-{{ctx.metadata.triggered_interval}}m"
这可以在范围过滤器中执行吗?
elasticsearch date math functionality together with a range query 应该可以解决问题。
如果你想要 select 所有超过 5 分钟和低于 60 分钟的事件,相对于执行时间,我会这样做:
"filter": [
{
"range": {
"@timestamp": {
"lte": "now-5m/m",
"gte": "now-60m/m"
}
}
}
]
换句话说:获取所有事件,其中@timestamp 早于 5 分钟但不早于 60 分钟,所有 @timestamps 都四舍五入到整分钟。如果您不需要四舍五入,只需删除 /m
.
干杯!