Container Service for Kubernetes (ACK) クラスターのManaged Service for Prometheusを有効にして、クラスターとクラスター内のコンテナーをリアルタイムでモニタリングできます。 Managed Service for Prometheusを有効にすると、Grafanaダッシュボードに表示されるメトリックを表示できます。 カスタム連絡先を指定してアラート通知を受信し、カスタムメトリックを設定することもできます。
マネージドサービスfor Prometheusの概要
Managed Service for Prometheusは、オープンソースのPrometheusエコシステムと連動する完全マネージド型モニタリングサービスです。 Managed Service for Prometheusは、さまざまなコンポーネントを監視し、複数の定義済みダッシュボードを提供します。 Managed Service for Prometheusでは、データストレージ、データ表示、システムメンテナンスなどの基盤となるサービスを管理する手間を省きます。
Managed Service for Prometheusには、Basic EditionとPro Editionの2つのコンテナーモニタリングエディションがあります。 Container Monitoring Basic Editionと比較して、Container Monitoring Pro Editionは、さまざまなGrafanaモニタリングダッシュボード、Container Service for Kubernetes (ACK) のコンポーネントのデフォルトのアラートルール、リモート書き込みおよびEventBridgeベースのデータ配信機能を提供します。 Container Monitoring Pro Editionの利点の詳細については、「Basic EditionとPro Editionの機能と課金ルールの比較」をご参照ください。
課金
基本メトリック
Managed Service for Prometheusを有効にすると、ACKはコンテナーからメトリックを収集します。 ACKが収集するデフォルトのメトリックは基本的なメトリックです。 デフォルトでは、基本メトリックは無料です。 Managed Service For Prometheusでサポートされている基本的なメトリックの詳細については、「メトリック」をご参照ください。
デフォルトで収集される基本メトリック
他の機能を有効にした後に収集される基本的なメトリクス
コンテナリソースに関連するメトリック (kubelet)
アプリケーションのステータスに関連するメトリック (kube-state-Metrics)
ノードリソースに関連するメトリック (node-exporter)
gpuに関連するメトリック (ack-gpu-exporter)
API server、etcd、kube-scheduler、kube-controller-manager、cloud-controller-managerなど、ACK管理クラスター内の制御プレーンコンポーネントに関連するメトリック。
CoreDNSに関連するメトリクス
Ingressコントローラーに関連するメトリック
csi-pluginを使用してノード側のストレージリソースを監視した後、csi-pluginに関連するメトリックが収集されます。
コストインサイトを有効にすると、ack-cost-exporterに関連するメトリックが収集されます。
コロケーションモニタリングやリソースプロファイリングなどの詳細なスケジューリング機能を有効にすると、ack-koordinatorに関連するメトリックが収集されます。
重要収集したメトリクスの保持期間を変更したり、カスタムメトリクスを収集したりすると、追加料金が発生します。 メトリックの保持期間を変更する方法の詳細については、メトリックのデータサンプルの保存期間を変更するにはどうすればよいですか? Prometheusのマネージドサービスの課金ルールの詳細については、「課金」をご参照ください。
Grafanaのマネージドサービス
Managed Service for Prometheusを有効にすると、Managed Service for Prometheusによって収集されたメトリックを表示するために、Managed Service for Grafana Shared Editionが使用されます。 Managed Service For Grafanaの課金ルールの詳細については、「課金ルール」をご参照ください。
手順1: Prometheusのマネージドサービスの有効化
クラスター作成時にPrometheusのマネージドサービスを有効にする
ACK Proクラスター:
ACKコンソールの [コンポーネント設定] ウィザードページで、[ACK Cluster Monitoring Pro Edition] または [ACK Cluster Monitoring Basic Edition] を選択します。 詳細については、「ACK管理クラスターの作成」をご参照ください。
その他のクラスタタイプまたは仕様:
ACKコンソールの [コンポーネント設定] ウィザードページで、[Prometheusのマネージドサービスの有効化] を選択します。 詳細については、「ACK管理クラスターの作成」をご参照ください。
デフォルトでは、クラスターの作成時にEnable Managed Service for Prometheusが選択されています。 クラスターの作成後、システムは自動的にManaged Service for Prometheusを設定します。
既存のクラスターに対するPrometheusのマネージドサービスの有効化
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
Prometheusモニタリングページで、画面の指示に従って必要なコンポーネントをインストールし、関連するダッシュボードを確認します。
システムは自動的にコンポーネントをインストールし、ダッシュボードをチェックします。 インストールが完了したら、各タブをクリックしてメトリクスを表示できます。
ステップ2: マネージドサービスfor Prometheusが提供するGrafanaダッシュボードを表示する
ACKコンソールの [Prometheusモニタリング] ページで、異なるGrafanaダッシュボードをクリックして、異なるモニタリングデータを表示できます。
手順3: (オプション) PrometheusのManaged Serviceでアラートルールを設定する
Managed Service for Prometheusを使用すると、ジョブを監視するためのアラートルールを作成できます。 アラートルールが満たされると、メール、テキストメッセージ、DingTalk通知を介してリアルタイムでアラートを受信できます。 これにより、プロアクティブな方法でエラーを検出できます。 アラートルールがトリガーされると、システムは指定された連絡先にアラート通知を送信します。
1. 通知オブジェクトの作成
2: アラートルールの設定
最初にARMSコンソール
を使用します。 左側のナビゲーションウィンドウで、 .
表示されるページの上部で、クラスターがデプロイされているリージョンを選択します。 クラスターで使用されているPrometheusインスタンスの名前をクリックして、インスタンスの詳細ページに移動します。
左側のナビゲーションウィンドウで、[アラートルール] をクリックします。 [Prometheus Alert Rules] ページで、通知オブジェクトのアラートルールを設定します。
詳細については、「Prometheusインスタンスのアラートルールの作成」をご参照ください。
(オプション) 手順4: カスタムメトリクスを作成し、Grafanaを使用してメトリクスを表示する
ポッド注釈を追加して、既定のサービス検出機能に基づいてカスタムメトリックを指定できます。 サービスラベルを追加して、ServiceMonitorsに基づいてカスタムメトリックを指定することもできます。 ポッドのアノテーションとサービスラベルを同時に追加すると、同じデータソースから重複したメトリックが収集される可能性があります。
ポッド注釈: 特定の注釈をポッドに追加すると、Managed Service for Kubernetesは自動的にポッドを検出し、ポッドからメトリクスを収集できます。
サービスラベル:
サービス
を作成し、特定のラベルをサービスに追加します。 次に、ServiceMonitor
を作成して、Service
のバックエンドポッドを監視する方法を指定します。
ポッド注釈
配置のテンプレートに注釈を追加して、カスタムメトリックを定義できます。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード]> [デプロイ] を選択します。 画面上の指示に従ってワークロードを作成します。
次の例は、配置のパラメーターを設定する方法を示しています。 詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。
[コンテナー] ウィザードページで、コンテナーイメージと必要なリソースを指定し、webアプリケーションを作成してポート5000を公開し、[次へ] をクリックします。
[詳細] ウィザードページで、サービスを作成し、ポッドの注釈を追加します。 [作成] をクリックします。
サービスを作成します。
[サービス] セクションで、[作成] をクリックし、サービスを設定します。 サービスタイプをSLBに設定し、ポートマッピングを設定します。
[注釈] セクションで、次の注釈を追加します。
prometheus.io/scrap
アノテーションを追加し、値をtrue
に設定します。 これにより、Managed Service for Prometheusはメトリックをスクレイピングできます。prometheus.io/port
アノテーションを追加し、値を5000
に設定します。 これは、エンドポイントポート5000
がマネージドサービスfor Prometheusによってスクレイピングされることを指定します。prometheus.io/path
アノテーションを追加し、値を/access
に設定します。 これは、エンドポイントパス/アクセス
がPrometheusのManaged Serviceによってスクレイピングされることを指定します。
カスタムメトリックを設定します。
最初にARMSコンソール
を使用します。
左側のナビゲーションウィンドウで、[統合管理] をクリックします。
[統合環境] タブで、[Container Service] タブの環境リストを表示します。 ACK環境インスタンスを見つけ、[操作] 列の [メトリックスクレイピング] をクリックします。 [メトリックのスクレイピング] タブが表示されます。
[メトリックのスクラップ] タブで、ServiceMonitorとPodMonitorの設定を追加して、Prometheusメトリック収集ルールを定義します。
詳細については、「ACK環境のカスタム収集ルールの管理」をご参照ください。
上記の操作が完了したら、[統合管理] ページの [セルフモニタリング] タブをクリックし、[ターゲット] をクリックして、カスタムメトリックが設定されているかどうかを確認します。 [エンドポイント] 列のハイパーリンクをクリックして、メトリック値を増やすことができます。
メトリクスの設定方法の詳細については、「データモデル」をご参照ください。
カスタムメトリックを表示します。
[Integration Management] ページの [Metrics Explorer] タブで、表示するカスタムメトリックを選択するか、カスタムメトリックを表示および検証するPromQLステートメントを指定できます。 詳細については、「メトリック探索」をご参照ください。
[Integration Management] ページの [Self-Monitoring] タブで、[Monitoring] をクリックしてGrafanaダッシュボードのカスタムメトリクスを表示します。
サービスラベル
ServiceMonitorsを使用してカスタムメトリックを作成するには、ポッド注釈を追加する代わりに、サービスラベルを追加する必要があります。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード]> [デプロイ] を選択します。 画面上の指示に従ってワークロードを作成します。
次の例は、配置のパラメーターを設定する方法を示しています。 詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。
[コンテナー] ウィザードページで、コンテナーイメージと必要なリソースを指定し、webアプリケーションを作成してポート5000を公開し、[次へ] をクリックします。
[詳細] ページで、[サービス] セクションの [作成] をクリックし、サービスを設定します。
サービスタイプをSLBに設定し、ポートマッピングを設定します。 サービスラベルを追加します。 たとえば、ラベルキーを
app
に設定し、ラベル値をcustom-metrics-pindex
に設定します。 このラベルは、ServiceMonitorsによってセレクタとして使用されます。
カスタムメトリックを設定します。 Prometheusのマネージドサービスがスクレイピングするエンドポイントを使用します。
最初にARMSコンソール
を使用します。
左側のナビゲーションウィンドウで、[統合管理] をクリックします。
[統合環境] タブで、[Container Service] タブの環境リストを表示します。 ACK環境インスタンスを見つけ、[操作] 列の [メトリックスクレイピング] をクリックします。 [メトリックのスクレイピング] タブが表示されます。
[メトリックスクレイピング] タブで、[サービスモニター] をクリックし、[作成] をクリックします。 画面上の指示に従ってServiceMonitorを設定し、[作成] をクリックします。
カスタムメトリクスの設定方法の詳細については、「ACKサービスの検出」をご参照ください。
[Integration Management] ページの [Self-Monitoring] タブで、[Targets] をクリックして、PrometheusのManaged Serviceがスクレイピングするエンドポイントが表示されているかどうかを確認します。
説明注釈を追加してカスタムメトリックを作成する方法と比較して、この方法は、サービスの名前空間と名前を含むより多くの情報を提供します。
メトリックを選択し、[エンドポイント] 列のハイパーリンクをクリックして、メトリック値を増やします。
メトリクスの設定方法の詳細については、「データモデル」をご参照ください。
カスタムメトリックを表示します。
[Integration Management] ページの [Metrics Explorer] タブで、表示するカスタムメトリックを選択するか、カスタムメトリックを表示および検証するPromQLステートメントを指定できます。 詳細については、「メトリック探索」をご参照ください。
[Integration Management] ページの [Self-Monitoring] タブで、[Monitoring] をクリックしてGrafanaダッシュボードのカスタムメトリクスを表示します。
よくある質問
ack-arms-prometheusコンポーネントのバージョンを確認するにはどうすればよいですか?
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
On theアドオンページをクリックし、ログとモニタリングタブを検索し、ack-arms-プロメテウスコンポーネントを使用します。
バージョン番号はコンポーネントの下部に表示されます。 新しいバージョンが利用可能な場合は、右側の [アップグレード] をクリックしてコンポーネントを更新します。
説明[アップグレード] ボタンは、コンポーネントが最新バージョンに更新されていない場合にのみ表示されます。
Managed Service for PrometheusがGPUアクセラレーションノードを監視できないのはなぜですか?
Managed Service for Prometheusは、テイントで構成されているGPU高速化ノードを監視できない場合があります。 次の手順を実行して、GPU高速化ノードの汚染を表示できます。
次のコマンドを実行して、GPUアクセラレーションノードの汚染を表示します。
GPUアクセラレーションノードにカスタムテイントを追加した場合、カスタムテイントに関する情報を表示できます。 この例では、
key
がtest-key
に設定され、value
がtest-value
に設定され、effect
がNoSchedule
に設定されたtaintがノードに追加されます。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 Run the following command to modify ack-prometheus-gpu-exporter: kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter # 2. Add the following fields to the YAML file to tolerate the taint: #Other fields are omitted. # The tolerations field must be added above the containers field and both fields must be of the same level. tolerations: - key: "test-key" operator: "Equal" value: "test-value" effect: "NoSchedule" containers: # Irrelevant fields are not shown.
ack-arms-prometheusのリソース構成が残っているためにack-arms-prometheusの再インストールに失敗した場合はどうすればよいですか?
Managed Service for Prometheusの名前空間のみを削除した場合、リソース設定は保持されます。 この場合、ack-arms-prometheusの再インストールに失敗する可能性があります。 残りのリソース設定を削除するには、次の操作を実行します。
arms-prom名前空間を削除するには、次のコマンドを実行します。
kubectl delete namespace arms-prom
次のコマンドを実行して、関連するClusterRolesを削除します。
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
次のコマンドを実行して、関連するClusterRoleBindingsを削除します。
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
次のコマンドを実行して、関連するロールとRoleBindingsを削除します。
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
残りのリソース設定を削除した後、ACKコンソールに移動し、[操作]> [アドオン] を選択し、ack-arms-prometheusコンポーネントを再インストールします。
ack-arms-prometheusをインストールするときに「xxx in use」エラーが表示された場合はどうすればよいですか?
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけます。 次に、クラスターの名前をクリックするか、[操作] 列の [詳細] をクリックします。
クラスターの詳細ページの左側のナビゲーションウィンドウで、
を選択します。 Helmページで、ack-arms-prometheusアプリケーションが表示されているかどうかを確認します。Helmページにack-arms-prometheusアプリケーションが表示されている場合は、ack-arms-prometheusアプリケーションを削除してから、アドオンページにack-arms-prometheusをインストールします。 ack-arms-prometheusのインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
ack-arms-prometheusアプリケーションがHelmページに表示されている場合は、次の手順を実行します。
ack-arms-prometheusアプリケーションがHelmページに表示されていない場合は、ack-arms-prometheusアプリケーションが削除された後に残りのデータが存在することを示します。 残りのデータを手動で削除する必要があります。 ack-arms-prometheusに関連する残留データを削除する方法の詳細については、「Prometheusのマネージドサービスに関するFAQ」をご参照ください。
アドオンページにack-arms-prometheusをインストールします。 ack-arms-prometheusのインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
問題が解決しない場合は、 チケットを起票
してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
システムが「コンポーネントがインストールされていません」と表示された後、ack-arms-prometheusのインストールが失敗した場合はどうすればよいですか?
ack-arms-prometheusがすでにインストールされているかどうかを確認します。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけます。 次に、クラスターの名前をクリックするか、[操作] 列の [詳細] をクリックします。
ACKコンソールのクラスター詳細ページに移動し、左側のナビゲーションウィンドウで [アプリケーション] > [ヘルム] を選択します。
ack-arms-prometheusアプリケーションがHelmページに表示されているかどうかを確認します。
Helmページにack-arms-prometheusアプリケーションが表示されている場合は、Helmページでack-arms-prometheusアプリケーションを削除し、アドオンページからack-arms-prometheusをインストールします。 ack-arms-prometheusのインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
ack-arms-prometheusアプリケーションがHelmページに表示されていない場合は、次の操作を実行します。
ack-arms-prometheusアプリケーションがHelmページに表示されていない場合は、ack-arms-prometheusアプリケーションが削除された後に残りのデータが存在することを示します。 残りのデータを手動で削除する必要があります。 ack-arms-prometheusに関連する残留データを削除する方法の詳細については、「Prometheusのマネージドサービスに関するFAQ」をご参照ください。
アドオンページにack-arms-prometheusをインストールします。 ack-arms-prometheusのインストール方法の詳細については、「コンポーネントの管理」をご参照ください。
問題が解決しない場合は、 チケットを起票
してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
ack-arms-prometheusのログにエラーが報告されているかどうかを確認します。
インストールエラーがPrometheusエージェントによって報告されているかどうかを確認します。