【问题标题】:Configure Kubernetes logs in different path with Spring Logback使用 Spring Logback 在不同路径中配置 Kubernetes 日志
【发布时间】:2020-05-07 20:21:44
【问题描述】:

我有一个在 Kubernetes pod 中运行的应用程序 Java/Spring boot,日志配置为标准输出,fluentd 从默认路径获取日志:

<source>
 @type tail
 path /var/log/containers/*.log
 pos_file /pos/containers.pos
 time_key time
 time_format %Y-%m-%dT%H:%M:%S.%NZ
 tag kubernetes.*
 format json
 read_from_head true
</source>

在我的 logback xml 配置中,我有一个 appender json 文件:

<appender name="jsonAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/spring-boot-logger.log</file>
    <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <maxIndex>1</maxIndex>
        <fileNamePattern>${LOG_PATH}.%i</fileNamePattern>
    </rollingPolicy>
    <KeyValuePair key="service" value="java-app" />
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>1MB</MaxFileSize>
    </triggeringPolicy>
</appender>

如何在我的 Kubernetes 设置中将除 stdout 之外的这个单独的日志文件与 Fluentd 集成,以将我的 json 日志发送到不同的路径

【问题讨论】:

    标签: spring logging kubernetes logback fluentd


    【解决方案1】:

    你需要:

    1. 将该文件移动到 emptyDir 卷(我猜是 hostPath,但使用 emptyDir),然后
    2. 将 fluentd/bit 作为边车运行,从该卷中读取数据并
    3. 转发到流利设置的其余部分。

    【讨论】:

      【解决方案2】:
      1. 在 Spring Boot 应用程序的 dockerfile 中,创建一个将写入日志的目录
      2. 在 logback xml 文件中有一个 FileAppender,它将在该目录路径中写入日志
      3. 将 logback xml 文件作为 jar 文件的一部分放在 resources 文件夹中。
      4. 将 Fluentd sidecar 添加到 spring boot 应用的 pod 规范中
      5. 配置 Fluentd sidecar 以从写入该目录路径的日志文件中跟踪日志。

      【讨论】:

        猜你喜欢
        • 2019-07-11
        • 1970-01-01
        • 1970-01-01
        • 2018-10-20
        • 2016-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多