Logging Docker:日志驱动程序对日志的影响
我想使用elk堆栈(Elastic search、kibana、logstash)来记录一个应用程序,该应用程序是用docker中运行的多个微服务构建的(目前在swram中) 我们想记录来自stdout/stderr的消息。我们的系统应该添加serviceName、ContainerID、时间戳(如果可能的话,可以自动精确地添加)、主机名。。。。在不为开发人员做任何工作的情况下创建每个日志条目 Docker支持Json、syslog和Gelf(仅UDP)等多种格式,这些格式可以直接发送到logstash或通过发送系统(如logspout或其他)发送 我的问题:日志驱动程序和日志传送选项如何影响日志?docker是否总是包含以不同方式打包的相同数据(如容器id、时间戳、实际日志消息),还是它实际上会影响内容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
我的同事使用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, }