第13章 Red Hat Quay の下での Prometheus および Grafana のメトリクス

Red Hat Quay は、各インスタンスに Prometheus と Grafana に対応したエンドポイントをエクスポートし、簡単にモニタリングとアラートを行うことができます。

13.1. Prometheus エンドポイントの公開

13.1.1. スタンドアロン Red Hat Quay

podman run を使用して Quay コンテナーを起動する場合は、メトリクスポート 9091 を公開します。

$ sudo podman run -d --rm -p 80:8080 -p 443:8443  -p 9091:9091\
   --name=quay \
   -v $QUAY/config:/conf/stack:Z \
   -v $QUAY/storage:/datastorage:Z \
   registry.redhat.io/quay/quay-rhel8:v3.8.15

これでメトリクスが利用可能になります。

$ curl quay.example.com:9091/metrics

Quay のリポジトリーカウントを監視するための Prometheus および Grafana の設定は、Monitoring Quay with Prometheus and Grafana を参照してください。

13.1.2. Red Hat Quay Operator

quay-metrics サービスのクラスター IP を判別します。

$ oc get services -n quay-enterprise
NAME                                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                             AGE
example-registry-clair-app            ClusterIP   172.30.61.161    <none>        80/TCP,8089/TCP                     18h
example-registry-clair-postgres       ClusterIP   172.30.122.136   <none>        5432/TCP                            18h
example-registry-quay-app             ClusterIP   172.30.72.79     <none>        443/TCP,80/TCP,8081/TCP,55443/TCP   18h
example-registry-quay-config-editor   ClusterIP   172.30.185.61    <none>        80/TCP                              18h
example-registry-quay-database        ClusterIP   172.30.114.192   <none>        5432/TCP                            18h
example-registry-quay-metrics         ClusterIP   172.30.37.76     <none>        9091/TCP                            18h
example-registry-quay-redis           ClusterIP   172.30.157.248   <none>        6379/TCP                            18h

クラスターに接続し、quay-metrics サービスのクラスター IP およびポートを使用してメトリクスにアクセスします。

$ oc debug node/master-0

sh-4.4# curl 172.30.37.76:9091/metrics

# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 4.0447e-05
go_gc_duration_seconds{quantile="0.25"} 6.2203e-05
...

13.1.3. Prometheus がメトリクスを消費するための設定

Prometheus は、クラスター内で実行されているすべての Red Hat Quay インスタンスにアクセスする方法が必要です。典型的なセットアップでは、すべての Red Hat Quay インスタンスを単一の名前付き DNS エントリーにリストアップし、それを Prometheus に渡すことで行われます。

13.1.4. Kubernetes での DNS 設定

シンプルな Kubernetes service を設定して、Prometheus の DNS エントリーを提供することができます。

13.1.5. 手動クラスターの DNS 設定

SkyDNS は、Kubernetes を使用していない場合に、この DNS レコードを管理するためのシンプルなソリューションです。SkyDNS は、etcd クラスター上で動作させることができます。クラスター内の各 Red Hat Quay インスタンスのエントリーを etcd ストアに追加、削除することができます。SkyDNS はそこから定期的に読み込んで、それに応じて DNS レコードの Quay インスタンスのリストを更新します。