如何在 AWS ElasticSearch Service 的触发警报中获取变量值?

How to get variable values in triggered alert in AWS ElasticSearch Service?

我正在尝试 post 来自 AWS ElasticSearchService Monitor Alert Trigger 关于 Slack 的详细消息。我试过按照描述使用变量 https://opendistro.github.io/for-elasticsearch-docs/docs/alerting/monitors/

警报被触发并在 Slack 上 posted,但是当我尝试在操作中使用它们时,大多数变量都是空的。我只从 ctx.trigger.namectx.periodStartctx.periodEnd 获取信息。 ctx.trigger.conditionctx.results[0]ctx.errorctx.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
        }
    }
}

触发器语法使用 Mustache 模板 (man page),不全面。诀窍是遍历结果并引用这样的变量:

- 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}}