Splunk 如何区分 Docker 上下文中的 stdout 和 stderr 输出?
How can Splunk distinguish between output to stdout and stderr in Docker context?
我们有一个 Java 应用程序,可以 运行 在 Docker 容器中。它向 stdout 和 stderr 生成针对不同受众具有不同详细程度的消息。
将 Splunk 配置为日志驱动程序 Splunk a 收到的所有日志行都标有来源 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-compose 的服务没有 -d,那么日志将失去其原始来源。 Docker 和 Docker-Compose 似乎将容器的输出流中的所有内容都放到了 stdout 中,并将 stderr 用于它们的日志。
使用 -d 标志,日志消息不会丢失其原始输出流。
我们有一个 Java 应用程序,可以 运行 在 Docker 容器中。它向 stdout 和 stderr 生成针对不同受众具有不同详细程度的消息。
将 Splunk 配置为日志驱动程序 Splunk a 收到的所有日志行都标有来源 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-compose 的服务没有 -d,那么日志将失去其原始来源。 Docker 和 Docker-Compose 似乎将容器的输出流中的所有内容都放到了 stdout 中,并将 stderr 用于它们的日志。
使用 -d 标志,日志消息不会丢失其原始输出流。