LogStash를 처음 사용했습니다. Log4J의 Java 애플리케이션에서 작성된 일부 로그가 있습니다. 나는 그 로그를 ElasticSearch로 가져 오는 중입니다. 내 삶을 위해, 나는 그것이 일관되게 작동하도록 할 수 없습니다. 현재 다음과 같은 logstash 구성을 사용하고 있습니다.LogStart와 함께 Log4J 사용
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"] 항목에는 사용자 정의 필드가 없습니다. 이상한 부분은 로그가 위의 메시지 열에 표시된 것과 거의 동일하다는 것입니다. 이것은 나에게 정말로 혼란 스럽지만 문제가 무엇인지, 그 문제를 넘어서는 법을 이해하는 방법을 모르겠습니다.
- 로그 레벨 : 아무도 내가 logstash에 수입의 log4j 로그를 사용하고 지속적으로 다음 필드를 얻을 수있는 방법을 알고 있나요
제공 할 수있는 도움에 감사드립니다. 로그 수준, 타임 스탬프 및 로그 메시지만으로도 큰 도움이 될 것입니다. 진심으로 감사드립니다!
내가 볼 수없는 방법 grok 수 패턴 항상 일치합니다. 당신은 % {LOGLEVEL : level} 이전에 두 개의 공백이 있습니다. 공백을 가변적으로 처리해야한다면 공백 대신에 \ s +를 사용하여 하나 이상의 공백을 찾습니다. 그리고 grok 디버거의 +1은 – Alcanzar