Managed Service for Prometheus と統合して、ACK クラスターからコントロールプレーン、ノード、およびアプリケーションのメトリックを包括的に収集し、視覚的なダッシュボードとリアルタイムアラートを通じてクラスターのパフォーマンス管理の効率を向上させます。
エディションの選択
Managed Service for Prometheus は、オープンソースの Prometheus エコシステムと完全に統合され、フルマネージドのモニタリングサービスを提供します。基盤となるデータストレージ、データの可視化、運用保守 (O&M) を管理する必要はありません。
Pro Edition (推奨):90 日間のメトリクス保持期間、フルマネージドのコレクター、および 99.95% の本番環境グレードの SLA を提供します。カスタマイズ可能な Grafana ダッシュボードと、Container Service for Kubernetes (ACK) コンポーネント向けに事前設定されたアラートルールを提供します。詳細については、「コンテナモニタリング Pro Edition の使用」をご参照ください。
Basic Edition:7 日間のメトリクス保持期間を提供します。コレクターを維持する必要があり、基本的なダッシュボードのみが提供されます。
Prometheus モニタリングの有効化
既存クラスター
(任意) ACK 専用クラスターの場合、まずクラスターにモニタリング権限を付与します。
[クラスター] ページで、目的のクラスターの名前をクリックします。クラスター詳細ページの左側のナビゲーションペインで、 を選択します。
Prometheus 監視 ページで、コンテナモニタリングエディションを選択し、インストール をクリックします。
モニタリングを有効にすると、デフォルトの基本メトリクスが自動的に収集されます。カスタムメトリクスを収集するには、「カスタムメトリクスを収集する」をご参照ください。現在のページでは、クラスターの概要、ノードモニタリング、アプリケーションのモニタリング、ネットワークモニタリング、ストレージモニタリングなど、複数の事前設定されたダッシュボードを表示できます。
新規クラスター
ACK マネージドクラスター(Pro 版):
クラスター作成ウィザードのコンポーネント設定ステップのコンテナーモニタリングセクションで、コンテナクラスターモニタリング Pro 版またはコンテナクラスターモニタリング Basic 版を選択します。 詳細については、「ACK マネージドクラスターの作成」をご参照ください。
自動モードでは、デフォルトで Container Cluster Monitoring Basic Edition が使用されます。
ACK マネージドクラスター (Basic Edition)、ACS クラスター、ACK サーバーレスクラスター:
クラスター作成ウィザードの コンポーネント設定 ステップの コンテナーモニタリング セクションで、Alibaba Cloud Managed Service for Prometheus を使用します を選択します。 これにより、コンテナクラスターモニタリング Basic Edition がインストールされます。
モニタリングを有効にすると、デフォルトの基本メトリクスが自動的に収集されます。 カスタムメトリクスを収集するには、「カスタムメトリクスを収集する」をご参照ください。 クラスター詳細ページの左側のナビゲーションウィンドウで を選択すると、クラスターの概要、ノードモニタリング、アプリケーションのモニタリング、ネットワークモニタリング、ストレージモニタリング などの複数の事前設定済みのダッシュボードを表示できます。
アラート通知の設定
主要なメトリクスに対してアラートルールを設定すると、異常が発生した際にメール、SMS、DingTalk などのチャネルを通じて自動的に通知が送信されます。
ARMS コンソール にログオンします。左側のナビゲーションウィンドウで、 を選択します。
通知対象 ページで、通知方法を選択し、通知ポリシーを作成します。
ARMS コンソールの左側のナビゲーションペインで、を選択します。
Prometheus alert rules ページで、Prometheus アラートルールの作成 をクリックします。
設定の詳細については、「Prometheus アラートルールの作成」をご参照ください。
カスタムメトリクスの収集
Managed Service for Prometheus では、1 秒あたりのクエリ数 (QPS) や処理遅延などのカスタムメトリクスを、複数の方法で収集できます。詳細については、「コンテナ環境のカスタム収集ルールの管理」をご参照ください。
Prometheus モニタリングの無効化
クラスター詳細ページの左側のナビゲーションペインで、アドオン管理 をクリックします。
アドオン管理 ページで、ack-arms-prometheus アドオンを見つけ、 をクリックします。確認ダイアログボックスで、OK をクリックします。
課金
クラスターモニタリング料金:Basic Edition は無料で、Pro Edition は、クラスター内のノード数に基づいて従量課金で請求されます。
Prometheus インスタンス料金:基本メトリクスの収集はデフォルトで無料です。カスタムメトリクスの収集は、書き込み量、レポート量、ストレージ量、保持期間などの要因に基づいて従量課金で請求されます。
課金ルールと料金の詳細については、「コンテナモニタリングの課金」をご参照ください。
デフォルトの基本メトリクス
Prometheus モニタリングを有効にすると、コンテナモニタリングの基本メトリクスが自動的に収集されます。これらのメトリクスの詳細な説明については、「メトリクス」をご参照ください。
kubelet からのコンテナの基本リソースメトリクス。
kube-state-metrics からのクラスターのアプリケーション状態メトリクス。
node-exporter からのクラスターノードの基本リソースメトリクス。
ack-gpu-exporter からのクラスターノードの GPU メトリクス。
マネージドクラスターのコントロールプレーンコンポーネント (API サーバー、etcd、kube-scheduler、kube-controller-manager、cloud-controller-manager を含む) のメトリクス。
クラスター内の CoreDNS の基本モニタリングメトリクス。
クラスター内の Ingress コントローラーの基本モニタリングメトリクス。
対応する機能を有効にすると、次の基本メトリクスが自動的にレポートされます:
コンテナストレージモニタリングを有効にすると、csi-plugin アドオンによるメトリクスのレポートが開始されます。
コストインサイトを有効にすると、ack-cost-exporter アドオンによるメトリクスのレポートが開始されます。
ワークロード混在配置モニタリングとリソースプロファイリングを有効にすると、ack-koordinator アドオンがメトリックのレポートを開始します。
よくある質問
Prometheus モニタリングページにダッシュボードが表示されない
Prometheus モニタリングを有効にした後、 ページに「関連するモニタリングダッシュボードが見つかりません」というプロンプトが表示された場合は、以下の手順に従って問題を解決してください。
Prometheus モニタリングアドオンを再インストールします。
アドオンを再インストールします:
コンポーネントがアンインストールされたことを確認したら、インストール をクリックします。確認ダイアログボックスで、OK をクリックします。
インストールが完了したら、Prometheus モニタリングページに戻り、問題が解決したかどうかを確認します。
問題が解決しない場合は、次の手順に進みます。
Prometheus インスタンスの統合を確認します。
ARMS コンソールの左側のナビゲーションペインで、アクセス管理 をクリックします。
[統合] タブで、[コンテナサービス] リストにクラスターと同じ名前のコンテナ環境があるかどうかを確認します。
そのようなコンテナ環境が存在しない場合は、「ARMS または Prometheus コンソールでサービスを統合する」をご参照ください。
そのようなコンテナ環境が存在する場合は、対象のコンテナ環境の操作列で[設定]をクリックし、[設定]ページに移動します。
インストールされているエージェントが正常に実行されているかどうかを確認します。
メトリクス保持期間の調整方法
詳細については、「メトリクスの保持期間を調整する」をご参照ください。
ack-arms-prometheus アドオンのバージョンを確認する方法
[クラスター] ページで、対象のクラスターの名前をクリックします。左側のナビゲーションペインで、アドオン管理 をクリックします。
アドオン管理 ページで、ack-arms-prometheus アドオンを探します。
現在のバージョンはコンポーネント名の下に表示されます。新しいバージョンが利用可能で、コンポーネントをアップグレードする場合は、バージョン番号の横にあるアップグレードをクリックします。
説明アップグレード オプションは、インストールされているバージョンが最新バージョンではない場合にのみ表示されます。
GPU モニタリングのデプロイが失敗するのはなぜですか?
GPU 監視のデプロイは、GPU ノードに Taint がある場合に失敗する可能性があります。 この問題を解決するには、まずノードの Taint を確認します。
次のコマンドを実行して、ターゲット GPU ノードの Taint を確認します。
GPU ノードにカスタム Taint がある場合は、関連するエントリを見つけることができます。 この例では、
keyがtest-key、valueがtest-value、effectがNoScheduleの Taint を使用します。kubectl describe node cn-beijing.47.100.***.***想定される出力:
Taints:test-key=test-value:NoSchedule次の 2 つの方法のいずれかで GPU ノードの Taint を処理してください。
次のコマンドを実行して、GPU ノードから Taint を削除してください。
kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-Taint の Toleration を宣言して、Pod がノードにスケジュールされるようにしてください。
# 1. 次のコマンドを実行して、ack-prometheus-gpu-exporter DaemonSet を編集してください。 kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter # 2. 次のフィールドを YAML ファイルに追加して、Taint の Toleration を宣言してください。 # 他のフィールドは省略されます。 # `tolerations` フィールドは `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-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 を使用してアンインストールする方法
Helm を使用して手動でサービスをデプロイした場合、または環境や Helm のバージョンの問題でリソースが残っている場合は、この方法でサービスをアンインストールします。
[クラスター] ページで、目的のクラスターの名前をクリックします。 左側のナビゲーションペインで、 を選択します。
Helm ページで ack-arms-prometheus リリースを見つけ、アクション 列の 削除 をクリックし、消去 を選択し、プロンプトに従ってアプリケーションを削除します。
インストール中に "xxx in use" エラーが発生する
クラスターページで、対象のクラスターの名前をクリックします。 左側のナビゲーションペインで、 を選択します。
Helm ページで、ack-arms-prometheus が存在するかどうかを確認します。
存在する場合、Helm ページから ack-arms-prometheus を削除し、アドオン管理 ページで再インストールします。ack-arms-prometheus のインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
存在しない場合:
ack-arms-prometheus Helm リリースにリソースが残っている可能性があります。ARMS Prometheus を完全に手動でアンインストールします。
インストール中に "Component Not Installed" エラーが発生する
ack-arms-prometheus アドオンがインストールされているかどうかを確認します。
クラスターページで、対象のクラスターの名前をクリックします。 左側のナビゲーションペインで、 を選択します。
Helm ページで、ack-arms-prometheus が存在するかどうかを確認します。
存在する場合、Helm ページから ack-arms-prometheus を削除し、アドオン管理 ページで再インストールします。ack-arms-prometheus のインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
存在しない場合:
ack-arms-prometheus Helm リリースにリソースが残っている可能性があります。ARMS Prometheus を完全に手動でアンインストールします。
ack-arms-prometheus のログにエラーがないか確認します。
クラスター詳細ページの左側のナビゲーションペインで、を選択します。
デプロイメント ページの上部で、名前空間 を arms-prom に設定し、arms-prometheus-ack-arms-prometheus をクリックします。
ログ タブをクリックして、ログでエラーを確認します。
エージェントのインストール中にエラーが発生したかどうかを確認します。
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、アクセス管理 をクリックします。
[インテグレーション] タブで、[コンテナサービス] リストを確認します。対象のコンテナ環境の 操作 列で [設定] をクリックして、[設定] ページに移動します。
ACK 専用クラスターにモニタリング権限を付与する方法
クラスターページで、対象のクラスター名をクリックします。左側のナビゲーションペインで、クラスター情報 をクリックします。
基本情報 タブで、Worker RAM ロール の横にある KubernetesWorkerRole-*** リンクをクリックし、RAM ロールページの トラスト規則 タブに切り替えます。
トラスト規則 タブで、編集トラスト規則 をクリックします。
スクリプトエディターで、Statement フィールドに次の認可ルールを追加し、OK をクリックします。
{ "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:GetIntegrationVersionForCS", "cms:CreateIntegrationPolicy", "cms:ListAddonReleases", "cms:UpdateAddonRelease", "cms:CreateAddonRelease", "cms:GetPrometheusInstance", "cms:ListIntegrationPolicyStorageRequirements", "log:PostLogStoreLogs" ], "Resource": "*", "Effect": "Allow" } ], "Version": "1" }
関連トピック
Managed Service for Prometheus を Basic Edition から Pro Edition にアップグレードする