Я новичок в LogStash. У меня есть несколько журналов, написанных на Java-приложении в Log4J. Я пытаюсь получить эти журналы в 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 и последовательно получать следующие поля:
- Уровень журнала
- Отметка
- Сообщение журнала
- Имя машины
- Тема
Спасибо за любую помощь, которую вы можете предоставить. Даже если я могу только уровень журнала, отметка времени и сообщение журнала, это будет ОГРОМНАЯ помощь. Я искренне ценю это!