JFrog Log AnalyticsでDocker HubへのPullリクエストを監視する

 

 

ご存知ですか?Docker Hubは現在、無料の匿名アカウントとログイン済みアカウントの使用を制限しています。6時間以内に同一IPアドレスからのPull数が一定のしきい値(匿名アカウントは100、クレデンシャルアカウントは200)を超える場合、Docker Hubは帯域幅を制限します。Dockerイメージの取得は出来ても、速度がかなり遅くなります。

Docker Hubのポリシー変更については、以前のブログ記事をご覧ください。

DockerレジストリとしてDocker Hubを利用している組織では、この新しいポリシーが生産性に大きな打撃を与える可能性があります。しきい値はユーザーごとではなくIPごとに設定されているため、企業ごとにこうした制限がすぐに、しかも頻繁に発生する可能性があります。

これらの変更による影響をどこまで把握していますか?JFrog Log Analyticsの最新アップデートにより、JFrog ArtifactoryのユーザーであればDocker Hubの変更による影響を最小化することができます。

Docker registry analytics on Splunk

ArtifactoryでDocker HubからのPullをキャッシュする

Docker Hub用のリモートリポジトリを用意することで、ArtifactoryのユーザーはPullの頻度を減らすことが出来ます。このリポジトリはプロキシとしてDocker HubからPullされたすべてのDockerイメージをキャッシュするため、それ以降同じイメージに対するPullはアーティファクトのリポジトリ・マネージャーから行われます。

この方法ではDocker Hubからキャッシュするための最初のPullのみがDocker HubのPull制限にカウントされます。そのため、最も頻繁に使用するDockerイメージはビルド時には常にフルスピードで利用されます。また、一度キャッシュされたイメージはDocker Hubが利用できない場合でも常に利用できるようになります

Remote Docker registry in Artifactory

また、Artifactoryで独自のセキュアなプライベートDocker registryを管理することで、Docker Hubへの依存度をさらに減らすことができます。

Dockerリポジトリ分析

Artifactoryを搭載したJFrog DevOps Platformのセルフホスト型インストールでは、Fluentdデータによる収集を通じて統一されたJFrogログデータを利用できるようにしました。また、このデータを使って、SplunkElastic StackPrometheus/GrafanaDataDogなどの一般的な分析ツール用のダッシュボードにレンダリングするためのインテグレーションを提供しています。

自分に最適な分析ツールを通して、データ転送量、どのリポジトリが誰に利用されているか、誰がアクセスを拒否されているかなど、運用上の有益な統計情報を見ることができます。

JFrogはこのようなインテグレーションのアップデートにより、Docker Hubの使用状況を監視するのに役立つDocker統計情報を表示する新しいタブを提供しています。Splunk 用のJFrog Logsアプリではどのように表示されるかを見てみましょう。

Pullリクエストの傾向

以下は過去6時間のDocker Hubに対するPullリクエストの数とそれが増加傾向にあるか減少傾向にあるかを示しています。リモートリポジトリのキャッシュによってPullが行われたもの(たとえばキャッシュミス)はこのカウントに含まれていないため、Docker Hubのポリシー制限にカウントされるPullリクエストのみが計測されています。

Docker Hub Pull Request Trend

Dockerリポジトリのキャッシュヒット率

DockerイメージのPullリクエストがキャッシュにより完了する頻度は比率で表され、値が1であればすべてのリクエストはキャッシュから返していることを意味します。例えば、以下の0.703という数値はキャッシュヒット率70.3%を意味します。つまり、キャッシュミスは合計269件(29.7%)であり、628件のPullリクエストがArtifactoryによりフルスピードで処理されたことになります。

Docker Cache Hit Ratio

Docker Hub Pullリクエスト

次のグラフは6時間以内のDocker HubへのPullリクエストのカウントを示しています。各バーにはその時間から過去6時間以内に行われたPullリクエストの総数が表示されています。

Docker Hub pull requests

この統計は組織がDocker Hubのポリシー制限に近づいているか、あるいは超えているか、そしてピーク時にどのような状態になっているのかを確認することができます。

トップ10ユーザーとIPアドレス

これらの統計から、Dockerリポジトリを独占的に使っているユーザーが誰なのかがユーザー別、IPアドレス別に明らかになります。Pullリクエストが超過していることがわかれば、この情報をもとに原因となるユーザーを特定することができます。

Docker registry pulls top 10 users

Docker registry pulls top 10 users

はじめよう

ご紹介したデータ収集と分析ツールはGitHubリポジトリ「JFrog log analytics integration」で公開しています。

まずは、JFrog Platformの各製品のインスタンスにインストールできるオープンソースのデータコレクターFluentdとの統合から始めましょう。FluentdはJFrog Platformの各製品に対してログ入力、フィールド抽出、レコード変換を実行し、出力データをJSON形式に正規化して、分析・BIダッシュボードに転送します。弊社がサポートしている複数の分析ツールの詳細については、以前のブログ記事でご紹介しています。

このソリューションを使用すると、Docker HubからのPullの回数と比率を管理し、新しいポリシーの制限のもとでの使いすぎを緩和することができます。Artifactoryがどのようにしてコンテナをコントロールしているのかをご理解された今、皆さんにはきっとご満足いただけるはずです.