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 製品であるため、何か不足していると思います。助けていただければ幸いです。
2 に答える
Filebeat は、ログ行を「そのまま」message
各イベントのフィールドに転送します。メッセージをさらに処理して応答コードなどの詳細を独自のフィールドに抽出するには、Logstash を使用できます。
Logstash では、 beats 入力を使用してFilebeat からデータを受信し、 grok フィルターを適用してメッセージからのデータを解析し、最後に elasticsearch 出力を使用してデータを Elasticsearch に書き込みます。
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 を必要とせずに機能しているようです。
応答、リファラー、応答などのフィールドが確実に表示されます。