【问题标题】:How can Splunk distinguish between output to stdout and stderr in Docker context?Splunk 如何在 Docker 上下文中区分输出到 stdout 和 stderr?
【发布时间】:2021-01-12 12:55:11
【问题描述】:

我们有一个可以在 Docker 容器中运行的 Java 应用程序。它为 stdoutstderr 生成消息,并为不同的受众提供不同级别的详细信息。

将 Splunk 配置为日志驱动程序 Splunk 接收到的所有日志行都标有源 stdout,尽管必须有日志行被记录到 stderr

docker-compose 中的 Splunk 日志驱动配置:

logging:
    driver: splunk
    options:
        splunk-url: https://splunkhf:8088
        splunk-token: [TOKEN]
        splunk-index: splunk_index
        splunk-insecureskipverify: "true"
        splunk-sourcetype: log4j
        splunk-format: "json"
        tag: "{{.Name}}/{{.ID}}"

发送到 splunk 的示例日志消息:

{
   line: 2021-01-12 11:37:49,191;10718;INFO ;[Thread-1];Logger; ;Executed all shutdown events. 
   source: stdout 
   tag: service_95f2bac29286/582385192fde 
}

如何配置 Docker 或 Splunk 以正确区分这些不同的流?`

【问题讨论】:

    标签: docker logging docker-compose splunk


    【解决方案1】:

    如果您在没有 -d 的情况下从 docker-compose 运行服务,则日志会丢失其原始来源。似乎 Docker 和 Docker-Compose 将容器的输出流中的所有内容都放到了标准输出中,并使用标准错误记录它们的日志。

    使用 -d 标志,日志消息不会丢失其原始输出流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多