2017-04-11 16 views
1

現在、ELKスタックをドッカー(https://github.com/deviantony/docker-elk)で実行しており、log4j SocketAppenderを使用してログをlogstashに送信しようとしているスタンドアロンのJavaアプリケーションがあります。木場のログを見ると、メッセージが正しくエンコードされていないように見えます。私は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 

ログKibana: enter image description here

答えて

1

が、これは上であることに関連していたが判明ウィ環境。 Linux環境からの実行は、エンコーディングの問題を解決しました。私は...私のために働いた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" 
    } 
} 
関連する問題