2017-04-11 6 views
1

현재 ELK 스택이 도커 (https://github.com/deviantony/docker-elk)에서 실행 중이며 log4j SocketAppender를 사용하여 로그를 보내려는 독립형 Java 응용 프로그램이 있습니다. Kibana에서 로그를 볼 때 메시지가 잘못 인코딩 된 것 같습니다. 나는 ELK 스택에 대해 매우 익숙하며 여기에서 발견 한 많은 다른 솔루션을 시도했지만 아무 것도 시도하지 않는 것으로 보인다. 모든 도움을 미리 감사드립니다.log4j 및 ELK 스택으로 잘못 인코딩 된 로그 메시지

logstash.conf :

input { 
    log4j { 
     mode => "server" 
     host => "0.0.0.0" 
     port => 5000 
     type => "log4j" 
     } 
} 

## Add your filters/logstash plugins configuration here 

filter { 
    # All lines that does not start with %{TIMESTAMP} or ' ' + %{TIMESTAMP} belong to the previous event 
    multiline { 
     pattern => "(([\s]+)20[0-9]{2}-)|20[0-9]{2}-" 
     negate => true 
     what => "previous" 
    } 
} 

output { 
    elasticsearch { 
     hosts => "elasticsearch:9200" 
    } 
} 

log4j.properties :

log4j.rootLogger=info,tcp 

log4j.appender.tcp=org.apache.log4j.net.SocketAppender 
log4j.appender.tcp.Port=5000 
log4j.appender.tcp.RemoteHost=localhost 
log4j.appender.tcp.ReconnectionDelay=10000 
log4j.appender.tcp.Application=hello-world 
log4j.appender.myappender.encoding=UTF-8 

로그 키바 : enter image description here

답변

1

이이 위에 것에 관련이 밝혀 위 환경. 리눅스 환경에서 실행하면 인코딩 문제가 해결되었습니다. 창에있는 동안 인코딩 문제를 해결할 수있는 방법이 있다면 나는 ... 잘 모르겠어요

나를 위해 일한 TCP에 대한 여러 지원을위한 적절한 logstash의 설정 :

input { 
    log4j { 
     mode => "server" 
     host => "0.0.0.0" 
     port => 5000 
     type => "log4j" 
     codec => multiline { 
      pattern => "^\s" 
      what => "previous" 
     } 
     } 
} 

## Add your filters/logstash plugins configuration here 

output { 
    elasticsearch { 
     hosts => "elasticsearch:9200" 
    } 
}