Filebeat を使用したログ収集と ELK スタック連携の構成方法

Filebeat によるアプリケーションログの収集設定

ELK(Elasticsearch、Logstash、Kibana)スタックでアプリケーションログを可視化するには、ログ収集エージェントとして Filebeat を利用するのが一般的です。以下は、Spring Boot アプリなどから出力されるログファイルを収集し、Logstash 経由で Elasticsearch に送信するまでの手順です。

1. Filebeat のインストール

まず、ログを出力しているサーバー(例:アプリケーションサーバー)に Filebeat をインストールします。Linux 環境の場合、以下のコマンドでダウンロード・展開できます。

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.0-linux-x86_64.tar.gz
tar -xzf filebeat-8.14.0-linux-x86_64.tar.gz
cd filebeat-8.14.0-linux-x86_64

2. 設定ファイルの編集

主要な設定ファイル filebeat.yml を編集し、監視対象のログパスや送信先を指定します。

# 入力ソースの定義
filebeat.inputs:
- type: filestream
  enabled: true
  paths:
    - /var/log/myapp/*.log
    # 例: Spring Boot の logback-spring.xml で ./logs/ と相対指定している場合、
    # 実際の絶対パス(例: /opt/app/logs/*.log)に変更してください

# 出力先を Logstash に設定
output.logstash:
  hosts: ["logstash-server.internal:5044"]
  pipeline: "springboot-json-pipeline"

# ホスト情報の自動付加(オプション)
processors:
  - add_host_metadata: ~
  - add_docker_metadata: ~

# Kibana 接続設定(ダッシュボードのセットアップ用)
setup.kibana:
  host: "kibana.internal:5601"
  • type: filestream — 新しい入力タイプで、安定性とパフォーマンスが向上しています。
  • paths — 収集対象のログファイルの絶対パスを指定。ワイルドカードも使用可能。
  • pipeline — Logstash 側で処理フローを分岐するために使用。

3. Logstash 側の受信設定

Logstash サーバーでは、Beats プラグインを使って Filebeat からのデータを受信します。設定ファイル logstash.conf の内容例:

input {
  beats {
    port => 5044
  }
}

filter {
  # JSON 形式のログは自動でパースされるため、特別な処理が不要な場合が多い
  # 必要に応じてフィルターを追加(例:タイムスタンプの正規化、フィールドの追加)
  if [pipeline] == "springboot-json-pipeline" {
    json {
      source => "message"
    }
    date {
      match => [ "timestamp", "ISO8601" ]
      target => "@timestamp"
    }
  }
}

output {
  elasticsearch {
    hosts => ["es-cluster.internal:9200"]
    index => "app-logs-%{+yyyy.MM.dd}"
    manage_template => false
  }
}
  • Beats 入力プラグインがポート 5044 でリッスン。
  • フィルターセクションでは、JSON メッセージの再構築や日時フィールドの調整が可能。
  • 出力先の Elasticsearch に日付ベースのインデックス名で保存。

4. Filebeat の起動

テスト時は標準出力にログを表示して動作確認を行います。

./filebeat -e -c filebeat.yml

本番環境ではバックグラウンド実行を推奨します。

nohup ./filebeat -e -c filebeat.yml > /dev/null 2>&1 &

サービスとして登録する場合は、systemd 単位を作成することも可能です。

5. Kibana でのログ確認

Kibana にアクセスし、以下の手順でログの検索を開始します。

  1. Stack Management → Index Patterns に移動。
  2. 作成したインデックス名(例: app-logs-*)に一致するパターンを登録。
  3. Discover ページで該当のインデックスを選択し、リアルタイムのログを確認。

必要に応じて、フィールドのマッピングやタイムフィルターの設定も行えます。

タグ: filebeat Logstash Elasticsearch Kibana ログ収集

7月26日 00:28 投稿