2017-06-12 4 views
0

コンテキスト:Tomcat、Log4j 2バージョン2.5で動作するJava Webアプリケーション。ログは、Raven connectorと1つのELK(ElasticSearch + Logstash + Kibana)インスタンスを使用して、1つのSentryインスタンスに移動するように設定されています。Log4jの回路ブレーカ2

設定が(匿名化)次のようになります。

<configuration> 
    <appenders> 
    <Raven name="Sentry"> 
     <dsn>https://[email protected]/1</dsn> 
    </Raven> 
    <Socket name="Logstash" host="1.2.3.4" port="1234"> 
     <SerializedLayout /> 
    </Socket> 
    </appenders> 
    <loggers> 
    <root level="info"> 
     <appender-ref ref="Sentry" level="warn" /> 
     <appender-ref ref="Logstash" /> 
    </root> 
    </loggers> 
</configuration> 

問題であることを歩哨やELKは演技開始した場合(長い応答時間を、到達不能、...)、アプリケーション・スレッドがログインしようとしてブロックされますと、アプリケーションは効果的に消滅します。

この問題の解決法はありますか?何らかの種類の回路ブレーカが理想的です。遠隔ロギング先の問題を検出した後、Log4j 2はしばらくアペンダーを無効にします。

<Async/> appenderでラップされた別のアペンダーを使用していますが、これはロギングを行う良い解決策であると理解しています...非同期ですが、応答しないログの宛先の問題を修正しません。

+0

Sentryアペンダ自体がデフォルトでは完全に非同期であるため、ロガーをバックアップしないでください。 – Brett

+0

@Brettあなたは、あなたが意味するSentryアペンダーを明確にしていただけますか?私はまだ古いRavenアペンダを使用しています。私は、ここで述べたhttps://docs.sentry.io/clients/java/ – vektor

+0

のレガシー 'raven-java'クライアントでもSentryにアップグレードする必要があることを知っています。非常に長い時間非同期接続。 Sentryの遅れがあなたの伐採を遅らせているという証拠はありますか?彼らは間違いなくすべきです - それはバグでしょう。何か情報がある場合はGithubで問題を作りましょう。ありがとう! – Brett

答えて

1

私たちのシステムでは、log4jと他のシステムによってすべてのログを収集し、それらをlogstash/splunkなどに転送するlogs-forwarderという特別なコンポーネントがあります。それは1つの有効なオプションです。

関連する問題