2017-01-05 12 views
0

私は現在、アクセスログを検索し、どれだけのエラーがあるかを見て、それをスラックアカウントに送信するようウォッチャーを設定しています。 私が持っている問題は、クエリが実行されたときの集計数を知ることができず、設定では最大5個の「ハードコード」のようなものですが、 5以上の作品はありません。Watcher(ElasticSearch)ですべての集計をテキストとして送信

私は、私は同じように通知として、すべてのバケット結果を送信する必要がある、唯一のサーバに対してクエリやフィルタで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を使用しています。

答えて

0

私はあなたの質問を正しく理解していれば、そのアクションで集約をループしたいと思っています。これを試してみてください:

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

うわー、本当にありがとうございます! – jonhatan

関連する問題