分散型ログ収集基盤:Logstash の導入と Filebeat 連携構築

Logstash は、ELK スタックにおいてログデータの収集、変換、転送を担当する重要なコンポーネントです。本稿では、Logstash のインストール手順から、Elasticsearch への出力設定、そして軽量な収集 agent である Filebeat との連携構成について解説します。

1. Logstash のインストール

公式配布サイトから適切なバージョンのアーカイブファイルを入手します。

https://www.elastic.co/downloads/logstash

ダウンロードしたファイルをサーバーへ転送し、展開します。

tar -xzf logstash-8.11.2-linux-x86_64.tar.gz

2. パイプラインの動作検証

Logstash のパイプラインは、入力(input)、フィルタ(filter)、出力(output)の 3 要素で構成されます。インストールが正常か確認するため、標準入力から受け取ったデータを標準出力へ表示する最小構成のパイプラインを実行します。

./bin/logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'

コマンド実行後、任意の文字列を入力し、整形された出力が返されれば環境構築は成功です。

3. Elasticsearch への出力設定

実際に運用する設定ファイルを作成します。Beats 入力および TCP 入力を受け付け、条件に応じてインデックス名を動的に生成する構成です。

cd logstash-8.11.2/config/
vim pipeline.conf
input {
  beats {
    port => 5044
  }
  tcp {
    port => 5000
    codec => json
  }
}

filter {
  if [service_id] {
    mutate {
      add_tag => ["custom_service"]
    }
  }
}

output {
  if "custom_service" in [tags] {
    elasticsearch {
      hosts => ["http://10.10.20.5:9200"]
      index => "logs-%{[service_id]}-%{+YYYY.MM.dd}"
    }
  } else {
    elasticsearch {
      hosts => ["http://10.10.20.5:9200"]
      index => "logs-default-%{+YYYY.MM.dd}"
    }
  }
}

4. Filebeat との連携構成

分散システム環境では、アプリケーションサーバーごとにログファイルが出力されます。Logstash は Java で動作するためリソース消費が大きいため、各アプリケーションサーバーに直接導入するのは非効率です。代わりに、Go 言語で構築され軽量な Filebeat を各サーバーに配置し、ログを収集して中央の Logstash へ転送する構成が一般的です。

Filebeat の入手先:

https://www.elastic.co/downloads/beats/filebeat

展開とディレクトリ移動:

tar -xzf filebeat-8.11.2-linux-x86_64.tar.gz
cd filebeat-8.11.2-linux-x86_64/

設定ファイルの編集:

vim filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/app/application.log
  fields:
    service_id: web_frontend

output.logstash:
  hosts: ["10.10.20.100:5044"]

ここでは、アプリケーションが出力するログパスを指定し、追加フィールドとしてサービス識別子を定義しています。出力先は Logstash が待ち受けているアドレスです。

Filebeat の起動:

sudo chown root filebeat.yml
sudo ./filebeat -e -c filebeat.yml > filebeat.log 2>&1 &

これにより、ログデータは Filebeat から Logstash へ渡され、最終的に Elasticsearch へ格納されます。収集状況は Kibana ダッシュボードまたは Elasticsearch 用の管理ツールを通じて確認可能です。

タグ: Logstash Elasticsearch filebeat ELK-Stack distributed-logging

9月20日 05:33 投稿