web-dev-qa-db-ja.com

ログドライバーを構成してDockerコンテナーログをELKスタックに送信する-簡単な方法

柔軟性と可用性が高いため、私は通常、アプリケーションをDockerコンテナーとして実行します。 logstashサーバーにコンテナーログを取得する方法はありますか?.

11
kisHoR

Dockerには、ロギングドライバーを使用して実行中のコンテナーとサービスから情報を取得するのに役立つ複数のロギングメカニズムが含まれています。

各Dockerデーモンにはデフォルトのロギングドライバーがあり、別のロギングドライバーを使用するように構成しない限り、各コンテナーが使用します。

次のようにLogstashを構成し、デフォルトのログドライバーをsyslogに変更してログを表示するコンテナーを実行するだけで、コンテナーログを取得できます。

#logstash.conf

input {
  tcp {
    port => 5000
  }
}

output {
  stdout {}
}

以下の2つのコマンドは、hello-worldコンテナーログをlogstashに表示します。

docker run -it --rm --name=logstash -p 5000:5000 -f /path/to/logstash.conf

docker run --log-driver=syslog --log-opt syslog-address=tcp://<logstash-system-ip>:5000 hello-world

Logstashの出力は、出力セクションを次のように構成するだけでelasticsearchに送信することもできます。

  elasticsearch {

    hosts => ["<elastic-system-ip>:9200"]

  }

訪問 https://docs.docker.com/engine/admin/logging/overview/

11
kisHoR