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