我在Ubuntu 14.04上安裝了ELK。現在我想發送給我所有的jboss服務器日誌(使用log4j)。配置ELK + log4j
logstash配置: 輸入CONF文件:
input {
log4j {
type => "log4j"
port => 5000
}
}
濾波器CONF文件:
filter {
if [type] == "log4j" {
grok {
match => {"message" => MY_GROK_PARSE}
}
}
}
和輸出文件:
output {
elasticsearch {
embedded => true
}
}
並完成log4j的附加器:
<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>
但什麼也沒發生此配置。所以我不知道我誤解了什麼。 我的其他appender(控制檯和本地文件)工作正常。彈性搜索日誌顯示任何信息/活動。
編輯: 更多關於我的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流量嗅探器檢查)?如果用一個簡單的'stdout'輸出替換'elasticsearch'輸出來減少運動部件的數量呢? – 2014-11-24 11:58:35
我做了你所說的。所以對於我在端口5000上使用'sniffit'的TCP流量,這沒有任何顯示......(使用sniffit是否可以?) 我改變了輸出,沒有任何反應。 – Guinoutortue 2014-11-24 13:25:27
好的,這表明Log4j配置有問題。你如何在記錄器配置中引用LOGSTASH appender? – 2014-11-24 13:33:58