首页 > 解决方案 > 如何为动态日志文件名配置 aws cloudwatch 日志配置

问题描述

我正在尝试配置 AWS cloudwatch 代理以将日志从我的 ec2 实例发送到 Cloudwatch。我有 4 个实例在 ALB 下运行。每个 ec2 实例都运行一个 Java Web 服务,该服务可以接收来自多个客户的请求。每个客户的日志转到每个实例上的单独日志文件 - customerA.log、customerB.log 等(使用 logback 的“Sift”附加程序)。任何客户请求都可以转到任何实例。

这些客户名称事先是未知的 - Web 服务接收 customerId 作为 Web 请求的一部分,并且随着新客户使用该服务,将会有新的日志文件。

我希望能够将日志发送到 cloudwatch,以便按客户名称收集和合并它们,这样我就可以看到每个客户的单个日志文件,它是来自所有实例的汇集日志。

我怎样才能做到这一点?使用文档中的配置,我可以看到通配符可以将不同的日志文件合并到 CloudWatch 上的单个流中,但我想用某种动态占位符替换 {instance_id} 以获取日志文件的确切名称(即以客户 ID 命名)。

我不确定这是否可能,所以如果有其他配置可以实现相同的目标,那就没问题了。非常感谢!

    "logs_collected": {
                        "files": {
                                "collect_list": [
                                        {
                                                "file_path": "/media/logs-audit/customer*",
                                                "log_group_name": "errors.log",
                                                "log_stream_name": "{instance_id}"
                                        },
                                ]
                         }
                 }

标签: amazon-web-servicesamazon-cloudwatch

解决方案


是的,接受 UNIX 标准全局匹配规则。 文档


推荐阅读