首页 > 解决方案 > 带有时间戳日志文件的 Cloudwatch 配置

问题描述

我正在尝试从 AWS 中的 EC2 实例设置 cloudwatch 日志,这是配置

{
        "agent": {
                        "run_as_user": "root"
        },              
        "logs": {       
                "logs_collected": {
                        "files": {
                        "collect_list": [
                                {
                                "file_path": "/var/log/test.log",
                                "log_group_name": "my-app",
                                "log_stream_name": "my-app-instance-id"
                                }
                        ]       
                }       
                }       
        }
}

在启动 cloudwatch 代理后,这不会按预期创建指定的日志组

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

控制台上没有看到错误,但在 AWS 控制台中找不到指定的日志组。此配置是否应该创建此日志组?想到的另一个想法是,在var/log日志文件的名称下附加了一个时间戳,test-20200407.log这是问题所在吗?我如何解释时间戳?

标签: loggingamazon-ec2amazon-cloudwatch

解决方案


由于您想持续监控日志文件,这意味着无论文件“test-.log”是否更新,都应该推送到 CW 控制台。

这可以使用通配符来完成。如下所示:

    "collect_list": [
    {
    "file_path": "/var/log/test*",
    "log_group_name": "my-app",
    "log_stream_name": "my-app-instance-id"
    }
] 

您可以在https://forums.aws.amazon.com/thread.jspa?threadID=156280找到相同的参考

'file' 选项指定要推送的文件。它可以使用通配符指向特定文件或多个文件,例如 /var/log/system.log*。根据文件修改时间只推送最新的文件


推荐阅读