【发布时间】:2014-11-24 09:56:10
【问题描述】:
我在 ubuntu 服务器 14.04 上安装了 ELK。现在我想将我所有的 jboss 服务器日志发送到这里(使用 log4j)。
logstash 配置: 输入配置文件:
input {
log4j {
type => "log4j"
port => 5000
}
}
过滤配置文件:
filter {
if [type] == "log4j" {
grok {
match => {"message" => MY_GROK_PARSE}
}
}
}
和输出文件:
output {
elasticsearch {
embedded => true
}
}
并完成 log4j appender:
<appender name="LOGSTASH" class="org.apache.log4j.net.SocketAppender">
<param name="Port" value="5000"/>
<param name="RemoteHost" value="XXX.XXX.XXX.XXX"/> <!-- There is a real adress here ;-) -->
<param name="ReconnectionDelay" value="50000"/>
<param name="LocationInfo" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n" />
</layout>
</appender>
但是这种配置没有任何反应。所以我不知道我误解了什么。 我的其他附加程序(控制台和本地文件)工作正常。 elasticsearch 日志显示任何信息/活动。
编辑: 更多关于我的 jboss-log4j.xml:
<appender name="Async" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="FILE" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="LOGSTASH" />
</appender>
<root>
<priority value="INFO" />
<appender-ref ref="Async" />
</root>
【问题讨论】:
-
您是否确认 Logstash 确实收到了任何内容(您可以使用 TCP 流量嗅探器进行检查)?如果您将
elasticsearch输出替换为简单的stdout输出以减少活动部件的数量会怎样? -
我照你说的做了。因此,对于 TCP 流量,我在端口 5000 上使用了“嗅探”,但什么也没有显示……(使用嗅探可以吗?)我更改了输出,也没有任何反应。
-
好的,说明 Log4j 配置有问题。您如何在记录器配置中引用 LOGSTASH 附加程序?
-
是的,我在帖子中添加了 log4j xml 的一部分给你看。确定我已经关闭了防火墙。
标签: elasticsearch log4j logstash jboss-4.0.x