首页 > 解决方案 > AWS CloudWatch 日志组命名约定

问题描述

我必须将日志从 AWS EC2 服务器发送到 AWS CloudWatch 日志。为此,我创建了一个 CloudWatch 配置文件来收集日志,例如

{
    "agent": {
            "run_as_user": "root"
    },
    "logs": {
            "logs_collected": {
                    "files": {
                            "collect_list": [
                                    {
                                            "file_path": "/var/log/testing.log",
                                            "log_group_name": "/project/development",
                                            "log_stream_name": "{instance_id}_testing-logs"
                                    }
                            ]
                    }
            }
    }
}

我在 AWS CodeDeploy 中创建了一个应用程序,其中project包含三个组,即developmentstagingproduction。我希望 CloudWatch 使用诸如/project/development和类似的命名约定来命名它stagingproduction命名它的 log group log_group_name。为此,我不想为每个环境创建三个单独的文件。

是否有任何 CloudWatch 变量可用于 CodeDeploy,我可以使用它来命名,log_group_name就像有可用的命名变量{instance_id}自动选择实例 ID 一样。

标签: linuxamazon-web-servicesamazon-ec2amazon-cloudwatchaws-code-deploy

解决方案


查看CloudWatch 代理配置文件:日志部分文档。对于log_group_nameorlog_stream_name字段,

作为名称的一部分,您可以使用、、、和{instance_id}作为名称中的变量。{hostname}{local_hostname}{ip_address}

如果您想在 CloudWatch Logs 名称中使用 CodeDeploy 特定变量,CodeDeploy 会为钩子脚本提供一组环境变量。因此,想法是对您的 CloudWatch 代理安装进行 CodeDeploy 部署,并使用 CodeDeploy 变量创建您的 CloudWatch 代理配置文件。


推荐阅读