🕌
journal logのCloudWatch Logs集約設定について
やりたいこと
このコマンドで出力されるようなログをCloudWatch Logsに保管したい
journalctl -f -u "myapp"
目標
- EC2などLinux環境で出力されるjournal logをCloudWatch Logsに集約する
- 指定したユニット単位でログを保管する
- 省エネで実装する
使用するソフト
- fluentbit
実装手順
IAM Roleを作成しリソースにアタッチする
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:CreateLogGroup",
"logs:PutLogEvents"
],
"Resource": "*"
}]
}
fluentbitのインストール
curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
fluentbitの設定ファイルのバックアップ
cp /etc/fluent-bit/fluent-bit.conf /etc/fluent-bit/fluent-bit.conf.bk
fluentbitの設定ファイルを編集してCloudWatch Logsへ出力できるように設定
vi /etc/fluent-bit/fluent-bit.conf
設定サンプル
- [FILTER]のRegexでユニットを指定する
- 下記サンプルだとKey:AUDIT_FIELD_UNIT, Value:myappが含まれるログを出力する設定
- 参考 https://docs.fluentbit.io/manual/pipeline/filters/grep
- [OUTPUT]で出力先のCloudWatch Logsの情報を設定する
[SERVICE]
Flush 1
Daemon off
Log_Level info
Parsers_File parsers.conf
[INPUT]
Name systemd
Tag journal
Path /var/log/journal
[FILTER]
Name grep
Match *
Regex AUDIT_FIELD_UNIT myapp
[OUTPUT]
Name cloudwatch_logs
Match *
region ap-northeast-1
log_group_name /ec2/app-instance/myapp
log_stream_name journal
auto_create_group true
fluentbitの自動起動設定
sudo systemctl enable fluent-bit
sudo systemctl start fluent-bit
参考
- fluentbit関連
- Journal関連
Discussion