概要
S3はログファイルを格納するストレージとして利用されることが多いです。
本記事では、S3に格納されたログファイルの内容を別システムへ転送するための手順を記載します。
環境
本手順で取り扱う内容は、次の環境にて確認しています。
- Logstash
マシン:Amazon EC2
マシンサイズ:2vCPU 2GB
OS:Ubuntu 24.04
Logstash:8.17.0
S3バケットに随時格納されていくログファイルの内容をLogstashによって読み取り、別システムへ転送する仕組みです。
前提条件
- S3バケットは作成済みであること
- Logstashをインストールするマシンは作成済みであること
手順
Logstashインストール
Logstashのガイドに従ってください。
次のコマンドでは、Ubuntu24.04にLogstashをインストールします。
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
$ sudo apt-get install apt-transport-https
$ echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
$ sudo apt-get update && sudo apt-get install logstash
Logstash セットアップ
/etc/logstash/conf.d/logstash.conf
ファイルを作成して下さい。
$ sudo vi /etc/logstash/conf.d/logstash.conf
ファイルの中身を書き換えて下さい。
次のlogstash.confはサンプルになります。
各パラメータの詳細が知りたい場合は、ドキュメントを参照して下さい。
S3 input plugin
Http output plugin
input {
s3 {
access_key_id => "<YOUR-AWS-ACCESSKEY>"
secret_access_key => "<YOUR-AWS-SECRETACCESSKEY>"
region => "<YOUR-REGION>"
bucket => "<YOUR-S3BUCKET>"
interval => "10"
delete => false
watch_for_new_files => true
include_object_properties => false
codec => multiline {
pattern => "^\s|^}"
what => "previous"
}
}
}
output {
http {
http_method => "post"
url => "<YOUR-ENDPOINT>"
headers => { "Authorization" => "Bearer <YOUR-ACCESSTOKEN>" }
content_type => "application/json"
}
}
Logstashを起動して下さい。
$ sudo systemctl start logstash
動作確認
S3バケットにログファイルをアップロードし、
転送先システムにて、ログが受信できていることを確認して下さい。
もし、受信できていない場合、Logstashログ(/var/log/logstash/logstash-plain.log)を確認することが有効です。
補足
- Logstashのバージョン確認コマンド
$ /usr/share/logstash/bin/logstash --version
- Logstash自動起動 有効化設定
※デフォルトでは無効となっています。
$ sudo systemctl enable logstash
参考
https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-s3.html
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-http.html