ただ、これを実行する必要が他人を助けるために、あなたは、単にログを出荷するFilebeatを使用することができます。 @ brice-argensonでコンテナを使用しますが、SSLサポートが必要なため、ローカルにインストールされたFilebeatインスタンスを使用しました。
- input_type: log
paths:
- /var/lib/docker/containers/<guid>/*.log
document_type: docker_log
fields:
dockercontainer: container_name
それは、彼らが更新に変更する可能性があるので、あなたがGUIDを知っておく必要があるビットを吸う:
filebeatからプロスペクターは、(それ以上の容器の繰り返し)です。
logstashサーバーで
、セットアップlogstashための通常のfilebeat入力ソース、およびこのように、フィルタを使用します。これは、ドッカーログからJSONを解析し、報告されたものにタイムスタンプを設定します
filter {
if [type] == "docker_log" {
json {
source => "message"
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
mutate {
rename => { "log" => "message" }
}
date {
match => [ "time", "ISO8601" ]
}
}
}
ドッカーによって。あなたはnginxのドッカーイメージからログを読んでいるなら、あなたにもこのフィルタを追加することができます
:
filter {
if [fields][dockercontainer] == "nginx" {
grok {
match => { "message" => "(?m)%{IPORHOST:targethost} %{COMBINEDAPACHELOG}" }
}
mutate {
convert => { "[bytes]" => "integer" }
convert => { "[response]" => "integer" }
}
mutate {
rename => { "bytes" => "http_streamlen" }
rename => { "response" => "http_statuscode" }
}
}
}
変換/リネームはオプションですが、それはキャストしないCOMBINEDAPACHELOG
式の見落としを修正これらの値は整数になり、木場の集計に使用できなくなります。
私は古いlogstash-forwarderで同じことを試みました: ドッカーログ-f mycontainer | ./logstash-forwarder_linux_amd64 -config forwarder.conf それは動作します。私はFilebeatの不具合を疑う。 唯一の問題は、ロードバランシングのないログ・スタッシュへのランダムな接続が残っていることです。 – Gianluca
使用しているファイルビートのバージョンは?これは潜在的なバグのようです。問題をより深く理解するために、[ここ](https://github.com/elastic/filebeat/issues)の問題を自由に開いてください。参考:ドッカーの実装についてのいくつかの追加の議論は、ここにあります:https://github.com/elastic/libbeat/issues/37 – ruflin