9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

経緯

公式ドキュメントには、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} という変数が使えるらしい

公式ドキュメントには記載がありませんが、以下の書き込みを見ると {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

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

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?