Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging Docker:日志驱动程序对日志的影响_Logging_Docker_Elastic Stack - Fatal编程技术网

Logging Docker:日志驱动程序对日志的影响

Logging Docker:日志驱动程序对日志的影响,logging,docker,elastic-stack,Logging,Docker,Elastic Stack,我想使用elk堆栈(Elastic search、kibana、logstash)来记录一个应用程序,该应用程序是用docker中运行的多个微服务构建的(目前在swram中) 我们想记录来自stdout/stderr的消息。我们的系统应该添加serviceName、ContainerID、时间戳(如果可能的话,可以自动精确地添加)、主机名。。。。在不为开发人员做任何工作的情况下创建每个日志条目 Docker支持Json、syslog和Gelf(仅UDP)等多种格式,这些格式可以直接发送到logs

我想使用elk堆栈(Elastic search、kibana、logstash)来记录一个应用程序,该应用程序是用docker中运行的多个微服务构建的(目前在swram中)

我们想记录来自stdout/stderr的消息。我们的系统应该添加serviceName、ContainerID、时间戳(如果可能的话,可以自动精确地添加)、主机名。。。。在不为开发人员做任何工作的情况下创建每个日志条目

Docker支持Json、syslog和Gelf(仅UDP)等多种格式,这些格式可以直接发送到logstash或通过发送系统(如logspout或其他)发送

我的问题:日志驱动程序和日志传送选项如何影响日志?docker是否总是包含以不同方式打包的相同数据(如容器id、时间戳、实际日志消息),还是它实际上会影响内容


我的同事使用logspout从标准docker json日志中收集日志。如果我使用--log driver=gelf(假设没有包丢失),我会在logstash中获得完全相同的信息吗?

我发现Json日志只包含:{“log”:“log message”,“stream”:“stderr”,“time”:“2017-04-20T07:05:19.584571658Z”},只需查看docker inspect找到的日志文件即可。然而,Gelf测井有许多额外字段,如下所述:

不幸的是,docker仅使用udp传输gelf日志消息,因此数据包可能会丢失。但是,本地主机上的udp包不会丢失

将json日志发送到Logstash的Logspoot收集有关容器的附加信息,并发送这些信息,因此最终结果与gelf条目没有太大区别。但是,docker并不维护Logspout,对docker的更改可能会中断或更改功能,因为数据不在实际的json日志条目中

fields := gelfFields{
hostname:      hostname,
containerID:   ctx.ContainerID,
containerName: string(containerName),
imageID:       ctx.ContainerImageID,
imageName:     ctx.ContainerImageName,
command:       ctx.Command(),
tag:           ctx.Config["gelf-tag"],
created:       ctx.ContainerCreated, }