3

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 を使用しても機能しません...何か間違っていますか? 何らかの理由でそのソケットへの書き込みを拒否しているようですが、何も文句はありません。

4

2 に答える 2

1

ログバックの起動ログについては、catalina.out を参照してください。また、ファイアウォールが配置されていないことを確認してください (または aws の場合はセキュリティ グループ)。

Tomcat / logback から logstach にログを送信するときにも、別のコーデックを使用します

    tcp {
      port => 4560
      codec => json_lines
      tags => ["app"]
    }

logback はいくつかの場所からログを消費するため、フィルターと出力セクションでこのタグを使用します。

于 2017-05-26T22:55:58.370 に答える