如何从dockerized spring boot上收集AWS上的日志?

时间:2019-02-06 11:26:46

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

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

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

1 个答案:

答案 0 :(得分:0)

这取决于您的体系结构外观以及您要如何处理日志。 如今,您可以使用多种工具来读取日志。您可以使用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优化的AMI(至少应为1.9.0),则还可以将aws日志驱动程序用于容器: 1.在启动ecs代理之前,必须使用以下命令更改/etc/ecs/ecs.config并调整ECS_AVAILABLE_LOGGING_DRIVERS:["json-file","awslogs"] 2.激活自动配置功能以创建用于ecs任务的日志组(您也可以手动创建组,但是我想您想在此处实现更多自动化)

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