Dockerは,Dockerコンテナ内で動作するアプリケーションが生成するログを管理するソフトウェアとプラットフォームを,エコシステム・テクノロジ・パートナ(ETP)として発表した。ETPログのパートナになるということは,そのソフトウェアないしプラットフォームがDocker上で,ロギングドライバ機構を使ってログ情報の提供を確実に行なっていると認められたことでもある。
すでにDockerはバージョン1.9.0で,syslog(Linuxの標準的なログ収集システム)やGELF(GraylogとLogstashがサポートするGraylog拡張ログフォーマット),Fluentd,AWS CloudWatchログなど,さまざまな外部ログシステムをサポートしている。Graylog,Logstash,Fluentdはオープンソースのログ管理ツールである。ETPプログラムは,さまざまなログプロバイダを共通フレームワークの下で統一しようとする試みだ。Dockerで事業開発と技術提携を担当する副社長のNick Sinemates氏は次のように説明する。
Dockerの“ETP(Ecosystem Technology Partner)プログラム”は,Dockerエンジンとの高品質な統合を実証したパートナを,Dockerエコシステムに広く紹介するためのものです。モニタリングやロギングといった技術分野からネットワークに至るまで,Dockerエコシステムのさまざまな面から推奨ソリューションを求めるユーザの声に応えるために,私たちはこのプログラムを開発しました。
Dokkerのロギングは,コンテナの標準出力(stdout)と標準エラー出力(stderr)をリダイレクトできるように,コンテナ起動時にログドライバを指定することで動作する。これはsyslogなどの標準的なログ機構でも,Sumo LogicやLogEntriesといったログ収集システムでも用いられている方法だ。ただし,標準出力と標準エラー出力に加えて,コンテナ内で動作するアプリケーションがsyslogや,あるいは/var/log内のカスタムログファイルに独自のログを記録している場合もある。後者の場合,ログドライバで直接ログファイルを扱うことは不可能だ。
ログドライバのアイデアは,もともとはdocker-devメーリングリストのスレッドから生まれたもので,後にGithub issueとして正式に登録された。以降のリリースでさまざまなログドライバのサポートが追加され,Docker 1.9.0ではAWS CloudWatchのサポートが提供されるようになった。
実際のデプロイメントにおいては,コンテナのパフォーマンスやライフサイクルにも注目する必要があるはずだ。この点についてStinemates氏は,次のように述べている。
Docker Engine APIはパフォーマンス指標やライフサイクルイベント,ログデータを公開しています。ベンダが実装を行なう上では,これが共通基盤になります。ログドライバはDocker Engine APIを拡張することによって,これまで唯一の選択肢であったDockerログストリーム以外の,独自のログ処理を実行可能にします。
最近のアプリケーションでは大量のログデータが生成されることも珍しくないが,コンテナのパフォーマンスに悪影響はないだろうか? この疑問にStinemates氏は,“パフォーマンスはログドライバ自体に関連しているので,問題ではありません。ログドライバはモジュールですから,ユーザが自らの環境やパフォーマンス要件に沿った動作をするドライバを選択できます”,と答えている。
ツールやベンダが新たにETPプログラムに参加する方法について,Stinemates氏は次のように説明している。
ETPイニシアティブに参加するパートナは,Technology Partnershipプログラムに登録する必要があります。パートナは既存サービスのAPIへの統合や,プラットフォームをベースとした,あるいはプラットフォームにサービスするプロダクト開発など,Dockerエコシステムに対して何らかの大きなインパクトを与えるように求められます。パートナの実装は,Dockerのポータビリティを損なうものであってはなりません。また,インフラストラクチャにおける中枢としてのDockerを促進すると同時に,その存在を包み隠したり省略したりすることなく,明確に示すものでなくてはなりません。
ETPログ管理パートナの全リストには,Amazon Web Services CloudWatch, Elastic/Logstash, Graylog, Rapid7/Logentries, Loggly, Papertrail, Sematext Logsene, Sumo Logic, Treasure Data/Fluentdなどが名を連ねる。ツールの一部は,標準的なログ収集以外の付加機能も備えている。