ブログ

PrometheusメトリクスでHarborレジストリを監視する方法

Google Cloudとコンテナの継続的なセキュリティ

本文の内容は、2020年8月20日にJorge Salamero Sanzが投稿したブログ(https://sysdig.com/blog/monitor-harbor-registry/)を元に日本語に翻訳・再構成した内容となっております。

今回のブログ記事では、Prometheusのメトリクスを使ってHarborコンテナレジストリを監視する方法を説明します。

Harborはオープンソースのコンテナレジストリで、元々はVMwareが開発し、現在はCNCFの傘下に入っています。一般的にはDockerHub、Quay、ECR、GCR、ACRなどのホスト型コンテナレジストリを使用している方が多いと思いますが、セルフホスト型のレジストリが必要な場合には、Harborは最適な選択肢です。HarborはRBAC、レプリケーション、イメージスキャンなどの優れた機能を提供します。

しかし、セルフホスティングということは、このサービスが稼働しているかどうかを確認し、可用性、健全性、リソースの使用状況を監視しながら、サービスを維持する責任があるということを意味します。これはコンテナイメージのリポジトリなので、ディスクの使用量も注意しなければならない点の一つです。HarborはPostgreSQL、Redis、そしてオプションでNotaryなどのサービスに依存しています。これらのサービスの詳細については、Harborアーキテクチャの概要を参照してください。もっと深く知りたいのであれば、これらの外部サービスも監視する必要がありますが、ここではHarbor自体に焦点を当ててみましょう。Harborを監視する方法を学ぶ準備はできましたか?それでは早速見ていきましょう。

20200907-01.png

HarborからPrometheuのメトリクスをスクレイピング

HarborはPrometheusのメトリクスをネイティブには公開していません(#4557という問題はありますが)。しかし、幸いなことに、Max Cai氏がHarbor APIに問い合わせて有用なメトリクスを生成するPrometheusエクスポーターを書いてくれました。

Maxは、このエクスポーターをKubernetesクラスタに直接デプロイするためのYAMLを提供してくれているので、ユーザーにとっては超簡単です。このファイルでは、Harbor APIを見つけることができるサービスと、資格情報を持っている場所を修正します。ServiceMonitorのCRDを使用していないので、PrometheusやSysdigエージェントがデプロイメントをスクレイプしてメトリクスを収集できるように、デプロイメントにアノテーションを付けます。

デフォルトのネームスペース内にHelmチャートを使用してHarborをインストールしました

$ helm install harbor harbor/harbor

ファイルはこのようになっています。

[...]
spec:
[...]
  template:
    metadata:
      annotations:
        prometheus.io/port: "9107"
        prometheus.io/scrape: "true"
[...]
          env:
[...]
            - name: HARBOR_URI
              value: harbor-harbor-core
[...]
            - name: HARBOR_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: harbor-harbor-core
                  key: HARBOR_ADMIN_PASSWORD

準備ができたら、kubectl applyを行う必要があります。

$ kubectl apply -f harbor-exporter.yaml

まだHarborをインストールしたことがない方は、Docking Container Images Alongside Harbor In Minikubeをチェックすることをお勧めします。

Harbor監視ダッシュボード

SysdigはHarborインスタンスを監視するために、すぐに使えるHarborダッシュボードを提供しています。

当社のHarborダッシュボードは、Prometheusの統合カタログ:Promcatにも掲載されています。PromcatはSysdigのダッシュボードとGrafanaの両方に対応しています(お好みであれば、Sysdig Prometheus APIに対してGrafanaを使用することもできます)。

それぞれのメトリクスが何であるか、どのように使用するのかを理解するのは少し難しいですが、ダッシュボードに含まれているHarbor exporterで公開されている各メトリクスを見てみましょう:

20200907-02.png

Harborモニタリングメトリクス

Harborの健全性

すべてのコンポーネントが稼働していることを確認することが最初のステップです。エクスポーターには、HarborコンポーネントがすべてOKであることを確認するためのメトリクス、harbor_upが用意されています。ダッシュボードのHarborサービスパネルにこのメトリクスが表示されていることに加えて、必ずアラートを作成してください。

20200907-03.png

Harborストレージの利用状況

ストレージ容量の使用量は、おそらくHarborを監視する際に2番目に重要なメトリクスです。おそらくHarborのダッシュボードで、レジストリ内のコンテナイメージやチャートのストレージ使用量をアラートで確認したいと思います。エクスポーターはこのためのメトリクスを提供しています: harbor_system_volumes_bytesですが、これを使用できるかどうかは、HarborコアサービスがKubernetesボリュームをマウントできるかどうかに依存します(#441参照)。

このように、保存するパスに応じて、ストレージ用のパネルとアラートを追加することを強くお勧めします。

20200907-04.png

Harborプロジェクト、クォータ、リポジトリ

Harborレジストリにはプロジェクトがあり、各プロジェクトの中には複数のリポジトリを持つことができます。各プロジェクトは、アーティファクト、イメージ、チャートの最大数のリポジトリとストレージのクォータを設定することができます。各リポジトリで設定したパラメータを監視するだけでなく、プル、スター、タグを監視することもできます。

  • harbor_project_count_total: プロジェクトの数
  • harbor_repo_count_total: アーティファクト リポジトリの数 (このダッシュボードでは使用しません)
  • harbor_quotas_count_total: プロジェクトごとの現在のアーティファクト リポジトリ数とリミット
  • harbor_quotas_size_bytes: プロジェクトごとのストレージ使用量と容量のクォータ
  • harbor_repositories_pull_total: リポジトリごとの総プル数
  • harbor_repositories_star_total: リポジトリごとのスターの数
  • harbor_repositories_tags_total: リポジトリごとのタグの数

Harborのレプリケーション

Harborは、他の異なるレジストリから、または他のレジストリにリポジトリを複製することができます。このレプリケーションを監視するには

  • harbor_replication_status: レプリケーションポリシーを最後に実行したときのステータス
  • harbor_replication_tasks: レプリケーションポリシーごとの結果別(成功、進行中、停止、失敗)のレプリケーションタスク数

Kubernetesのインフラ監視

Sysdig Secure DevOps Platformを使用することで、DevOpsチームは、オープンソースツール上に構築された1つのプラットフォームを使用して、企業が求める拡張性と使いやすさを備えたコンテナとKubernetes環境の安全性を確保し、監視することができます。

Sysdig Monitor Prometheusのモニタリング機能により、Prometheusのメトリクスを収集し、PromQLを使用してクエリーを実行することができます。これにより、DevOpsチームは、広範なオープンソースのPrometheusエコシステムを活用し、Sysdigが提供する信頼性、Prometheusのスケール、サポートを得ながら、監視投資のリスクを軽減することができます。

Sysdigをまだお試しになっていませんか?今すぐ無料トライアルに登録してください

関連コンテンツ

Sysdigに関するお問い合わせはこちらから

最近の投稿

カテゴリー

アーカイブ

ご質問・お問い合わせはこちら

top