【问题标题】:how to collect logs on AWS from dockerized spring boot?如何从 dockerized spring boot 收集 AWS 上的日志?
【发布时间】:2019-06-30 08:14:54
【问题描述】:

默认情况下,在 Spring Boot 日志中转到 stdout。这是一个很好的标准 - 更少的配置,没有目录配置等,但我想构建一个 docker 映像并在 aws 上运行它。

如何从 dockerized spring-boot stdout 获取所有日志? cloudwatch 支持吗?有没有简单的解决方案,还是我必须切换到日志记录到文件,做 docker 卷挂载等?

【问题讨论】:

标签: amazon-web-services spring-boot docker amazon-cloudwatch


【解决方案1】:

这取决于您的架构是什么样的,以及您希望如何处理日志。 如今,您可以使用无数工具来阅读日志。您可以使用 AWS Cloudwatch 日志,通过它您可以通过 CloudWatch 本身配置警报。 为了使用它,你可以配置你的 slf4j 后端。

<appender name="cloud-watch" class="io.github.dibog.AwsLogAppender">
<awsConfig>
    <credentials>
        <accessKeyId></accessKeyId>
        <secretAccessKey></secretAccessKey>
    </credentials>
    <region></region>
    <clientConfig class="com.amazonaws.ClientConfiguration">
        <proxyHost></proxyHost>
        <proxyPort></proxyPort>
    </clientConfig>
</awsConfig>
<createLogGroup>false</createLogGroup>
<queueLength>100</queueLength>
<groupName>group-name</groupName>
<streamName>stream-name</streamName>
<dateFormat>yyyyMMdd_HHmm</dateFormat>
 <layout>
    <pattern>[%thread] %-5level %logger{35} - %msg %n</pattern>
 </layout>

显然,这取决于您的架构:如果您有例如 filebeat,您可以配置 filebeat 以使用 cloudwatch。

如果您为 ec2 实例使用 ecs-optimized AMI(至少应为 1.9.0),您还可以为您的容器使用 aws logdriver: 1. 在启动 ecs 代理之前,您必须更改 /etc/ecs/ecs.config 并调整 ECS_AVAILABLE_LOGGING_DRIVERS 为:["json-file","awslogs"] 2. 开启自动配置功能,为 ecs 任务创建日志组(你也可以手动创建组,但我认为你希望这里更自动化)

有关 aws logdriver 的更多信息,您可以查看 aws 文档:

【讨论】:

  • 但它需要配置我的每个微服务才能使用它。我可以从我的应用程序生成的标准输出中读取日志吗?
  • 还有 aws-logs 驱动程序,尽管您将更多地锁定供应商。我编辑我的答案
猜你喜欢
  • 2019-03-15
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2023-04-04
相关资源
最近更新 更多