elasticsearch 使用logstash和kibana分析日志文件的延迟,elasticsearch,logstash,kibana,logstash-grok,elasticsearch,Logstash,Kibana,Logstash Grok" /> elasticsearch 使用logstash和kibana分析日志文件的延迟,elasticsearch,logstash,kibana,logstash-grok,elasticsearch,Logstash,Kibana,Logstash Grok" />

elasticsearch 使用logstash和kibana分析日志文件的延迟

elasticsearch 使用logstash和kibana分析日志文件的延迟,elasticsearch,logstash,kibana,logstash-grok,elasticsearch,Logstash,Kibana,Logstash Grok,我是ELK堆栈的新手,希望用它来调试日志文件中的问题。我的要求是绘制线程处理任务并返回池所需的时间。基本上,日志如下所示: 2014-10-31 13:00:00007[catalina-exec-11]调试[com.clairmail.jms.concurrent.poolimpl.jmsproducerpolimpl]为catalina-exec-11提供池生产者 。。。。。及 2014-10-31 13:00:00121[catalina-exec-11]调试[com.clairmail.

我是ELK堆栈的新手,希望用它来调试日志文件中的问题。我的要求是绘制线程处理任务并返回池所需的时间。基本上,日志如下所示:

2014-10-31 13:00:00007[catalina-exec-11]调试[com.clairmail.jms.concurrent.poolimpl.jmsproducerpolimpl]为catalina-exec-11提供池生产者

。。。。。及

2014-10-31 13:00:00121[catalina-exec-11]调试[com.clairmail.jms.concurrent.poolimpl.jmsproducerpolimpl]catalina-exec-11已将生产者返回池。

从上面的日志中,我可以看出这个特定的线程catalina-exec-11需要大约107毫秒才能完成。我的问题如下:

  • 如何在Kibana的图形上表示这一点
  • 我们有一个分布式体系结构,所以在第二个实例中很可能会有一个catalina-exec-11,如何将其与第一个实例区分开来
  • 对两台服务器进行聚合,以查看处理线程的平均时间
  • 我的grok过滤器会是什么样子

  • Anoop

    假设您可以更改日志的格式,以下提示可能对您有用:

  • 据我所知,在Kibana3.1(当前稳定版本)中,无法从两个不同的弹性搜索文档计算操作的延迟。也许在基巴纳4号这是可能的。如果您的日志条目包含操作经过的时间,那么您尝试执行的操作将是微不足道的。例如:

    2014-10-31 13:00:00007 0[catalina-exec-11]调试[com.clairmail.jms.concurrent.poolimpl.jmsproducerpolimpl]为catalina-exec-11提供池生产者

    2014-10-31 13:00:00121 114[catalina-exec-11]调试[com.clairmail.jms.concurrent.poolimpl.jmsproducerpolimpl]catalina-exec-11已将生产者返回池

  • 请注意,我在日期之后添加了一个新的日志字段。 然后,您可以绘制一个kibana柱状图来显示延迟字段的平均值

  • 因此,您有一个具有不同机器的分布式体系结构,可能还有命名线程。您需要的是一个全局唯一的请求上下文id。有很多方法可以实现这一点:Guid,或者一些类似于twitter的Int64数字唯一id。使用这样的id,您的日志将如下所示:

    5892EAC3-EE95-4549-A787-CCE5A6639598 2014-10-31 13:00:00007 0[catalina-exec-11]调试[com.clairmail.jms.concurrent.poolimpl.jmsproducerpolimpl]向catalina-exec-11提供池生产者

    5892EAC3-EE95-4549-A787-CCE5A6639598 2014-10-31 13:00:00121 114[catalina-exec-11]调试[com.clairmail.jms.concurrent.poolimpl.jmsproducerpolimpl]catalina-exec-11已将生产者返回池

  • 请注意,我在每个日志条目的开头添加了一个新的guid字段

  • 这很容易通过logstash实现。如果将logstash配置为从不同的机器读取日志文件,则文件输入将向logstash事件添加一个新的“主机”字段,您可以将该字段发送到elasticsearch。然后在kibana仪表板中,您可以轻松地显示请求是如何在不同的机器之间分布的

  • 您的grok过滤器可以如下所示: 格罗克 { match=>[“message”,“%{UUID:requestid}%{SPACE}%{TIMESTAMP_ISO8601:TIMESTAMP}%{SPACE}%{NUMBER:ellapsedmillesons}%{SPACE}[{WORD:threadname}]%{SPACE}%{WORD level}%{SPACE}[%{WORD logger}]%{SPACE SPACE}%{WORD logmessage}] }

  • 这只是一个示例,您必须根据自己的需要对其进行微调


    希望能有帮助。

    谢谢你,罗曼,这真的很有帮助。我希望Kibana4支持时间流逝计算。