Serverless Kubernetes クラスター のメトリクスは、Managed Service for Prometheus が提供する定義済みのダッシュボードで表示できます。このトピックでは、Serverless Kubernetes クラスターに対して Managed Service for Prometheus を有効化する方法、Managed Service for Prometheus でアラートルールを構成する方法、Managed Service for Prometheus でカスタムメトリクスを作成する方法、および Grafana を使用してカスタムメトリクスを表示する方法について説明します。
Managed Service for Prometheus の概要
Managed Service for Prometheus は、オープンソースの Prometheus エコシステムと連携するフルマネージドのモニタリングサービスです。Managed Service for Prometheus は、幅広いコンポーネントを監視し、複数の定義済みダッシュボードを提供します。
クラスタータイプ | サポートされている Prometheus エージェント |
ACK Serverless Pro クラスター | マネージドまたはアンマネージド Prometheus エージェントをインストールできます。デフォルトでは、マネージド Prometheus エージェントがインストールされます。
|
ACK Serverless Basic クラスター | アンマネージド Prometheus エージェントのみをインストールできます。アンマネージド Prometheus エージェントがデプロイされているポッドには、3 CPU コアと 4 GB のメモリが必要です。収集されたデータのデフォルトの保存期間は 7 日間です。 |
Managed Service for Prometheus は、マネージド Prometheus 監視システムを提供します。これにより、データストレージ、データ表示、システムメンテナンスなどの基盤となるサービスを管理する手間が省けます。Managed Service for Prometheus の詳細については、「Managed Service for Prometheus とは」をご参照ください。
前提条件
ack-virtual-node コンポーネントは v2.11.5 以降である必要があります。
Prometheus エージェント を使用する ack-arms-prometheus コンポーネントは、ACK Virtual Node 上の Serverless ポッドを収集および監視するために v1.1.25 以降である必要があります。
手順 1:Managed Service for Prometheus を有効にする
クラスターの作成時に Managed Service for Prometheus を有効にする
[コンポーネント構成] ウィザードページで、[Managed Service For Prometheus を有効にする] を選択します。詳細については、「ACK Serverless クラスターを作成する」をご参照ください。

デフォルトでは、クラスターを作成するときに [Managed Service For Prometheus を有効にする] が選択されています。クラスターが作成されると、システムは自動的に Managed Service for Prometheus を構成します。
マネージド Prometheus エージェントは、クラスターに自動的にインストールされます。マネージドされていない Prometheus エージェントを使用する場合は、クラスター詳細ページに移動し、左側のナビゲーションウィンドウで [操作] > [アドオン] を選択します。[アドオン] ページで、ack-arms-prometheus をアンインストールします。その後、マネージドされていないバージョンの ack-arms-prometheus が表示され、インストールできるようになります。
[ack-arms-prometheus] が表示されない場合は、Serverless Kubernetes クラスター がデプロイされているリージョンで Managed Service for Prometheus がサポートされていないことを意味します。

既存のクラスターに対して Managed Service for Prometheus を有効にする
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のウィンドウで、 を選択します。
[Prometheus 監視] ページで、画面の指示に従って必要なコンポーネントをインストールし、関連するダッシュボードを確認します。
システムは自動的にコンポーネントをインストールし、ダッシュボードを確認します。インストールが完了したら、各タブをクリックしてメトリクスを表示します。
Managed Service for Prometheus が提供する Grafana ダッシュボードを表示する
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のウィンドウで、 を選択します。
[Prometheus 監視] ページで、各タブをクリックしてビジネス要件に基づいてダッシュボードを表示します。
Managed Service for Prometheus でアラートルールを構成する
Managed Service for Prometheus を使用すると、監視ジョブのアラートルールを作成できます。アラートルールの条件が満たされると、電子メール、ショートメッセージ、DingTalk 通知を介してリアルタイムでアラートを受信できます。これにより、エラーを事前に検出できます。アラートルールがトリガーされると、システムは指定された連絡先にアラート通知を送信します。
1. 通知オブジェクトを作成する
ARMS コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
画面の指示に従って通知オブジェクトを構成します。
詳細については、「通知オブジェクト」をご参照ください。
2. アラートルールを構成する
ARMS コンソール にログインします。 左側のナビゲーションウィンドウで、 を選択します。
表示されるページの上部で、クラスターがデプロイされているリージョンを選択します。クラスターで使用されている Prometheus インスタンスの名前をクリックして、インスタンスの詳細ページに移動します。
左側のナビゲーションウィンドウで、[アラートルール] をクリックします。[Prometheus アラートルール] ページで、通知オブジェクトのアラートルールを構成します。
詳細については、「Prometheus インスタンスのアラートルールを作成する」をご参照ください。
手順 4:カスタムメトリクスを作成し、Grafana を使用してメトリクスを表示する
アノテーションを追加してカスタムメトリクスを作成し、デフォルトのサービスディスカバリ機能を使用してメトリクスを収集できます。または、ServiceMonitors を使用してカスタムメトリクスを作成し、サービスラベルを使用してメトリクスを収集することもできます。
ポッドアノテーション
デプロイメントのテンプレートにアノテーションを追加して、カスタムメトリクスを定義できます。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、クラスターの名前をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。画面の指示に従ってワークロードを作成します。
次の例は、デプロイメントのパラメーターを構成する方法を示しています。詳細については、「イメージからステートレスアプリケーションを作成する」をご参照ください。
[コンテナー] ウィザードページで、コンテナーイメージと必要なリソースを指定し、Web アプリケーションを作成し、ポート 5000 を公開して、[次へ] をクリックします。
[詳細設定] ウィザードページで、サービスを作成し、ポッドアノテーションを追加します。次に、[作成] をクリックします。
サービスを作成します。
[サービス] セクションで、[作成] をクリックしてサービスを構成します。[サービスタイプ] を SLB に設定し、[ポートマッピング] を構成します。
[アノテーション] セクションで、次のアノテーションを追加します。
prometheus.io/scrapeアノテーションを追加し、値をtrueに設定します。これにより、Managed Service for Prometheus はメトリクスをスクレイピングできます。prometheus.io/portアノテーションを追加し、値を5000に設定します。これにより、エンドポイントポート5000が Managed Service for Prometheus によってスクレイピングされるように指定します。prometheus.io/pathアノテーションを追加し、値を/accessに設定します。これにより、エンドポイントパス/accessが Managed Service for Prometheus によってスクレイピングされるように指定します。
カスタムメトリクスを構成します。
ARMS コンソール にログインします。
左側のナビゲーションウィンドウで、[統合管理] をクリックします。
[統合環境] タブで、[Container Service] タブの環境リストを表示します。ACK 環境インスタンスを見つけて、[アクション] 列の [メトリクスのスクレイピング] をクリックします。[メトリクスのスクレイピング] タブが表示されます。
[メトリクスのスクレイピング] タブで、ServiceMonitor と PodMonitor の設定を追加して、Prometheus メトリック収集ルールを定義します。
詳細については、「ACK 環境のカスタム収集ルールを管理する」をご参照ください。
上記の手順を完了したら、[統合管理] ページの [自己監視] タブをクリックし、[ターゲット] をクリックして、カスタムメトリクスが構成されているかどうかを確認します。[エンドポイント] 列のハイパーリンクをクリックして、メトリック値を増やすことができます。
メトリクスの構成方法の詳細については、「DATA MODEL」をご参照ください。

カスタムメトリクスを表示します。
[統合管理] ページの [メトリクスエクスプローラー] タブで、表示するカスタムメトリクスを選択するか、PromQL ステートメントを指定してカスタムメトリクスを表示および検証できます。詳細については、「メトリクス探索」をご参照ください。
[統合管理] ページの [自己監視] タブで、[監視] をクリックして、Grafana ダッシュボードのカスタムメトリクスを表示します。
サービスラベル
ServiceMonitors を使用してカスタムメトリクスを作成するには、ポッドアノテーションを追加する代わりにサービスラベルを追加する必要があります。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、クラスターの名前をクリックします。クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。画面の指示に従ってワークロードを作成します。
次の例は、デプロイメントのパラメーターを構成する方法を示しています。詳細については、「イメージからステートレスアプリケーションを作成する」をご参照ください。
[コンテナー] ウィザードページで、コンテナーイメージと必要なリソースを指定し、Web アプリケーションを作成し、ポート 5000 を公開して、[次へ] をクリックします。
[詳細設定] ページで、[サービス] セクションの [作成] をクリックしてサービスを構成します。
[サービスタイプ] を SLB に設定し、[ポートマッピング] を構成します。サービスラベルを追加します。たとえば、ラベルキーを
appに設定し、ラベル値をcustom-metrics-pindexに設定します。このラベルは、ServiceMonitors によってセレクターとして使用されます。
カスタムメトリクスを構成します。Managed Service for Prometheus がスクレイピングするエンドポイントを使用します。
ARMS コンソール にログインします。
左側のナビゲーションウィンドウで、[統合管理] をクリックします。
[統合環境] タブで、[Container Service] タブの環境リストを表示します。ACK 環境インスタンスを見つけて、[アクション] 列の [メトリクスのスクレイピング] をクリックします。[メトリクスのスクレイピング] タブが表示されます。
[メトリクスのスクレイピング] タブで、[サービスモニター] をクリックし、[作成] をクリックします。画面の指示に従って ServiceMonitor を構成し、[作成] をクリックします。
カスタムメトリクスの構成方法の詳細については、「ACK サービスディスカバリ」をご参照ください。
[統合管理] ページの [自己監視] タブで、[ターゲット] をクリックして、Managed Service for Prometheus がスクレイピングするエンドポイントが表示されているかどうかを確認します。
説明アノテーションを追加してカスタムメトリクスを作成する方法と比較して、この方法では、サービスの名前空間と名前など、より多くの情報が提供されます。
メトリックを選択し、[エンドポイント] 列のハイパーリンクをクリックして、メトリック値を増やします。
メトリクスの構成方法の詳細については、「DATA MODEL」をご参照ください。


カスタムメトリクスを表示します。
[統合管理] ページの [メトリクスエクスプローラー] タブで、表示するカスタムメトリクスを選択するか、PromQL ステートメントを指定してカスタムメトリクスを表示および検証できます。詳細については、「メトリクス探索」をご参照ください。
[統合管理] ページの [自己監視] タブで、[監視] をクリックして、Grafana ダッシュボードのカスタムメトリクスを表示します。
FAQ
Ack-arms-prometheus コンポーネントのバージョンを確認するにはどうすればよいですか?
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ログと監視] タブをクリックし、[ack-arms-prometheus] コンポーネントを見つけます。
バージョン番号はコンポーネントの下部に表示されます。新しいバージョンが利用可能な場合は、右側にある [アップグレード] をクリックしてコンポーネントを更新します。
説明[アップグレード] ボタンは、コンポーネントが最新バージョンに更新されていない場合にのみ表示されます。
Managed Service For Prometheus が GPU アクセラレーションノードを監視できないのはなぜですか?
この問題は、アンマネージド Prometheus エージェントのみに関連しています。
Managed Service for Prometheus は、汚染が構成されている GPU アクセラレーションノードを監視できない場合があります。次の手順を実行して、GPU アクセラレーションノードの汚染を表示できます。
次のコマンドを実行して、GPU アクセラレーションノードの汚染を表示します。
GPU アクセラレーションノードにカスタムの汚染を追加した場合、カスタムの汚染に関する情報を表示できます。この例では、
keyがtest-keyに設定され、valueがtest-valueに設定され、effectがNoScheduleに設定されている汚染がノードに追加されます。kubectl describe node cn-beijing.47.100.***.***予想される出力:
Taints:test-key=test-value:NoSchedule次のいずれかの方法を使用して、汚染を処理します。
次のコマンドを実行して、GPU アクセラレーションノードから汚染を削除します。
kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-汚染のある CPU アクセラレーションノードにポッドをスケジュールできるようにする許容ルールを追加します。
# 1 次のコマンドを実行して ack-prometheus-gpu-exporter を変更します。 kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter # 2. 汚染を許容するために、YAML ファイルに次のフィールドを追加します。 #その他のフィールドは省略されています。 # tolerations フィールドは containers フィールドの上に追加する必要があり、両方のフィールドは同じレベルである必要があります。 tolerations: - key: "test-key" operator: "Equal" value: "test-value" effect: "NoSchedule" containers: # 無関係なフィールドは表示されません。
ack-arms-prometheus の残留リソース構成が原因で ack-arms-prometheus を再インストールできない場合はどうすればよいですか?
この問題は、アンマネージド Prometheus エージェントのみに関連しています。
Managed Service for Prometheus の名前空間のみを削除すると、リソース構成は保持されます。この場合、ack-arms-prometheus を再インストールできない可能性があります。次の操作を実行して、残留リソース構成を削除できます。
次のコマンドを実行して、arms-prom 名前空間を削除します。
kubectl delete namespace arms-prom次のコマンドを実行して、関連する ClusterRole を削除します。
kubectl delete ClusterRole arms-kube-state-metrics kubectl delete ClusterRole arms-node-exporter kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role kubectl delete ClusterRole arms-prometheus-oper3 kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role kubectl delete ClusterRole arms-pilot-prom-k8s kubectl delete ClusterRole gpu-prometheus-exporter次のコマンドを実行して、関連する ClusterRoleBinding を削除します。
kubectl delete ClusterRoleBinding arms-node-exporter kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2 kubectl delete ClusterRoleBinding arms-kube-state-metrics kubectl delete ClusterRoleBinding arms-pilot-prom-k8s kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding gpu-prometheus-exporter次のコマンドを実行して、関連するロールとロールバインディングを削除します。
kubectl delete Role arms-pilot-prom-spec-ns-k8s kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-system