1

ES を出力として filebeat を使用しています。指定しました: input_type: log document_type: apache paths: - /var/log/httpd/*_log in /etc/filebeat/filebeat.yml で、Kibana で結果を正常に表示できます。しかし、私は「ウォッチャー」をいじっていて、404 の HTTP リターン コードに基づいてウォッチを作成しようとしています。Kibana ファイルビートの結果には、「404」にのみ対応するフィールドはありません。「応答」のようなものです。 filebeat と ELK は BIG 製品であるため、何か不足していると思います。助けていただければ幸いです。

4

2 に答える 2

1

Filebeat は、ログ行を「そのまま」message各イベントのフィールドに転送します。メッセージをさらに処理して応答コードなどの詳細を独自のフィールドに抽出するには、Logstash を使用できます。

Logstash では、 beats 入力を使用してFilebeat からデータを受信し、 grok フィルターを適用してメッセージからのデータを解析し、最後に elasticsearch 出力を使用してデータを Elasticsearch に書き込みます。

于 2016-08-03T19:37:38.467 に答える
1

Logstash を使用する代わりに、"Ingest Node" と Elasticsearch の適切なパイプラインを使用することもできます。

https://www.elastic.co/guide/en/beats/filebeat/5.0/configuring-ingest-node.html

Grok プロセッサを含むパイプラインをセットアップできます。

https://www.elastic.co/guide/en/elasticsearch/reference/5.0/grok-processor.html

私はこのpipeline.jsonファイルでこれを行いました:

{
  "description": "Combined Apache Log Pipeline",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": [ "%{COMBINEDAPACHELOG}" ]
      }
    }
  ]
}

次に、次のコマンドを実行して、パイプラインをクラスターにデプロイしました。

curl -XPUT 'http://node-01.example.com:9200/_ingest/pipeline/combined-apache-log' -d@pipeline.json

最後に、filebeat.yml を更新して、パイプラインでイベントを処理するよう Elasticsearch の出力に指示しました。

#================================ Outputs =====================================

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts:
    - "192.168.0.1:9200"
    - "192.168.0.2:9200"
    - "192.168.0.3:9200"
  loadbalance: true
  pipeline: combined-apache-log

これは、Logstash を必要とせずに機能しているようです。

応答、リファラー、応答などのフィールドが確実に表示されます。

于 2016-11-24T16:32:49.097 に答える