概要
NFS serverはログファイルを格納するストレージとして利用されることが多いです。
本記事では、NFS serverに格納されたログファイルの内容を別システムへ転送するための手順を記載します。
環境
本手順で取り扱う内容は、次の環境にて確認しています。
-
NFS Server
マシン:Amazon EC2
マシンサイズ:1vCPU 2GB
OS:Ubuntu 24.04 -
NFS Client & Logstash server
マシン:Amazon EC2
マシンサイズ:1vCPU 2GB
OS:Ubuntu 24.04
Logstash:8.17.0
NFS Serverに随時格納されていくログファイルの内容をLogstashによって読み取り、別システムへ転送する仕組みです。
Logstashのインストール場所ですが、NFS serverにインストールできないケースを考慮し、別途マシン(NFS client)を用意し、そちらにインストールします。
前提条件
NFS clientからNFS serverの任意のディレクトリをマウントできていること。
まだ未実施の場合はこちらを参照し、環境を用意して下さい。
手順
本手順は、NFS clientマシンにて実施下さい。
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はサンプルになります。
各パラメータの詳細が知りたい場合は、ドキュメントを参照して下さい。
File input plugin
Http output plugin
<YOUR-FILE-PATH>
の箇所はマウントポイント配下のファイルのパスになるはずです。
※複数のファイルを読み取りたい場合には、ワイルドカード(*)が利用可能です。
※読み取るファイルと、それらが配置される親ディレクトリに対して、"Logstash"ユーザによる実行権限が必要です。
input {
file {
path => ["<YOUR-FILE-PATH>"]
sincedb_path => "/dev/null"
start_position => "end"
}
}
output {
http {
http_method => "post"
url => "<YOUR-ENDPOINT>"
headers => { "Authorization" => "Bearer <YOUR-ACCESSTOKEN>" }
content_type => "application/json"
}
}
編集が完了したら、Logstashを起動して下さい。
$ sudo systemctl start logstash
動作確認
NFS Serverにログファイルをアップロードし、
転送先システムにて、ログが受信できていることを確認して下さい。
もし、受信できていない場合、Logstashログ(/var/log/logstash/logstash-plain.log)を確認することが有効です。
また、LogstashのFile input pluginはtailとしても動作するので、対象のファイルに随時追記されていくログに関しても読み取りが可能です。
補足
- Logstashのバージョン確認コマンド
$ /usr/share/logstash/bin/logstash --version
- Logstash自動起動 有効化設定
※デフォルトでは無効となっています。
$ sudo systemctl enable logstash
- ログ収集ツールとしては他にも
Fluentd
が有名ですが、Fluentdでログファイルを読み取れるInput pluginはtail pluginのみです。つまり取得対象のファイルに追記されていくログを読み取ることは出来ますが、NFS Serverに新規にアップロードされるファイルの既存ログメッセージは読み取りません。Logstashであれば、新規ファイルの内容も読み取ることが可能です。
参考