火曜日, 7月 1, 2025
火曜日, 7月 1, 2025
- Advertisment -
ホームニューステックニュースCloudWatch Agentで送信するログのLog stream名に日付をいれる #AWS - Qiita

CloudWatch Agentで送信するログのLog stream名に日付をいれる #AWS – Qiita



CloudWatch Agentで送信するログのLog stream名に日付をいれる #AWS - Qiita

公式ドキュメントには、CloudWatch Agent で CloudWatch Logs に送信するLog stream名に以下のものが指定できますが、保持期間が長いと過去ログをあさる際に何度も Load more. をクリックしないといけなかったり、Log Insights QL で検索したりと結構めんどうだったりします
(Athenaに転送していればいいだけの話ではありますが)

名前の一部として、名前では変数として {instance_id}、{hostname}、{local_hostname}、{ip_address} を使用することができます。{hostname} は、EC2 メタデータからホスト名を取得し、{local_hostname} は、ネットワーク設定ファイルからホスト名を使用します。
このフィールドを省略すると、グローバル log_stream_name セクションの logs パラメータの値が使用されます。これも省略すると、{instance_id} のデフォルト値が使用されます。

Log stream名を定期的に変えられないかなぁ。。。と調査した際のメモです

公式ドキュメントには記載がありませんが、以下の書き込みを見ると {date} という変数が存在するらしいです
AWS CloudWatch Logs Stream – how configure awslogs to write every day new log stream to the same log group from the same instance?

placeholderUtil.go

const (
	instanceIdPlaceholder    = "{instance_id}"
	hostnamePlaceholder      = "{hostname}"
	localHostnamePlaceholder = "{local_hostname}" //regardless of ec2 metadata
	ipAddressPlaceholder     = "{ip_address}"
	awsRegionPlaceholder     = "{aws_region}"
	datePlaceholder          = "{date}"

	unknownInstanceId = "i-UNKNOWN"
	unknownHostname   = "UNKNOWN-HOST"
	unknownIpAddress  = "UNKNOWN-IP"
	unknownAwsRegion  = "UNKNOWN-REGION"
)

試しに amazon-cloudwatch-agent.json の log_stream_name に {date} を追加してみます

amazon-cloudwatch-agent.json

{
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/nginx/error.log",
                        "log_group_name": "/ec2/nginx/errors",
                        "log_stream_name": "{local_hostname}_{date}",
                        "timestamp_format": "%Y/%m/%d %H:%M:%S"
                    }
                ]
            }
        }
    }
}

また、これらの変数はCloudWatch Agentの起動時に展開されるため、午前0時に再起動するよう root の cron に以下を追加します

0 0 * * * /usr/bin/systemctl restart amazon-cloudwatch-agent

CloudWatch Logsを確認するとLog stream名に日付が追加されました

cloudwatch_logs.png

公式には記載がないのでそのうちサポートされなくなってしまうかもしれないですが、やりたいことは実現できました





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -