Alibaba Cloud Prometheus Monitoring を統合して、ACK クラスターのコントロールプレーン、ノード、アプリケーションの包括的なメトリックを収集します。可視化されたダッシュボードとリアルタイムアラートを使用して、クラスターのパフォーマンス管理を向上させます。
クイックセレクション
Managed Service for Prometheus は、オープンソースの Prometheus エコシステムと互換性のあるフルマネージドのモニタリングサービスです。基盤となるデータストレージ、データの可視化、またはシステムの運用保守 (O&M) を管理する必要はありません。
Pro Edition (推奨): メトリックを 90 日間保存し、フルマネージドのコレクターを提供します。このエディションは、本番環境レベルのサービスレベルアグリーメント (SLA) 99.95% を提供します。また、カスタマイズ可能な Grafana ダッシュボードと ACK コンポーネント用の事前設定されたアラートルールも提供します。
Basic Edition: メトリックを 7 日間保存します。コレクターは自分でメンテナンスする必要があります。このエディションは、基本的なダッシュボードのみを提供します。
Prometheus モニタリングの有効化
既存クラスターのモニタリングの有効化
(オプション) ACK 専用クラスターを使用する場合は、まずクラスターにモニタリング権限を付与する必要があります。
[ACK Clusters] ページで、対象クラスターの名前をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[Prometheus Monitoring] ページで、コンテナ監視エディションを選択し、[インストール] をクリックします。
モニタリングを有効にすると、デフォルトの基本メトリックが自動的に収集されます。カスタムメトリックを収集するには、「カスタムモニタリングメトリックの収集」をご参照ください。このページでは、[クラスターモニタリングの概要]、[ノードモニタリング]、[アプリケーションモニタリング]、[ネットワークモニタリング]、[ストレージモニタリング] などの複数の事前設定されたダッシュボードを表示できます。
クラスター作成時のモニタリングの有効化
ACK マネージドクラスター (Pro Edition) の場合:
クラスター作成ウィザードの [コンポーネント設定] ページで、[コンテナ監視] を Managed Service for Prometheus Pro Edition または Managed Service for Prometheus Basic Edition に設定します。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
マネージドクラスターの Auto Mode では、デフォルトで Managed Service for Prometheus Basic Edition が有効になります。
ACK マネージドクラスター (Basic Edition)、ACS クラスター、または Serverless Kubernetes クラスターの場合:
クラスター作成ウィザードの [コンポーネント設定] ページで、[コンテナ監視] に [Use Managed Service For Prometheus] を選択します。Managed Service for Prometheus の Basic Edition がインストールされます。
モニタリングを有効にすると、デフォルトの基本メトリックが自動的に収集されます。カスタムメトリックを収集するには、「カスタムモニタリングメトリックの収集」をご参照ください。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択して、[クラスターモニタリングの概要]、[ノードモニタリング]、[アプリケーションモニタリング]、[ネットワークモニタリング]、[ストレージモニタリング] などの事前設定されたダッシュボードを表示します。
アラート通知の設定
主要なメトリックに対してアラートルールを設定できます。異常が発生した場合、メール、ショートメッセージ、DingTalk などのチャンネルを通じて通知が自動的に送信されます。
[ARMS コンソール] にログインします。左側のナビゲーションウィンドウで、 を選択します。
[連絡先] ページで、通知方法を選択し、アラート通知の連絡先を作成します。
ARMS コンソールの左側のナビゲーションウィンドウで、 を選択します。
[Prometheus アラートルール] ページで、[Prometheus アラートルールの作成] をクリックします。
ルールの設定方法の詳細については、「Prometheus アラートルールの設定」をご参照ください。
カスタムモニタリングメトリックの収集
Managed Service for Prometheus は、クエリ/秒 (QPS) や処理レイテンシーなど、カスタムメトリックを収集するための複数のメソッドをサポートしています。詳細については、「コンテナ環境のカスタム収集ルールの管理」をご参照ください。
Prometheus モニタリングの無効化
クラスター詳細ページの左側のナビゲーションウィンドウで、[コンポーネント管理] をクリックします。
[コンポーネント管理] ページで、[ログ & モニタリング] タブをクリックし、[ack-arms-prometheus] コンポーネントを見つけます。[アンインストール] をクリックし、表示されるダイアログボックスで [OK] をクリックします。
課金
クラスター規模のモニタリング料金: Basic Edition は無料です。Pro Edition は、クラスター内のノード数に応じて従量課金制で課金されます。
Prometheus インスタンス料金: デフォルトの 基本メトリック の収集には料金はかかりません。カスタムメトリックの収集料金は、書き込まれたデータ量、レポートされたデータ量、ストレージ容量、ストレージ期間などの要因に応じて従量課金制で課金されます。
課金ルールと価格の詳細については、「コンテナ監視の課金」をご参照ください。
デフォルトの基本メトリック
次の表に、一般的な基本メトリックを示します。基本メトリックの詳細については、「メトリック」をご参照ください。
カテゴリ | メトリック | 説明 |
コンテナーの基本リソースモニタリング (kubelet) |
| コンテナーが消費した合計 CPU 時間。 |
| コンテナーのメモリ使用量 (バイト)。 | |
| コンテナーのファイルシステム使用量 (バイト)。 | |
| コンテナーがネットワーク経由で送信した合計バイト数。 | |
クラスターノードの基本リソースモニタリング (node-exporter) |
| ノードが消費した合計 CPU 時間。 |
| ノードの利用可能なメモリ (バイト)。 | |
| ノードの 1 分間の平均負荷。 | |
| ノードのファイルシステム上の利用可能なスペース (バイト)。 | |
| ノードが受信した合計バイト数。 | |
コントロールプレーンコンポーネントのモニタリング (API Server) |
| API リクエストの総数。 |
| API Server リクエストのレイテンシーのバケット (秒)。 | |
| API Server が現在処理中のリクエスト数。 | |
クラスターアプリケーションステータスのモニタリング (kube-state-metrics) |
| Pod のフェーズ。 |
| Kubernetes Deployment で利用可能なレプリカの数。 | |
| ノードの状態。 | |
| Pod 内のコンテナーの再起動総数。 | |
| Kubernetes Deployment に指定されたレプリカの数。 | |
CoreDNS モニタリング |
| CoreDNS DNS リクエスト期間の分位数 (秒)。 |
| CoreDNS DNS 応答コードの総数。 | |
| CoreDNS DNS リクエストの総数。 | |
| CoreDNS キャッシュヒットの総数。 | |
| CoreDNS キャッシュミスの総数。 | |
クラスターとノードのストレージモニタリング |
| クラスター内の永続ボリューム (PV) のステータス別の総数。 |
| クラスター内の永続ボリューム要求 (PVC) のステータス別の総数。 | |
| コンテナーのファイルシステム使用量 (バイト)。 | |
| ノードボリュームの利用可能な容量 (バイト)。 | |
| ノードボリュームの合計 I/O 時間 (秒)。 | |
| ノードボリュームから読み取られた合計バイト数。 | |
| ノードボリュームに書き込まれた合計バイト数。 | |
ノード GPU モニタリング (gpu-exporter) |
| コンテナーに割り当てられた GPU メモリ。 |
| 合計 GPU メモリに対する割り当て済み GPU メモリの比率。値の範囲は [0, 1] です。 | |
| GPU カードの合計 GPU メモリ。 | |
| GPU スレッドのデコーダー使用率。 | |
コストモニタリング (cost-exporter) |
| ノードの現在の実価格。 |
| 請求書における現在のインスタンスの支払額。 | |
| 請求書における現在のインスタンスのリソース使用量。 | |
| 請求書における現在のインスタンスの割引額。 | |
| 請求書における現在のインスタンスの未払い額。 | |
Ingress モニタリング |
| NGINX Ingress コントローラーへのリクエスト総数。 |
| NGINX Ingress コントローラーのリクエストレイテンシーの分布 (秒)。 | |
| NGINX Ingress コントローラー - 送信された合計バイト数 (合計)。 | |
| NGINX Ingress コントローラー - エラー数。 | |
リソーススケジューリングモニタリング |
| ノード上の割り当て可能なリソースのメトリック。 |
| コンテナリソースリクエストのメトリック。 | |
| コンテナリソース制限のメトリック。 | |
| スケジューラ内の保留中の Pod の数。 | |
| スケジューラによるスケジューリング試行の総数。 | |
| スケジューラにおけるエンドツーエンドのスケジューリングレイテンシーの分布。 | |
| スケジューラにおける Pod スケジューリングレイテンシーのバケット (秒)。 | |
| スケジューラ内のスケジュール不可能な Pod の数。 |
よくある質問
Prometheus モニタリングページに「関連するダッシュボードが見つかりません」と表示される
Prometheus モニタリングを有効にした後、クラスター詳細ページの ページに [関連するダッシュボードが見つかりません] というメッセージが表示された場合は、次の手順に従って問題を解決してください。

Prometheus モニタリングコンポーネントを再インストールします。
コンポーネントを再インストールします:
コンポーネントがアンインストールされたことを確認したら、[インストール] をクリックし、表示されるダイアログボックスで [OK] をクリックします。
インストールの完了を待ってから、Prometheus モニタリングページに戻り、問題が解決されているかどうかを確認します。
インストールが完了するのを待ってから、Prometheus モニタリングページに戻り、問題が解決したかどうかを確認します。問題が解決しない場合は、次のステップに進みます。
Prometheus インスタンスの接続を確認します。
[ARMS コンソール] の左側のナビゲーションウィンドウで、[プロビジョニング] をクリックします。
[プロビジョニングされた環境] タブで、[コンテナ環境] リストを確認し、クラスターと同じ名前のコンテナ環境が存在するかどうかを確認します。
対応するコンテナ環境が見つからない場合は、「ARMS または Prometheus コンソール経由で接続する」をご参照ください。
コンテナ環境が存在する場合: 対象のコンテナ環境の [アクション] 列で [プローブ設定] をクリックして [プローブ設定] ページに移動します。
インストールされているプローブが期待どおりに実行されているかどうかを確認します。
ack-arms-prometheus コンポーネントのバージョンを表示するにはどうすればよいですか?
[ACK Clusters] ページで、対象クラスターの名前をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、[コンポーネント管理] をクリックします。
[コンポーネント管理] ページで、[ログ & モニタリング] タブをクリックし、[ack-arms-prometheus] コンポーネントを見つけます。
現在のバージョンはコンポーネントの下に表示されます。新しいバージョンが利用可能な場合は、バージョンの右側にある [アップグレード] をクリックしてコンポーネントをアップグレードできます。
説明[アップグレード] ボタンは、インストールされているコンポーネントが最新バージョンでない場合にのみ表示されます。
GPU モニタリングをデプロイできないのはなぜですか?
GPU ノードに Taint がある場合、GPU モニタリングのデプロイメントが失敗することがあります。次の手順を実行して、GPU ノードの Taint を表示できます。
次のコマンドを実行して、対象の GPU ノードの Taint を表示します。
GPU ノードにカスタム Taint がある場合、Taint 関連のエントリを見つけることができます。このトピックでは、
keyがtest-key、valueがtest-value、effectがNoScheduleの Taint を例として使用します:kubectl describe node cn-beijing.47.100.***.***期待される出力:
Taints:test-key=test-value:NoSchedule次のいずれかの方法で GPU ノードの Taint を処理します:
次のコマンドを実行して、GPU ノードから Taint を削除します。
kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-GPU ノードの Taint に対して Toleration を宣言し、Pod が Taint のあるノードにスケジュールされるようにします。
# 1. 次のコマンドを実行して ack-prometheus-gpu-exporter を編集します。 kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter # 2. 次のフィールドを YAML ファイルに追加して、Taint の Toleration を宣言します。 # その他のフィールドは省略されています。 # tolerations フィールドは containers フィールドの上に追加され、containers フィールドと同じレベルにあります。 tolerations: - key: "test-key" operator: "Equal" value: "test-value" effect: "NoSchedule" containers: # その他のフィールドは省略されています。
ARMS-Prometheus を手動で完全に削除するにはどうすればよいですか?
Managed Service for Prometheus の名前空間のみを削除すると、残りの設定が保持され、再インストールが失敗する可能性があります。次の操作を実行して、残りの ARMS-Prometheus 設定を完全に削除できます。
arms-prom 名前空間を削除します。
kubectl delete namespace arms-promClusterRole を削除します。
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 kubectl delete ClusterRole o11y:addon-controller:role kubectl delete ClusterRole arms-aliyunserviceroleforarms-clusterroleClusterRoleBinding を削除します。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 ClusterRoleBinding o11y:addon-controller:rolebinding kubectl delete ClusterRoleBinding arms-kube-state-metrics-agent kubectl delete ClusterRoleBinding arms-node-exporter-agent kubectl delete ClusterRoleBinding arms-aliyunserviceroleforarms-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 ClusterRoleBinding o11y:addon-controller:rolebinding kubectl delete ClusterRoleBinding arms-kube-state-metrics-agent kubectl delete ClusterRoleBinding arms-node-exporter-agent kubectl delete ClusterRoleBinding arms-aliyunserviceroleforarms-clusterrolebindingRole と RoleBinding を削除します。
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
Helm を使用して Managed Service for Prometheus をアンインストールするにはどうすればよいですか?
Helm を使用してサービスを手動でデプロイした場合、または環境や Helm のバージョンの問題でリソースが残っている場合は、この方法でアンインストールする必要があります。
[ACK Clusters] ページで、対象クラスターの名前をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページで、arms-prometheus コンポーネントを見つけ、[アクション] 列の [削除] をクリックし、[リリースレコードのパージ] を選択して、プロンプトに従ってアプリケーションを削除します。
ack-arms-prometheus コンポーネントのインストール時に「xxx in use」エラーが報告される
[ACK Clusters] ページで、対象クラスターの名前をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページで、ack-arms-prometheus が存在するかどうかを確認します。
存在する場合: [Helm] ページで ack-arms-prometheus を削除し、[コンポーネント管理] ページで ack-arms-prometheus を再インストールします。ack-arms-prometheus のインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
見つからない場合:
ack-arms-prometheus が存在しない場合、ack-arms-prometheus Helm Release が削除されたときに残存リソースが残っていることを示します。ARMS-Prometheus を手動で削除する必要があります。
「コンポーネントがインストールされていません」というメッセージが表示された後、ack-arms-prometheus コンポーネントのインストールに失敗する
ack-arms-prometheus コンポーネントがすでにインストールされているかどうかを確認します。
[ACK Clusters] ページで、対象クラスターの名前をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページで、ack-arms-prometheus が存在するかどうかを確認します。
存在する場合: [Helm] ページで ack-arms-prometheus を削除し、[コンポーネント管理] ページで ack-arms-prometheus を再インストールします。ack-arms-prometheus のインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
見つからない場合:
ack-arms-prometheus が存在しない場合、ack-arms-prometheus Helm Release が削除されたときに残存リソースが残っていることを示します。ARMS-Prometheus を手動で削除する必要があります。
ack-arms-prometheus のログにエラーがないか確認します。
クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] ページの上部で、[名前空間] を [arms-prom] に設定し、arms-prometheus-ack-arms-prometheus をクリックします。
[ログ] タブをクリックして、ログにエラーがないか確認します。
エージェントのインストール中にエラーが発生したかどうかを確認します。
[ARMS コンソール] にログインします。左側のナビゲーションウィンドウで、[プロビジョニング] をクリックします。
[プロビジョニングされた環境] タブで、[コンテナ環境] リストを確認します。対象のコンテナ環境の [アクション] 列で [プローブ設定] をクリックして [プローブ設定] ページに移動します。
ACK 専用クラスターにモニタリング権限を付与するにはどうすればよいですか?
[ACK Clusters] ページで、対象クラスターの名前をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。
[基本情報] タブで、[ワーカー RAM ロール] の右側にある [KubernetesWorkerRole-***] をクリックします。RAM ロールページで、[権限管理] タブをクリックし、[アクセスポリシー] 列の [k8sWorkerRole****] をクリックします。
アクセスポリシー詳細ページで、[ポリシー内容] タブをクリックし、[ポリシー内容の編集] をクリックします。
スクリプトエディターで、次の権限付与ルールを Statement フィールドに追加します。ルールを変更したら、[OK] をクリックします。
{ "Version": "1", "Statement": [ { "Action": [ "arms:Describe*", "arms:List*", "arms:Get*", "arms:Search*", "arms:Check*", "arms:Query*", "arms:ListEnvironments", "arms:DescribeAddonRelease", "arms:InstallAddon", "arms:DeleteAddonRelease", "arms:ListEnvironmentDashboards", "arms:ListAddonReleases", "arms:CreateEnvironment", "arms:UpdateEnvironment", "arms:InitEnvironment", "arms:DescribeEnvironment", "arms:InstallEnvironmentFeature", "arms:ListEnvironmentFeatures", "cms:CreateIntegrationPolicy", "cms:ListAddonReleases", "cms:UpdateAddonRelease", "cms:CreateAddonRelease", "cms:GetPrometheusInstance", "cms:ListIntegrationPolicyStorageRequirements" ], "Resource": "*", "Effect": "Allow" } ] }
参考資料
Managed Service for Prometheus を Basic Edition から Pro Edition にアップグレードする。