Не удается разделить несколько значений контекста в Elasticsearch Watcher
Я создал часы в Elasticsearch, чтобы предупредить меня, если соотношение ошибок http превышает 15% от общего числа запросов за 60 минут. Я использую входные данные цепочки для генерации значений дивидендов и делителей для расчета коэффициента.
В моем состоянии я использую сценарии, чтобы выполнить деление и проверить, больше ли это, чем мое соотношение.
Однако всякий раз, когда я использую 2 параметра ctx для деления, он всегда равен нулю.
Если я играю с ним и использую только один из параметров ctx, то он работает нормально.
Кажется, что мы не можем использовать 2 ctx params в условии.
Кто-нибудь знает, как это обойти?
Ниже мои часы.
Благодарю.
{
"trigger" : {
"schedule" : {
"interval" : "5m"
}
},
"input" : {
"chain":{
"inputs": [
{
"first": {
"search" : {
"request" : {
"indices" : [ "logstash-*" ],
"body" : {
"query" : {
"bool":{
"must": [
{
"match" : {"d.uri": "xxxxxxxx"}
},
{
"match" : {"topic": "xxxxxxxx"}
}
],
"filter": {
"range": {
"@timestamp": {
"gte": "now-60m"
}
}
}
}
}
}
},
"extract": ["hits.total"]
}
}
},
{
"second": {
"search" : {
"request" : {
"body" : {
"query" : {
"bool":{
"must": [
{
"match" : {"d.uri": "xxxxxxxx"}
},
{
"match" : {"topic": "xxxxxxxx"}
},
{
"match" : {"d.status": "401"}
}
],
"filter": {
"range": {
"@timestamp": {
"gte": "now-60m"
}
}
}
}
}
}
},
"extract": ["hits.total"]
}
}
}
]
}
},
"condition" : {
"script" : {
"source" : "return (ctx.payload.second.hits.total / ctx.payload.first.hits.total) == 0"
}
}
}
1 ответ
На самом деле проблема возникает из-за того, что я делал целочисленное деление, чтобы получить соотношение в форме 0.xx. Я полностью изменил операцию, и она работает нормально.