当日志显示具有相同的时间戳时,其中一些似乎不按顺序显示。通过阅读一些主题,我无法找到合适的解决方案。但我相信必须有一些事情要做,因为这个问题早在Logstash 1报道。
基本上,我使用logstash使用json行编解码器[使用logstash-logback-encoder此处]侦听某个端口上的传入tcp。目前,过滤器为空,我将数据输出到elasticsearch和stdout(编解码器rubydebug)。
我的IDE中的控制台日志:
2017-Aug-30 15:15:30.191 [main] INFO com.sbsatter.logbackLogstash.App - Testing LOG Order;
Expected Order: 1 => 10
2017-Aug-30 15:15:30.193 [main] INFO com.sbsatter.logbackLogstash.App - 1
2017-Aug-30 15:15:30.194 [main] INFO com.sbsatter.logbackLogstash.App - 2
...
2017-Aug-30 15:15:30.195 [main] INFO com.sbsatter.logbackLogstash.App - 9
2017-Aug-30 15:15:30.195 [main] INFO com.sbsatter.logbackLogstash.App - 10
启动logstash的终端相应地读取:
{
"@timestamp" => 2017-08-30T09:15:30.197Z,
"port" => 47820,
"@version" => "1",
"host" => "127.0.0.1",
"time" => "2017-08-30 15:15:30.191+0600",
"message" => "Testing LOG Order;\nExpected Order: 1 => 10"
}
{
"@timestamp" => 2017-08-30T09:15:30.198Z,
"port" => 47820,
"@version" => "1",
"host" => "127.0.0.1",
"time" => "2017-08-30 15:15:30.193+0600",
"message" => "1"
}
{
"@timestamp" => 2017-08-30T09:15:30.198Z,
"port" => 47820,
"@version" => "1",
"host" => "127.0.0.1",
"time" => "2017-08-30 15:15:30.194+0600",
"message" => "2"
}
.....
{
"@timestamp" => 2017-08-30T09:15:30.216Z,
"port" => 47820,
"@version" => "1",
"host" => "127.0.0.1",
"time" => "2017-08-30 15:15:30.195+0600",
"message" => "9"
}
{
"@timestamp" => 2017-08-30T09:15:30.224Z,
"port" => 47820,
"@version" => "1",
"host" => "127.0.0.1",
"time" => "2017-08-30 15:15:30.195+0600",
"message" => "10"
}
虽然这里的差异并不大,但是当与实时日志一起使用时,更改的顺序会使日志显得无意义。我该如何解决这个问题?
注意,我也在elasticsearch forum中提出了这个问题。我通过文档潜水,找到了与此相近但无济于事的任何内容。