elasticsearch jboss和logstash并解析消息字段以获取计数,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" /> elasticsearch jboss和logstash并解析消息字段以获取计数,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" />

elasticsearch jboss和logstash并解析消息字段以获取计数

elasticsearch jboss和logstash并解析消息字段以获取计数,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana,这对我来说似乎是一个明显的要求,所以我希望其他人可能已经解决了这个问题。 我有很多错误的jboss应用程序日志。为了管理和解决这些问题,我想找出一种跟踪它们的方法。看完 我想我可以用类似的方法。 根据es文档,它看起来已经被替换,所以我想我应该深入研究总和聚合,但还不确定。 我仍然不确定进一步分解jboss日志记录的最佳方法。我最感兴趣的字段是message字段,它在每条记录前面有日期/时间戳、主机名。解决这个问题的最佳方法是什么?进一步分解消息字段忽略前2个元素,然后对该字段的下一部分进行排序

这对我来说似乎是一个明显的要求,所以我希望其他人可能已经解决了这个问题。 我有很多错误的jboss应用程序日志。为了管理和解决这些问题,我想找出一种跟踪它们的方法。看完 我想我可以用类似的方法。 根据es文档,它看起来已经被替换,所以我想我应该深入研究总和聚合,但还不确定。 我仍然不确定进一步分解jboss日志记录的最佳方法。我最感兴趣的字段是message字段,它在每条记录前面有日期/时间戳、主机名。解决这个问题的最佳方法是什么?进一步分解消息字段忽略前2个元素,然后对该字段的下一部分进行排序和计数?我可能也需要忽略这张唱片的一些结尾,但下一步我会处理这些

我对麋鹿栈很陌生,但对它的可能性很兴奋。 谢谢。 Joe

ELK的Logstash部分提供了许多过滤选项。最有用的是Grok。它最适合从{key,value}对中的长消息解析字段。 此外,您还可以通过不同类型的插件从Logstash中删除/忽略消息中的特殊数据

发送这些数据后,您可以使用Kibana的强大功能根据您的需求创建一个仪表板


因此,ELK非常适合您的需求。

将JBOSS输出输入ELK的最佳且最简单的方法是通过插座连接器。有很多教程,但它会自动给你免费的信息分类

请参见以下示例:

请注意,就我个人而言,我不得不更改appender并使用文档来获得正确的字段。如果使用2.0 elasticsearch,则更新配置。对于简单调试,将简单输出到标准输出

一旦套接字附加器正常工作,您就可以笑着去kibanan,用您想要的任何聚合配置仪表板。我不建议进一步分解它,因为这样您就有了一个自定义的消息分解,它将不适用于jboss实现,请随意添加附加值/对,例如appname。。等等

样本: *jboss-eap-6.4.0.0 *elasticsearch-2.0.0-beta2 *kibana-4.2.0-beta2-windows *logstash-2.0.0-beta1

在logstash/conf dir下创建一个名为log4j.conf的文件,即C:_apps\logstash-2.0.0-beta1\conf\log4j.conf,包含以下内容

input {
  log4j {
    mode => "server"
    host => "0.0.0.0"
    port => 4712
    type => "log4j"
  }
}

output {
    elasticsearch {
    hosts => "127.0.0.1"
    #cluster => "myAppName"
    index => "logstash-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
}
在dir中使用以下命令提示符运行Logstash: bin\logstash.bat-f conf\log4j.conf

配置附加器:

JBossAppender 在配置文件中:

<custom-handler name="Remotelog4j" class="org.apache.log4j.net.SocketAppender" module="org.apache.log4j">
            <level name="INFO"/>
            <properties>
                <property name="RemoteHost" value="localhost"/>
                <property name="Port" value="4712"/>
                <!--property name="BufferSize" value="1000"/-->
                <!--property name="Blocking" value="false"/-->
            </properties>
        </custom-handler>
在根loggger配置中定义处理程序:

<root-logger>
    <level name="INFO"/>
    <handlers>
        <handler name="CONSOLE"/>
        <handler name="FILE"/>
        <handler name="Remotelog4j"/>
    </handlers>
</root-logger>
启动JBOSS,请注意,您的命令提示符正在打印来自独立JBOSS实例的所有传入消息

使用旧的Log4J配置另一个应用程序 Log4J版本Log4J-1.2.15.jar

在打包的WAR中,我创建了这个简单的附加log4j appender:

<appender name="log4jSocket" class="org.apache.log4j.net.SocketAppender" module="org.apache.log4j">
 <level name="ERROR"/>
 <param name="RemoteHost" value="localhost"/>
 <param name="Port" value="4712"/>
 <param name="threshold" value="ERROR" />
</appender>  
同样,将appender添加到应用程序log4j记录器中

  <logger name="com.somepackage" additivity="false">
        <level value="error"/>
        <appender-ref ref="default"/>
        <appender-ref ref="event"/>
        <appender-ref ref="log4jSocket"/>
  </logger>

现在重新启动jboss配置,并在jboss中部署/启动应用程序。您将在logstash value/paired中获得jboss输出和应用程序输出。

请添加您提供的链接中的相关代码,以及它如何解决OP的问题,而不是只提供链接的答案。谢谢