这对我来说似乎是一个明显的要求,所以我希望其他人可能已经解决了这个问题。 我有很多app&jboss日志很多错误。为了管理和解决这些问题,我想找出一种方法来跟踪它们。看了之后 How to retrieve unique count of a field using Kibana + Elastic Search 我想我可以使用类似的方法。 根据es docs,看起来facets已被替换,所以我认为我应该深入研究总和,但还不确定。 我仍然不确定进一步分解我的jboss日志记录的最佳方法。我最感兴趣的字段是消息字段,其中包含日期/时间戳,每个记录前面的主机名。解决这个问题的最佳方法是什么?进一步打破消息字段 - 忽略前2个元素然后排序&算下这个领域的下一部分?我可能还需要忽略此记录的某些结尾,但会处理下一个......
我对ELK堆栈很陌生,但对其可能性感到兴奋。 谢谢。 乔
答案 0 :(得分:0)
Logstash (E L K的一部分)提供了大量过滤选项。最有用的是Grok
。它最适合从{key,value}对中的长消息解析字段。
此外,您可以通过不同类型的插件删除/忽略Logstash中消息中的特定数据。您可以在http://logstash.net/docs/1.4.2/中进行探索。
在您发送这些数据Elastic后,您可以使用Kibana的强大功能根据您的要求创建仪表板。
因此,ELK完全符合您的要求。
答案 1 :(得分:0)
将JBOSS输出引入ELK的最佳和最简单的方法是通过套接字连接器。有很多教程,但它会自动为您提供免费的消息细分。
请参阅此示例:http://blog.akquinet.de/2015/08/24/logstash-jboss-eap/
请注意,我个人不得不更改appender并使用文档来获取正确的字段。如果您使用2.0 elasticsearch而不是更新配置。对于简单的调试简单输出到stdout。
一旦你的套接字appender正常工作,你就笑了,然后去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
配置Appender:
在个人资料中:
<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-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中部署/启动应用程序。你将获得logbash值/配对内的jboss输出和应用程序输出。