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 にアクセスし、以下の手順でログの検索を開始します。
- Stack Management → Index Patterns に移動。
- 作成したインデックス名(例:
app-logs-*)に一致するパターンを登録。 - Discover ページで該当のインデックスを選択し、リアルタイムのログを確認。
必要に応じて、フィールドのマッピングやタイムフィルターの設定も行えます。