Как получить значения переменных в запущенном оповещении в сервисе AWS ElasticSearch?
Я пытаюсь опубликовать подробное сообщение об Slack от триггера предупреждений монитора AWS ElasticSearchService. Я пытался использовать переменные, как в описании https://opendistro.github.io/for-elasticsearch-docs/docs/alerting/monitors/
Оповещения запускаются и публикуются в Slack, но большинство переменных пустые, когда я пытаюсь использовать их в действии. Я получаю информацию только от ctx.trigger.name
, ctx.periodStart
, ctx.periodEnd
, Переменные как ctx.trigger.condition
, ctx.results[0]
, ctx.error
, ctx.results[0].hits.total
пусты, в то время как документы говорят ctx.error
будет заполнено, если ctx.results[0]
пустой.
Как я могу получить больше данных? Мой запрос как-то ограничивает это?
Мой запрос на извлечение монитора выглядит следующим образом:
{
"size": 20,
"query": {
"constant_score": {
"filter": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"from": "now-1m",
"to": null,
"include_lower": true,
"include_upper": true,
"boost": 1
}
}
}
],
"must_not": [
{
"match": {
"status": {
"query": "200",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"boost": 1
}
}
}
1 ответ
В синтаксисе триггера используются шаблоны Mustache ( страница man), которые не являются исчерпывающими. Хитрость заключается в том, чтобы просмотреть результаты и обратиться к таким переменным:
- Total hits: {{#ctx.results}}{{#hits}}{{total}}{{/hits}}{{/ctx.results}}
- Period start: {{ctx.periodStart}}
- Period end: {{ctx.periodEnd}}
- HTTP errors:
{{#ctx.results}}
{{#hits}}
{{#hits}}
{{#_source}} ip:{{ip}} status: {{status}} : {{error.message}} at path: {{path}} {{/_source}}
{{/hits}}
{{/hits}}
{{/ctx.results}}