Fra*_* CD 6 amazon-ec2 amazon-web-services docker amazon-cloudwatchlogs
我有一个 Web Api (.Net Core 3.0),在 AWS 集群 (ECS) 上运行,带有 EC2 实例。在任务定义中,我在容器中配置了 awslog 驱动程序以将日志写入特定日志组/区域。
\n我遇到与 Web API 发出的多行日志消息相关的问题(每一行在 CloudWatch 中的不同日志消息中显示为 splittend)。经过研究,我发现了似乎与此事相关的信息,但我\xc2\xb4m 不确定某些点。
\n我发现了一些有关 CloudWatch Agent 的信息,这些信息似乎与多行配置相关。CloudWatch Agent 是否与我的容器化 Web API 发出的日志消息相关?我的意思是,我的 Web API 向控制台发送日志,并通过 awslog 驱动程序将它们自动抛出到 CloudWatch Logs。所以,我不知道特工在这种情况下是否会做任何事情。
\n关键是,在 CloudWatch Agent 文档中,我读到了与配置文件相关的内容,该文件似乎与多行问题相关:
\n\xe2\x80\x9c multi_line_start_pattern:指定用于识别日志消息开始的模式\xe2\x80\x9d
\n我不知道代理与 awslog 驱动程序有何关系。关于 awslog 驱动程序,我发现这些与多行问题相关的属性可以包含在我的任务定义中:
\n\xe2\x80\x9c awslogs-multiline-pattern:此选项使用正则表达式定义多行起始模式\xe2\x80\x9d
\n\xe2\x80\x9c awslogs-datetime-format:此选项以 Python strftime 格式定义多行开始模式\xe2\x80\x9d
\n那么,CloudWatch Agent 和 awslog 驱动程序配置都可以解决多行问题吗?他们有关系吗?它们适用于不同的范围?
\n提前致谢。
\n小智 3
有同样的问题。通过在 logdriver 配置上使用 awslogs-multiline-pattern 属性修复了该问题。
我的应用程序具有 JSON 日志,其中包括 INFO、DEBUG、WARN、ERROR 或 CRITICAL,因此使用此属性,我将每个日志分类到各自的行中,如下所示:
LogConfiguration:
LogDriver: awslogs
Options:
awslogs-region: !Ref AWS::Region
awslogs-group: some group
awslogs-stream-prefix: ecs
awslogs-multiline-pattern: '^(INFO|DEBUG|WARN|ERROR|CRITICAL)'
Run Code Online (Sandbox Code Playgroud)
这是使用多行模式之前的样子:
这是之后:
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
2786 次 |
| 最近记录: |