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には、ベーシックエディションとProエディションの2つのコンテナーモニタリングエディションがあります。
Basic edition: このエディションでは、アンマネージドのPrometheusエージェントを使用して、コンテナから基本メトリックを収集します。 アンマネージドPrometheusエージェントがデプロイされているポッドは、3つのCPUコアと4 GBのメモリを要求します。 このエディションで収集されるメトリクスのデフォルトの保持期間は7日です。
Proエディション: このエディションでは、マネージド型のPrometheusエージェントを使用して、コンテナから基本メトリックとカスタムメトリックを収集します。 マネージドPrometheusエージェントは、クラスターのリソースを消費しません。 このエディションで収集されるメトリクスのデフォルトの保持期間は90日です。
Managed Service for Prometheusは、管理されたPrometheusモニタリングシステムを提供します。これにより、データストレージ、データ表示、システムメンテナンスなどの基盤となるサービスを管理する手間を省きます。 Prometheus向けマネージドサービスの詳細については、「Prometheus向けマネージドサービスの概要」をご参照ください。
課金
基本メトリック
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に関連するメトリックが収集されます。
詳細なスケジューリングのために基本モニタリングまたはResource profilingを有効にすると、ack-koordinatorに関連するメトリックが収集されます。
重要収集したメトリクスの保持期間を変更したり、カスタムメトリクスを収集したりすると、追加料金が発生します。 メトリックの保持期間を変更する方法の詳細については、メトリックデータの保持期間を変更するにはどうすればよいですか? Prometheusのマネージドサービスの課金ルールの詳細については、「課金の概要」をご参照ください。
Grafanaのマネージドサービス
既定では、Managed Service for Prometheusによって収集されたメトリックを表示するために、Managed Service for Grafana Shared Editionが使用されます。 Managed Service For Grafanaの課金ルールの詳細については、「課金ルール」をご参照ください。
手順1: Prometheusのマネージドサービスの有効化
新しいクラスターで
[コンポーネント設定] ウィザードページで、[Prometheusのマネージドサービスの有効化] を選択します。 詳細については、「マネージド Kubernetes クラスターの作成」をご参照ください。
デフォルトでは、クラスターの作成時にEnable Managed Service for Prometheusが選択されています。 クラスターの作成後、システムは自動的にManaged Service for Prometheusを設定します。
既存のクラスターで
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
Prometheusモニタリングページで、画面の指示に従って必要なコンポーネントをインストールし、関連するダッシュボードを確認します。
システムは自動的にコンポーネントをインストールし、ダッシュボードをチェックします。 インストールが完了したら、各タブをクリックしてメトリクスを表示できます。
ステップ2: マネージドサービスfor Prometheusが提供するGrafanaダッシュボードを表示する
ACKコンソールの [Prometheusモニタリング] ページで、異なるGrafanaダッシュボードをクリックして、異なるモニタリングデータを表示できます。
手順3: (オプション) PrometheusのManaged Serviceでアラートルールを設定する
Managed Service for Prometheusを使用すると、ジョブを監視するためのアラートルールを作成できます。 アラートルールが満たされると、リアルタイムでメール、テキストメッセージ、DingTalk通知でアラートを受信できます。 これにより、プロアクティブな方法でエラーを検出できます。 アラートルールが満たされると、指定した連絡先グループに通知が送信されます。 連絡先グループを作成する前に、連絡先を作成する必要があります。 連絡先を作成するときは、連絡先の携帯電話番号と電子メールアドレスを指定して通知を受け取ることができます。 アラート通知を自動的に送信するために使用されるDingTalkチャットボットwebhook URLを提供することもできます。
1: 連絡先の作成
最初に Prometheusコンソールのマネージドサービス。 [Managed Service for Prometheus] ページの左上隅で、クラスターがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、[アラート管理]> [通知オブジェクト] を選択します。
On the連絡先タブをクリックします。連絡先の作成.
画面の指示に従って、連絡先情報を指定します。
詳細については、「連絡先」をご参照ください。
2: アラートルールの設定
最初に Prometheusのマネージドサービスコンソール。 左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
表示されるページの上部で、クラスターがデプロイされているリージョンを選択します。 クラスターで使用されているPrometheusインスタンスの名前をクリックして、インスタンスの詳細ページに移動します。
インスタンス詳細ページの左側のナビゲーションウィンドウで、[アラートルール] をクリックします。 [Prometheusアラートルール] ページで、アラートルールを選択し、[操作] 列の [編集] をクリックしてアラートルールを変更します。 ルールを変更した後、[保存] をクリックして、メトリックのアラートルールをすばやく作成します。
詳細については、「Prometheusインスタンスのアラートルールの作成 (新しいコンソールバージョンの場合) 」または「アラートルールの作成 (古いコンソールバージョンの場合) 」をご参照ください。
(オプション) 手順4: カスタムメトリクスを作成し、Grafanaを使用してメトリクスを表示する
注釈を追加してカスタムメトリクスを作成し、デフォルトのサービス検出機能を使用してメトリクスを収集する
配置のテンプレートに注釈を追加して、カスタムメトリックを定義できます。 Managed Service for Prometheusは、デフォルトのサービス検出機能を使用して、ポッドからカスタムメトリックを自動的に収集します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
アプリケーションを作成します。
展開の作成方法の詳細については、「展開の作成」をご参照ください。
[クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード]> [デプロイ] を選択します。
[デプロイメント] ページで、[イメージから作成] をクリックします。 [基本情報] ウィザードページで、アプリケーションの基本情報を指定し、[次へ] をクリックします。
[コンテナー] ウィザードページで、コンテナーイメージと必要なリソースを指定し、webアプリケーションを作成してポート5000を公開し、[次へ] をクリックします。
Name: この例では、
yejianhonghong/pindex:latest
が指定されています。ポート: この例では、ポート名は
web
、ポート番号は5000
、プロトコルはTCP
に設定されています。
[詳細] ページで、サービスを作成し、ポッドの注釈を追加します。
サービスを作成します。
[サービス] セクションで、[作成] をクリックし、サービスを設定します。
サービスの作成方法の詳細については、「サービスの作成」をご参照ください。
パラメーター
説明
名前
custom-metrics-pindex
などのカスタム名を指定できます。サービスタイプ
Server Load Balancerとパブリックアクセスを選択します。
ポートマッピング
[名前] 、[サービスポート] 、[コンテナポート] フィールドを設定します。 たとえば、Nameを
web
、Service Portを5000
、Container Portを5000
に設定します。[ポッド注釈] セクションで、[追加] をクリックして、次のポッド注釈を追加します。
prometheus.io/scrap
アノテーションを追加し、値をtrue
に設定します。 これにより、Managed Service for Prometheusはメトリックをスクレイピングできます。prometheus.io/port
アノテーションを追加し、値を5000
に設定します。 これは、エンドポイントポート5000
がマネージドサービスfor Prometheusによってスクレイピングされることを指定します。prometheus.io/path
アノテーションを追加し、値を/access
に設定します。 これは、エンドポイントパス/アクセス
がPrometheusのManaged Serviceによってスクレイピングされることを指定します。
[作成] をクリックしてアプリケーションを作成します。
カスタムメトリックを設定します。
[インスタンス] ページの上部で、クラスターがデプロイされているリージョンを選択します。 クラスターで使用されているPrometheusインスタンスの名前をクリックして、インスタンスの詳細ページに移動します。
インスタンスの詳細ページの左側のナビゲーションウィンドウで、[サービスの検出] をクリックします。 次に、[設定] タブをクリックし、ServiceMonitorとPodMonitorの設定を追加して、Prometheusメトリック収集ルールを定義します。
カスタムメトリクスの設定方法の詳細については、「ACKサービスの検出」をご参照ください。
上記の操作が完了したら、[ターゲット] タブをクリックして、カスタムメトリックが設定されているかどうかを確認します。
メトリックを選択し、[エンドポイント] 列のハイパーリンクをクリックして、メトリック値を増やします。
メトリクスの設定方法の詳細については、「データモデル」をご参照ください。
Grafanaを使用してカスタムメトリックを表示します。
の [インスタンス] ページに移動します。 Managed Service for Prometheusコンソールをクリックし、クラスターで使用されているPrometheusインスタンスの名前をクリックして、インスタンスの詳細ページに移動します。
左側のナビゲーションウィンドウで、[ダッシュボード] をクリックします。 任意のダッシュボードをクリックしてGrafanaにログインします。 次に、右上隅のをクリックし、[新しいパネルを追加] をクリックします。
データソースとしてACKクラスターを選択し、PromQLステートメントを入力します。 たとえば、[Code] モードを選択し、[Metrics] を
[current_person_counts]
に設定します。
設定を保存して、カスタムメトリックのGrafanaチャートを表示します。
ServiceMonitorsを使用してカスタムメトリクスを作成し、Serviceラベルを使用してメトリクスを収集する
ServiceMonitorsを使用してカスタムメトリックを作成するには、ポッド注釈を追加する代わりに、サービスラベルを追加する必要があります。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
アプリケーションを作成します。
[クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード]> [デプロイ] を選択します。
[デプロイメント] ページで、[イメージから作成] をクリックします。 [基本情報] ウィザードページで、アプリケーションの基本情報を指定し、[次へ] をクリックします。
[コンテナー] ウィザードページで、コンテナーイメージと必要なリソースを指定し、webアプリケーションを作成してポート5000を公開し、[次へ] をクリックします。
Name: この例では、
yejianhonghong/pindex:latest
が指定されています。ポート: この例では、ポート名は
web
、ポート番号は5000
、プロトコルはTCP
に設定されています。
[詳細] ページで、[サービス] セクションの [作成] をクリックし、サービスを設定します。
サービスの作成方法の詳細については、「サービスの作成」をご参照ください。
パラメーター
説明
名前
custom-metrics-pindex
などのカスタム名を指定できます。サービスタイプ
Server Load Balancerとパブリックアクセスを選択します。
ポートマッピング
[名前] 、[サービスポート] 、[コンテナポート] フィールドを設定します。 たとえば、Nameを
web
、Service Portを5000
、Container Portを5000
に設定します。ラベル
ラベルを追加します。 たとえば、キーを
app
に設定し、値をcustom-metrics-pindex
に設定します。 このラベルは、ServiceMonitorsによってセレクタとして使用されます。[作成] をクリックしてアプリケーションを作成します。
カスタムメトリックを設定します。 Prometheusのマネージドサービスがスクレイピングするエンドポイントを使用します。
[Prometheusのマネージドサービス] ページの左上隅で、クラスターがデプロイされているリージョンを選択し、対応するPrometheusインスタンスの名前をクリックしてインスタンスの詳細ページに移動します。
インスタンスの詳細ページの左側のナビゲーションウィンドウで、[サービスの検出] をクリックします。 次に、[設定] タブをクリックし、[設定] タブの [ServiceMonitor] をクリックします。
[ServiceMonitor] タブで、[ServiceMonitorの追加] をクリックします。 [ServiceMonitorの追加] ダイアログボックスで、ServiceMonitorを設定し、[OK] をクリックします。
カスタムメトリクスの設定方法の詳細については、「ACKサービスの検出」をご参照ください。
[ターゲット] タブに、PrometheusのManaged Serviceがスクレイピングするエンドポイントが表示されます。
説明注釈を追加してカスタムメトリックを作成する方法と比較して、この方法は、サービスの名前空間と名前を含むより多くの情報を提供します。
メトリックを選択し、[エンドポイント] 列のハイパーリンクをクリックして、メトリック値を増やします。
メトリクスの設定方法の詳細については、「データモデル」をご参照ください。
Grafanaを使用してカスタムメトリックを表示します。
[Prometheusのマネージドサービス] ページの左上隅で、クラスターがデプロイされているリージョンを選択し、クラスターで使用されているPrometheusインスタンスの名前をクリックして、インスタンスの詳細ページに移動します。
左側のナビゲーションウィンドウで、[ダッシュボード] をクリックします。 任意のダッシュボードをクリックしてGrafanaにログインします。 次に、右上隅のをクリックし、[新しいパネルを追加] をクリックします。
データソースとしてACKクラスターを選択し、PromQLステートメントを入力します。 たとえば、
[Code]
モードを選択し、[Metrics] を[current_person_counts]
に設定します。
設定を保存して、カスタムメトリックの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が表示されている場合は、次の手順を実行します。
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のインストールが失敗した場合はどうすればよいですか?
ack-arms-prometheusがすでにインストールされているかどうかを確認します。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけます。 次に、クラスターの名前をクリックするか、[操作] 列の [詳細] をクリックします。
ACKコンソールのクラスター詳細ページに移動し、左側のナビゲーションウィンドウで [アプリケーション] > [ヘルム] を選択します。
Helmページにack-arms-prometheusが表示されているかどうかを確認します。
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がHelmページに表示されていない場合は、ack-arms-prometheusが削除された後に残りのデータが存在することを示します。 残りのデータを手動で削除する必要があります。 ack-arms-prometheusに関連する残留データを削除する方法の詳細については、「Prometheusのマネージドサービスに関するFAQ」をご参照ください。
アドオンページにack-arms-prometheusをインストールします。 ack-arms-prometheusのインストール方法の詳細については、「システムコンポーネントのアップグレード」をご参照ください。
問題が解決しない場合は、 チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
ack-arms-prometheusのログにエラーが報告されているかどうかを確認します。
インストールエラーがPrometheusエージェントによって報告されているかどうかを確認します。