Невозможно дать условие наблюдателю для поиска эластичности?
Я установил наблюдателя и дал условие. Предоставляя условие, оно дает мне ошибку, что...
{"error":"WatcherException[failed to put watch [log_error_watch]]; nested:
ScriptConditionValidationException[failed to compile script [return
ctx.payload.hits.total > 5] with lang [groovy] of type [INLINE]]; nested:
ScriptException[dynamic scripting for [groovy] disabled]; ","status":500}
Что такое динамический сценарий? Это дает мне ошибку, что он отключен. Мое состояние к наблюдателю следующее.
curl -XPUT 'http://localhost:9200/_watcher/watch/log_error_watch' -d '{
"metadata" : {
"color" : "red"
},
"trigger" : {
"schedule" : {
"interval" : "10s"
}
},
"input" : {
"search" : {
"request" : {
"search_type" : "count",
"indices" : "logs",
"body" : {
"query" : { "match" : { "status" : "error" } }
}
}
}
},
"condition" : {
"script" : "return ctx.payload.hits.total > 5"
},
"transform" : {
"search" : {
"request" : {
"indices" : "logs",
"body" : {
"query" : { "match" : { "status" : "error" } }
}
}
}
},
"actions" : {
"my_webhook" : {
"webhook" : {
"method" : "GET",
"host" : "mylisteninghost",
"port" : 9200,
"path" : "/{{watch_id}}",
"body" : "Encountered {{ctx.payload.hits.total}} errors"
}
},
"email_administrator" : {
"email" : {
"to" : "xxxxxx.xxx@gmail.com",
"subject" : "Encountered {{ctx.payload.hits.total}} errors",
"body" : "Too many error in the system, see attached data",
"attach_data" : true,
"priority" : "high"
}
}
}
}'
2 ответа
@andrei прав насчет того, как включить динамические сценарии в Elasticsearch, и я собирался вставить ту же ссылку.
Однако, исходя из указанного вами условия, похоже, что вам вообще не нужно использовать сценарии! Наблюдатель имеет compare
состояние, которое выглядит идеально подходит:
https://www.elastic.co/guide/en/watcher/current/condition.html
В вашем случае условие будет выглядеть так:
{
...
"condition" : {
"compare" : {
"ctx.payload.hits.total" : {
"gte" : 5
}
}
...
}
Вам необходимо включить динамический сценарий в Elasticsearch: https://www.elastic.co/guide/en/watcher/current/condition.html
Состояние наблюдения, которое оценивает скрипт. Язык сценариев по умолчанию - groovy. Вы можете использовать любой из языков сценариев, поддерживаемых Elasticsearch, если этот язык поддерживает вычисление выражений в логических значениях. Обратите внимание, что усы и языки выражений слишком ограничены, чтобы использовать это условие. Для получения дополнительной информации см. Сценарии в справочнике Elasticsearch.
Важный
Вы должны явно включить динамические сценарии в asticsearch.yml для использования встроенных или индексированных сценариев.
И собственно включение динамических сценариев: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html