ELK スタック (Elasticsearch、Logstash、Kibana) を使用して集中ログ サーバーを実装しようとしています。多くのアプリケーションからログを受け取ります。基本的に、次の構成で logback を使用する Tomcat アプリケーションがあります。
<appender name="ROLLING"
class="ch.qos.logback.core.rolling.RollingFileAppender">
[...]
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<remoteHost>my_remote_host</remoteHost>
<port>5000</port>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="DEBUG">
<appender-ref ref="ROLLING" />
<appender-ref ref="STDOUT" />
<appender-ref ref="stash" />
</root>
したがって、理論的には、これはログバックログのすべてをTCP経由で送信する必要があります... my_remote_hostにelasticsearch、logstash、およびkibanaをデプロイしました。そして、それらはすべて機能しているようです。これは、logstash の構成です。
input {
stdin {
type => "human"
}
tcp {
port => 5000
codec => "json"
mode => "server"
}
}
output {
stdout {}
elasticsearch {
host => "my_remote_host"
}
}
logstash インスタンスの stdin に何かを入力すると、入力のインデックスが正常に作成されます。また、http で my_remote_host:5000 にリクエストを送信すると、受信したデータが正常にログに記録されます。
問題は、logback が LogstashTcpSocketAppender を使用してデータを送信していないように見えることです。単純な SocketAppender を使用しても機能しません...何か間違っていますか? 何らかの理由でそのソケットへの書き込みを拒否しているようですが、何も文句はありません。