elasticsearch jboss和logstash并解析消息字段以获取计数
这对我来说似乎是一个明显的要求,所以我希望其他人可能已经解决了这个问题。 我有很多错误的jboss应用程序日志。为了管理和解决这些问题,我想找出一种跟踪它们的方法。看完 我想我可以用类似的方法。 根据es文档,它看起来已经被替换,所以我想我应该深入研究总和聚合,但还不确定。 我仍然不确定进一步分解jboss日志记录的最佳方法。我最感兴趣的字段是message字段,它在每条记录前面有日期/时间戳、主机名。解决这个问题的最佳方法是什么?进一步分解消息字段忽略前2个元素,然后对该字段的下一部分进行排序和计数?我可能也需要忽略这张唱片的一些结尾,但下一步我会处理这些 我对麋鹿栈很陌生,但对它的可能性很兴奋。 谢谢。 JoeELK的Logstash部分提供了许多过滤选项。最有用的是Grok。它最适合从{key,value}对中的长消息解析字段。 此外,您还可以通过不同类型的插件从Logstash中删除/忽略消息中的特殊数据 发送这些数据后,您可以使用Kibana的强大功能根据您的需求创建一个仪表板elasticsearch jboss和logstash并解析消息字段以获取计数,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana,这对我来说似乎是一个明显的要求,所以我希望其他人可能已经解决了这个问题。 我有很多错误的jboss应用程序日志。为了管理和解决这些问题,我想找出一种跟踪它们的方法。看完 我想我可以用类似的方法。 根据es文档,它看起来已经被替换,所以我想我应该深入研究总和聚合,但还不确定。 我仍然不确定进一步分解jboss日志记录的最佳方法。我最感兴趣的字段是message字段,它在每条记录前面有日期/时间戳、主机名。解决这个问题的最佳方法是什么?进一步分解消息字段忽略前2个元素,然后对该字段的下一部分进行排序
因此,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的问题,而不是只提供链接的答案。谢谢