【问题标题】:Send all the aggregations as text with Watcher (ElasticSearch)使用 Watcher (ElasticSearch) 将所有聚合作为文本发送
【发布时间】:2017-01-06 07:15:45
【问题描述】:

我现在正在配置 Watcher 以在访问日志中搜索并查看到目前为止有多少错误并将其发送到一个松弛帐户。 好吧,我遇到的问题是因为我不知道查询完成后我将拥有多少聚合,并且在我的配置中就像“硬编码”一样发送最多 5 个,但如果结果大于5 不工作。

我在查询中搜索 404 状态代码并仅过滤一台服务器,然后我只需将所有存储桶结果作为通知发送为:

总计:其总数 日志: log1:结果数 log2:结果数 log3:结果数 log4:结果数 log5:结果数 log6:结果数

这是我的配置:

  "trigger" : {
    "schedule" : { "interval" : "1h" } 
  },
  "input" : {
    "search" : {
      "request": {
      "body": {
        "query": { 
          "bool": {
            "must": [
              { "range": {
                "@timestamp": {
                  "gte": "now-1h",
                  "lte": "now"
                }
                }
              }, 
              {
                "match": {
                  "beat.hostname": "someserver"
                }
              }
            ], 
            "filter": {
              "term": {
                "response": "404"
              }
            }
          }
        },
        "aggs": {
          "host": {
            "terms": {
              "field": "beat.hostname",
              "size": 1
            }
          },
          "logs_list": {
            "terms": {
              "field": "source",
              "size": 10
            }
          }
        }
       }
      }
    }
  },
    "condition": {
    "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
  },
  "actions" : {
    "notify-slack" : {
      "throttle_period" : "30m",
      "slack" : {
        "message" : {
          "from": "Watcher",
          "to" : [ "somechannel" ],
          "attachments" : [
          {
            "title" : "400 code status found",
            "text" : "Encountered: {{ctx.payload.hits.total}} in the last hour on {{ctx.payload.aggregations.host.buckets.0.key}} \n Files: \n {{ctx.payload.aggregations.logs_list.buckets.0.key}}: {{ctx.payload.aggregations.logs_list.buckets.0.doc_count}} \n {{ctx.payload.aggregations.logs_list.buckets.1.key}}: {{ctx.payload.aggregations.logs_list.buckets.1.doc_count}} \n {{ctx.payload.aggregations.logs_list.buckets.2.key}}: {{ctx.payload.aggregations.logs_list.buckets.2.doc_count}} \n {{ctx.payload.aggregations.logs_list.buckets.3.key}}: {{ctx.payload.aggregations.logs_list.buckets.3.doc_count}} \n {{ctx.payload.aggregations.logs_list.buckets.4.key}}: {{ctx.payload.aggregations.logs_list.buckets.4.doc_count}} \n {{ctx.payload.aggregations.logs_list.buckets.5.key}}: {{ctx.payload.aggregations.logs_list.buckets.5.doc_count}}",
            "color" : "danger"
          }
        ]
        }
      }
    }
  }

我不知道应该如何在操作中发送“文本”,有什么想法应该如何传递所有存储桶结果吗? 在此先感谢,我正在使用 xpack、ELK 和 logstash。

【问题讨论】:

    标签: elasticsearch logstash kibana


    【解决方案1】:

    如果我正确理解您的问题,您希望在操作中循环您的聚合。试试这个:

    {{#ctx.payload.aggregations.myAggName.buckets}}
        {{key}}: {{doc_count}}
    {{/ctx.payload.aggregations.myAggName.buckets}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 2019-02-28
      • 2015-06-22
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      相关资源
      最近更新 更多