我是LogStash的新手。我在Log4J中有一些从Java应用程序编写的日志。我正在尝试将这些日志放入ElasticSearch。对于我的生活,我似乎无法让它始终如一地运作。目前,我正在使用以下logstash配置:
input {
file {
type => "log4j"
path => "/home/ubuntu/logs/application.log"
}
}
filter {
grok {
type => "log4j"
add_tag => [ "ApplicationName" ]
match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level}" ]
}
}
output {
elasticsearch {
protocol => "http"
codec => "plain"
host => "[myIpAddress]"
port => "[myPort]"
}
}
这种配置似乎很受欢迎。我不知道为什么。例如,我有两条消息。一个工作,另一个抛出解析失败。然而,我不确定为什么。以下是消息及其各自的结果:
Tags Message
------ -------
["_grokparsefailure"] 2014-04-04 20:14:11,613 TRACE c.g.w.MyJavaClass [pool-2-
thread-6] message was null from https://domain.com/id-1/env-
MethodName
["ApplicationName"] 2014-04-04 20:14:11,960 TRACE c.g.w.MyJavaClass [pool-2-
thread-4] message was null from https://domain.com/id-1/stable-
MethodName
包含[“ApplicationName”]的人的自定义字段为timestamp
和level
。但是,带有[“_grokparsefailure”]的条目没有我的自定义字段。奇怪的是,日志几乎相同,如上面的消息栏中所示。这真让我感到困惑,但是,我不知道如何弄清楚问题是什么或如何超越它。有谁知道如何将log4j日志导入logstash并一致地获取以下字段:
感谢您提供的任何帮助。即使我可以只记录日志级别,时间戳和日志消息,这将是一个巨大的帮助。我真诚地感激它!
答案 0 :(得分:23)
我建议对logstash和log4j套接字appender使用log4j套接字监听器。
Logstash conf:
input {
log4j {
mode => server
host => "0.0.0.0"
port => [logstash_port]
type => "log4j"
}
}
output {
elasticsearch {
protocol => "http"
host => "[myIpAddress]"
port => "[myPort]"
}
}
log4j.properties:
log4j.rootLogger=[myAppender]
log4j.appender.[myAppender]=org.apache.log4j.net.SocketAppender
log4j.appender.[myAppender].port=[log4j_port]
log4j.appender.[myAppender].remoteHost=[logstash_host]
logstash文档中有关于log4j输入的更多信息:http://logstash.net/docs/1.4.2/inputs/log4j
答案 1 :(得分:1)
On my blog我描述了如何将JSON消息发送到ElasticSearch,然后使用GROK解析它。 Click to see blog post with description and Java example 在帖子中你可以找到描述,但也可以使用示例(github上的完整项目)找到简单的maven项目。
希望它对你有所帮助。
答案 2 :(得分:1)
由于某些安全问题,似乎不推荐使用之前使用的SocketAppender解决方案。 当前推荐的解决方案是使用log4j fileAppender,然后将文件通过filebeat插件传递到logstash,然后进行过滤。 有关更多信息,您可以参考以下链接:
https://www.elastic.co/blog/log4j-input-logstash
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html