すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Prometheusのマネージドサービスの有効化

最終更新日:Dec 16, 2024

Managed Service for Prometheusが提供する定義済みのダッシュボードで、ACKサーバーレスクラスターのメトリックを表示できます。 このトピックでは、Managed Service for Prometheus for ACKサーバーレスクラスターを有効にする方法、Managed Service for Prometheusでアラートルールを設定する方法、Managed Service for Prometheusでカスタムメトリクスを作成する方法、Grafanaを使用してカスタムメトリクスを表示する方法について説明します。

Introduction to Managed Service for Prometheus

Managed Service for Prometheusは、オープンソースのPrometheusエコシステムと連動する完全マネージド型モニタリングサービスです。 Managed Service for Prometheusは、さまざまなコンポーネントを監視し、複数の定義済みダッシュボードを提供します。

クラスターのタイプ

サポートされているプロメテウス剤

ACK Serverless Proクラスター

マネージドまたはアンマネージドのPrometheusエージェントをインストールできます。 デフォルトでは、マネージドPrometheusエージェントがインストールされます。

  • マネージドPrometheusエージェントは、基本メトリックとカスタムメトリックをサポートし、クラスターのリソースを消費しません。 エージェントを使用すると、Managed Service for PrometheusはACK Serverless Proクラスター内のコンテナーからモニタリングデータを直接収集でき、Managed Service for Prometheusが提供する既存の機能を使用できます。 収集されたデータのデフォルトの保存期間は7日です。

  • Unmanaged Prometheusエージェントは基本的なメトリックをサポートしており、メトリック収集コンポーネントやKube-State-metricsなどの一連のコンポーネントをデプロイする必要があります。 アンマネージドPrometheusエージェントがデプロイされているポッドには、3つのCPUコアと4 GBのメモリが必要です。 収集されたデータのデフォルトの保存期間は7日です。 アンマネージドPrometheusエージェントを実行するには、少なくとも2つのエラスティックコンテナインスタンスを起動する必要があります。 エラスティックコンテナインスタンスの料金の詳細については、「エラスティックコンテナインスタンスの概要」をご参照ください。

ACK Serverless Basicクラスター

アンマネージドPrometheusエージェントのみをインストールできます。 アンマネージドPrometheusエージェントがデプロイされているポッドには、3つのCPUコアと4 GBのメモリが必要です。 収集されたデータのデフォルトの保存期間は7日です。

Managed Service for Prometheusは、管理されたPrometheusモニタリングシステムを提供します。これにより、データストレージ、データ表示、システムメンテナンスなどの基盤となるサービスを管理する手間を省きます。 Prometheus向けマネージドサービスの詳細については、「Prometheus向けマネージドサービスの概要」をご参照ください。

手順1: Prometheusのマネージドサービスの有効化

クラスター作成時にPrometheusのマネージドサービスを有効にする

[コンポーネント設定] ウィザードページで、[Prometheusのマネージドサービスの有効化] を選択します。 詳細については、「ACKサーバーレスクラスターの作成」をご参照ください。

image.png

説明

デフォルトでは、クラスターの作成時にEnable Managed Service for Prometheusが選択されています。 クラスターの作成後、システムは自動的にManaged Service for Prometheusを設定します。

管理対象のPrometheusエージェントがクラスターに自動的にインストールされます。 アンマネージドPrometheusエージェントを使用する場合は、クラスターの詳細ページに移動し、左側のナビゲーションウィンドウで [操作]> [アドオン] を選択します。 アドオンページで、ack-arms-prometheusをアンインストールします。 次に、ack-arms-prometheusのアンマネージドバージョンが表示され、インストールに使用できます。

説明

ack-arms-prometheusが表示されない場合、ACKサーバーレスクラスターがデプロイされているリージョンでは、マネージドサービスfor Prometheusがサポートされていないことを意味します。

image.png

既存のクラスターに対するPrometheusのマネージドサービスの有効化

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[操作] > [Prometheusモニタリング] を選択します。

  3. Prometheusモニタリングページで、画面の指示に従って必要なコンポーネントをインストールし、関連するダッシュボードを確認します。

    システムは自動的にコンポーネントをインストールし、ダッシュボードをチェックします。 インストールが完了したら、各タブをクリックしてメトリクスを表示できます。

ステップ2: マネージドサービスfor Prometheusが提供するGrafanaダッシュボードを表示する

ACKコンソール[Prometheusモニタリング] ページで、異なるGrafanaダッシュボードをクリックして、異なるモニタリングデータを表示できます。

手順3: (オプション) PrometheusのManaged Serviceでアラートルールを設定する

Managed Service for Prometheusを使用すると、ジョブを監視するためのアラートルールを作成できます。 アラートルールが満たされると、リアルタイムでメール、テキストメッセージ、DingTalk通知でアラートを受信できます。 これにより、プロアクティブな方法でエラーを検出できます。 アラートルールが満たされると、指定した連絡先グループに通知が送信されます。 連絡先グループを作成する前に、連絡先を作成する必要があります。 連絡先を作成するときは、連絡先の携帯電話番号と電子メールアドレスを指定して通知を受け取ることができます。 アラート通知を自動的に送信するために使用されるDingTalkチャットボットwebhook URLを提供することもできます。

1: 連絡先の作成

  1. 最初に

    Prometheusコンソールのマネージドサービス[Managed Service for Prometheus] ページの左上隅で、クラスターがデプロイされているリージョンを選択します。

  2. 左側のナビゲーションウィンドウで、[アラート管理]> [通知オブジェクト] を選択します。

  3. On the連絡先タブをクリックします。連絡先の作成.

  4. 画面の指示に従って、連絡先情報を指定します。

    詳細については、「連絡先」をご参照ください。

2: アラートルールの設定

  1. 最初に

    Prometheusのマネージドサービスコンソール。 左側のナビゲーションウィンドウで、[インスタンス] をクリックします。

  2. 表示されるページの上部で、クラスターがデプロイされているリージョンを選択します。 クラスターで使用されているPrometheusインスタンスの名前をクリックして、インスタンスの詳細ページに移動します。

  3. インスタンス詳細ページの左側のナビゲーションウィンドウで、[アラートルール] をクリックします。 [Prometheusアラートルール] ページで、アラートルールを選択し、[操作] 列の [編集] をクリックしてアラートルールを変更します。 ルールを変更した後、[保存] をクリックして、メトリックのアラートルールをすばやく作成します。

    詳細については、「Prometheusインスタンスのアラートルールの作成 (新しいコンソールバージョンの場合) 」または「アラートルールの作成 (古いコンソールバージョンの場合) 」をご参照ください。

ステップ4: カスタムメトリクスを作成し、Grafanaを使用してメトリクスを表示する

注釈を追加してカスタムメトリックを作成し、デフォルトのサービス検出機能を使用してメトリックを収集できます。 または、ServiceMonitorsを使用してカスタムメトリックを作成し、Serviceラベルを使用してメトリックを収集することもできます。

ポッド注釈

配置のテンプレートに注釈を追加して、カスタムメトリックを定義できます。 Managed Service for Prometheusは、デフォルトのサービス検出機能を使用して、ポッドからカスタムメトリックを自動的に収集します。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード]> [デプロイ] を選択します。 画面上の指示に従ってワークロードを作成します。

    次の例は、配置のパラメーターを設定する方法を示しています。 詳細については、「イメージからステートレスアプリケーションを作成する」をご参照ください。

    1. [クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード]> [デプロイ] を選択します。

    2. [デプロイメント] ページで、[イメージから作成] をクリックします。 [基本情報] ウィザードページで、アプリケーションの基本情報を指定し、[次へ] をクリックします。

    3. [コンテナー] ウィザードページで、コンテナーイメージと必要なリソースを指定し、webアプリケーションを作成してポート5000を公開し、[次へ] をクリックします。

      • Name: この例では、yejianhonghong/pindex:latestが指定されています。

      • ポート: この例では、ポート名はweb、ポート番号は5000、プロトコルはTCPに設定されています。

    4. [詳細] ページで、サービスを作成し、ポッドの注釈を追加します。

      • サービスを作成します。

        [サービス] セクションで、[作成] をクリックし、サービスを設定します。

        サービスの作成方法の詳細については、「サービスの作成」をご参照ください。

        パラメーター

        説明

        Name

        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によってスクレイピングされることを指定します。

    5. [作成] をクリックしてアプリケーションを作成します。

  3. カスタムメトリックを設定します。

    1. 最初に

      Prometheusコンソールのマネージドサービス

    2. [インスタンス] ページの上部で、クラスターがデプロイされているリージョンを選択します。 クラスターで使用されているPrometheusインスタンスの名前をクリックして、インスタンスの詳細ページに移動します。

    3. インスタンスの詳細ページの左側のナビゲーションウィンドウで、[サービスの検出] をクリックします。 次に、[設定] タブをクリックし、ServiceMonitorとPodMonitorの設定を追加して、Prometheusメトリック収集ルールを定義します。

      カスタムメトリクスの設定方法の詳細については、「ACKサービスの検出」をご参照ください。

    4. 上記の操作が完了したら、[ターゲット] タブをクリックして、カスタムメトリックが設定されているかどうかを確認します。

      自定义指标

サービスラベル

ServiceMonitorsを使用してカスタムメトリックを作成するには、ポッド注釈を追加する代わりに、サービスラベルを追加する必要があります。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード]> [デプロイ] を選択します。 画面上の指示に従ってワークロードを作成します。

    次の例は、配置のパラメーターを設定する方法を示しています。 詳細については、「イメージからステートレスアプリケーションを作成する」をご参照ください。

    1. [クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード]> [デプロイ] を選択します。

    2. [デプロイメント] ページで、[イメージから作成] をクリックします。 [基本情報] ウィザードページで、アプリケーションの基本情報を指定し、[次へ] をクリックします。

    3. [コンテナー] ウィザードページで、コンテナーイメージと必要なリソースを指定し、webアプリケーションを作成してポート5000を公開し、[次へ] をクリックします。

      • Name: この例では、yejianhonghong/pindex:latestが指定されています。

      • ポート: この例では、ポート名はweb、ポート番号は5000、プロトコルはTCPに設定されています。

    4. [詳細] ページで、[サービス] セクションの [作成] をクリックし、サービスを設定します。

      サービスの作成方法の詳細については、「サービスの作成」をご参照ください。

      パラメーター

      説明

      Name

      custom-metrics-pindexなどのカスタム名を指定できます。

      サービスタイプ

      Server Load Balancerとパブリックアクセスを選択します。

      ポートマッピング

      [名前] 、[サービスポート] 、[コンテナポート] フィールドを設定します。 たとえば、Nameをweb、Service Portを5000、Container Portを5000に設定します。

      ラベル

      ラベルを追加します。 たとえば、キーをappに設定し、値をcustom-metrics-pindexに設定します。 このラベルは、ServiceMonitorsによってセレクタとして使用されます。

    5. [作成] をクリックしてアプリケーションを作成します。

  3. カスタムメトリックを設定します。 Prometheusのマネージドサービスがスクレイピングするエンドポイントを使用します。

    1. 最初に

      Prometheusコンソールのマネージドサービス

    2. [Prometheusのマネージドサービス] ページの左上隅で、クラスターがデプロイされているリージョンを選択し、対応するPrometheusインスタンスの名前をクリックしてインスタンスの詳細ページに移動します。

    3. インスタンスの詳細ページの左側のナビゲーションウィンドウで、[サービスの検出] をクリックします。 次に、[設定] タブをクリックし、[設定] タブの [ServiceMonitor] をクリックします。

    4. [ServiceMonitor] タブで、[ServiceMonitorの追加] をクリックします。 [ServiceMonitorの追加] ダイアログボックスで、ServiceMonitorを設定し、[OK] をクリックします。

      カスタムメトリクスの設定方法の詳細については、「ACKサービスの検出」をご参照ください。

      YAMLコンテンツの表示

      apiVersion: monitoring.coreos.com/v1
      kind: ServiceMonitor
      metadata:
        # Specify a unique name. 
        name: custom-metrics-pindex
        # Specify a namespace. 
        namespace: default
      spec:
        endpoints:
        - interval: 30s
          # Specify the name of the port specified in the service.yaml file. 
          port: web
          # Specify the path of the Service. 
          path: /access
        namespaceSelector:
          any: true
          # The namespace to which the NGINX demo application belongs. 
        selector:
          matchLabels:
            # Specify the label specified in the service.yaml file. 
            app: custom-metrics-pindex
    5. [ターゲット] タブに、PrometheusのManaged Serviceがスクレイピングするエンドポイントが表示されます。

      Scape Endpioint

      説明

      注釈を追加してカスタムメトリックを作成する方法と比較して、この方法は、サービスの名前空間と名前を含むより多くの情報を提供します。

  4. メトリックを選択し、[エンドポイント] 列のハイパーリンクをクリックして、メトリック値を増やします。

    メトリクスの設定方法の詳細については、「データモデル」をご参照ください。

    image

    image

よくある質問

ack-arms-prometheusコンポーネントのバージョンを確認するにはどうすればよいですか?

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. On theアドオンページをクリックし、ログとモニタリングタブを検索し、ack-arms-プロメテウスコンポーネントを使用します。

    バージョン番号はコンポーネントの下部に表示されます。 新しいバージョンが利用可能な場合は、右側の [アップグレード] をクリックしてコンポーネントを更新します。

    説明

    [アップグレード] ボタンは、コンポーネントが最新バージョンに更新されていない場合にのみ表示されます。

Managed Service for PrometheusがGPUアクセラレーションノードを監視できないのはなぜですか?

説明

この問題は、アンマネージPrometheusエージェントにのみ関連しています。

Managed Service for Prometheusは、テイントで構成されているGPU高速化ノードを監視できない場合があります。 次の手順を実行して、GPU高速化ノードの汚染を表示できます。

  1. 次のコマンドを実行して、GPUアクセラレーションノードの汚染を表示します。

    GPUアクセラレーションノードにカスタムテイントを追加した場合、カスタムテイントに関する情報を表示できます。 この例では、keytest-keyに設定され、valuetest-valueに設定され、effectNoScheduleに設定されたtaintがノードに追加されます。

    kubectl describe node cn-beijing.47.100.***.***

    期待される出力:

    Taints:test-key=test-value:NoSchedule
  2. 次のいずれかの方法を使用して、テイントを処理します。

    • 次のコマンドを実行して、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の再インストールに失敗した場合はどうすればよいですか?

説明

この問題は、アンマネージ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