🕌

journal logのCloudWatch Logs集約設定について

に公開

やりたいこと

このコマンドで出力されるようなログをCloudWatch Logsに保管したい

journalctl -f -u "myapp"

目標

  • EC2などLinux環境で出力されるjournal logをCloudWatch Logsに集約する
  • 指定したユニット単位でログを保管する
  • 省エネで実装する

使用するソフト

実装手順

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でユニットを指定する
  • [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

参考

Discussion