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

Compute Nest:フルマネージドサービスのモニタリングとアラート設定 - ACK デプロイソリューション

最終更新日:Sep 01, 2026

このトピックでは、サービスプロバイダーが Container Service for Kubernetes (ACK) にデプロイされた Compute Nest フルマネージドサービスのモニタリングとアラートを設定する方法を説明します。

説明

Managed Service for Prometheus の統合プロセスは、シングルテナントのフルマネージドサービス (各ユーザーが専用クラスターを持つ) と、マルチテナントのフルマネージドサービス (複数ユーザーがクラスターを共有する) のいずれでも同じです。どちらのシナリオでも、ACK クラスターで Managed Service for Prometheus を設定し、テナントメトリクスを転送します。これにより、テナントとサービスプロバイダーの双方が、サービスインスタンスのモニタリングメトリクスを確認できます。(技術サポートについては、DingTalk グループ 31045016300 にご参加ください)

仕組み

image

  • Compute Nest は、マルチテナントのモニタリングソリューションとして、Application Real-Time Monitoring Service (ARMS) の機能である Managed Service for Prometheus を使用します。

  • Managed Service for Prometheus は、組み込みのマルチテナンシーをサポートします。データ収集では、エージェントがワークロードリソース (Pod または名前空間レベル) 上の特定のテナントラベルを使用して、テナントメトリクスを区別します。その後、テナントのメトリクスは、それぞれのクラウドサービスインスタンスに転送されます。

  • ストレージは、ネイティブのマルチテナント分離を提供します。サービスプロバイダーは、各テナントのワークロードリソースに特定のテナントラベルを追加するだけで済みます。

  • Compute Nest は、マルチテナントのフルマネージドサービスインスタンスにおいて、名前空間を使用してテナントリソースを分離します。名前空間に対応するテナントラベルを追加すると、システムはテナントのメトリクスをそれぞれのクラウドサービスインスタンスへ自動的に転送します。

  • また、リモートライトを設定して、各テナントのモニタリングデータのコピーをサービスプロバイダーのアカウントに送信することもできます。これにより、サービスプロバイダーはすべてのテナントのモニタリングデータを確認でき、各テナントは自分のデータのみを確認できます。

操作手順

ステップ1:ACK 向け Managed Service for Prometheus の設定

デフォルトでは、Prometheus はメトリクスの転送をサポートしていません。特定のユーザーにアプリケーションのモニタリングメトリクスを転送するには、Managed Service for Prometheus で追加設定を行う必要があります。

シングルテナントサービス

シングルテナントのフルマネージドサービスの場合、Compute Nest はこの設定を ROS テンプレートのモジュールにカプセル化しており、そのまま使用できます。

  1. サービスを作成する際に、ROS テンプレートに次の内容を追加します。以降のセクションで、テンプレートの例とパラメーターについて説明します。

    • テンプレート例:

      ClusterArmsConfig:
        Type: 'MODULE::ACS::ComputeNest::AckArmsConfig'
        Version: v1
        Properties:
          ClusterId:
            Fn::If:
              - Condition: CreateACKCondition
              - Ref: ManagedKubernetesCluster
              - Ref: ClusterId
          WhetherSupplierNeedMetric: true
          AccessKeyID: LTAI****************
          AccessKeySecret: yourAccessKeySecret
          SupplierAliuid: 15634578xxxxxx
    • パラメーター:

      • WhetherSupplierNeedMetric:サービスプロバイダーがテナントデータを受信する必要があるかどうかを指定します。サービスプロバイダーもテナントメトリクスを受信する必要がある場合は、true に設定します。WhetherSupplierNeedMetric が true の場合は、AccessKeyID、AccessKeySecret、SupplierAliuid を設定する必要があります。SupplierAliuid はサービスプロバイダーの Alibaba Cloud アカウント UID であり、AccessKeyID と AccessKeySecret はサービスプロバイダーの AccessKey ペアです。

        重要

        最小権限の原則に従い、AccessKey (AK) には arms:GetPrometheusApiToken API を呼び出す権限のみを付与してください。これは、モニタリングシナリオにおけるデータ収集とクエリには十分です。

        {
          "Version": "1",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "arms:GetPrometheusApiToken"
              ],
              "Resource": "*"
            }
          ]
        }
      • SyncServiceMonitor: クラスター内の ServiceMonitor リソースを自動的に同期するかどうかを指定します。このオプションを使用して、監視する Service リソースを選択します。詳細については、「ServiceMonitor を使用してサービスディスカバリーを作成する」をご参照ください。

      • SyncPodMonitor:クラスター内の PodMonitor リソースを自動的に同期するかどうかを指定します。

  2. (オプション) ROS テンプレートを使用して新しい ACK クラスターを作成する場合は、次の例のように ACK リソースに Addons パラメーターを追加する必要があります。

    LoginPassword:
            Ref: LoginPassword
          SnatEntry: true
          Addons:
            - Name: flannel
              Config: ''
            - Name: arms-prometheus

マルチテナントサービス

マルチテナントのフルマネージドサービス向けに、Compute Nest は 「ACK フルマネージドマルチテナントシナリオ - コンテナインフラストラクチャのデプロイ」 サービスを提供します。このサービスのサービスインスタンスを作成して、ACK クラスターに Managed Service for Prometheus を設定します。

重要

最小権限の原則に従い、AK には arms:GetPrometheusApiToken API を呼び出す権限のみを付与してください。これは、モニタリングシナリオにおけるデータ収集とクエリには十分です。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "arms:GetPrometheusApiToken"
      ],
      "Resource": "*"
    }
  ]
}

ステップ2:ROS テンプレートの設定

  1. サービスインスタンス ID を名前として使用する名前空間を作成し、テナントラベルを追加します。

    説明

    テナントラベルのキーは tenant_userid、tenant_clusterid、tenant_token、tenant_cloudproductcode です。ROS テンプレートでは、これらの値にプレースホルダーが使用されます。名前空間自体は {{ serviceInstanceId }} プレースホルダーを使用して命名され、作成された サービスインスタンス の ID に置き換えられます。

    ClusterNameSpaceApplication:
        Type: ALIYUN::CS::ClusterApplication
        Properties:
          YamlContent:
            Fn::Sub:
              - |
                apiVersion: v1
                kind: Namespace
                metadata:
                  name: '${Name}'
                  labels:
                    tenant_userid: '{{ aliUid }}'
                    tenant_clusterid: '{{ tenantClusterId }}'
                    tenant_token: '{{ tenantToken }}'
                    tenant_cloudproductcode: '{{ tenantCloudProductCode }}'
              - Name: '{{ serviceInstanceId }}'
          ClusterId:
            Fn::If:
              - Condition: CreateACKCondition
              - Ref: ManagedKubernetesCluster
              - Ref: ClusterId
    重要

    アプリケーションのモニタリングメトリクスが正しいテナントにルーティングされるように、この手順で作成した名前空間にサービスプロバイダーのアプリケーションをデプロイしてください。

  2. (オプション) シングルテナントのフルマネージドサービスシナリオでは、ROS テンプレートの AckArmsConfig モジュールを使用して、新しく作成された各 ACK クラスターに対して Managed Service for Prometheus を設定します。

  3. (オプション) カスタムメトリクスを収集する場合は、HTTP ポート経由またはエクスポーターを使用して公開します。メトリクスを公開する Service の名前も {{ serviceInstanceId }} にする必要があり、サービスディスカバリー用に ServiceMonitor を定義する必要があります。次の例は、mysqld-exporter を使用して MySQL メトリクスを収集するための Service と ServiceMonitor を示します。

    apiVersion: v1
    kind: Service
    metadata:
      name: {{ serviceInstanceId }}
      labels:
        io.mysql.service: {{ serviceInstanceId }}
    spec:
      selector:
        app: mysql
      ports:
        - protocol: TCP
          port: 3306
          targetPort: 3306
          name: mysql
        - protocol: TCP
          port: 9104
          targetPort: 9104
          name: mysql-exporter
      type: LoadBalancer
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: prometheus-service-monitor
      annotations:
        arms.prometheus.io/discovery: 'true'
      labels:
        prometheus-service-monitor: prometheus-service-monitor
    spec:
      selector:
        matchLabels:
          io.mysql.service: {{ serviceInstanceId }}
      namespaceSelector:
        matchNames:
          - {{ serviceInstanceId }}
      endpoints:
        - port: mysql-exporter
          scheme: http
          path: /metrics
          interval: 10s
          scrapeTimeout: 10s

ステップ3:Grafana ダッシュボードの設定

各サービスインスタンスでサポートされるダッシュボードは 1 つのみです。複数のダッシュボードがある場合は、1 つのダッシュボードに統合してください。ダッシュボードは次の要件を満たす必要があります。

Namespace という名前のダッシュボード変数を作成し、アプリケーションのモニタリングメトリクスのグローバルフィルターとして使用します。Managed Service for Grafana でダッシュボードを作成し、ダッシュボードリンクを取得します。

ステップ4:製品識別子とダッシュボードリンクの設定

Compute Nest のマルチテナントのフルマネージドサービスで Managed Service for Prometheus を使用するには、製品識別子とモニタリングダッシュボード情報を設定する必要があります。

  1. 製品識別子:モニタリングシステムでサービスを一意に識別します。テストでは、共有の製品識別子 cn-mariadb を使用します。この識別子は、中国 (杭州) および中国 (香港) リージョンでテスト用として利用できます。

    説明

    本番環境では、サービスに専用の製品識別子が必要です。取得するには、このトピックの冒頭に記載した技術サポートグループに参加し、支援を依頼してください。

  2. モニタリングダッシュボードの設定には、タイトルと Grafana ダッシュボードリンクが含まれます。これらの設定は、製品識別子と 1 対 1 で対応します。

    説明

    この設定は現在、手動で行う必要があります。技術サポートグループに参加して支援を依頼してください。

  3. 次に、cn-mariadb 製品識別子を使用するサンプルサービスの設定を示します。cn-mariadb を使用する場合は、デフォルトのモニタリングダッシュボード設定を使用できます。デフォルトのモニタリングダッシュボードタイトルは MySQL Exporter Quickstart and Dashboard です。

ステップ5:アラートの設定

  1. Prometheus モニタリング用 ARMS コンソールに移動し、Prometheus アラート ルール テンプレートを作成します。 詳細については、「Prometheus アラート ルール テンプレートを作成する」をご参照ください。

  2. テンプレートを作成した後、次の手順でコンソールのネットワークリクエストから TemplateId を取得します。

    重要

    対応するネットワークリクエストは、検索フィルターを適用した後にのみ表示されます。

    アラートルールテンプレートページで、上部の [静的しきい値] ドロップダウンリストを使用してフィルタリングして検索します。その後、ブラウザーの DevTools の [Network] パネルに alert.json?action=AlertTemplateAction リクエストが表示されます。リクエストをクリックし、[Response] タブを確認します。返された JSON で id フィールド (例:d9a9fb3b-47a9-4338-84f5-93240e03b4ee) を見つけます。この値が、必要な TemplateId です。

  3. ROS テンプレートで、ALIYUN::ARMS::ApplyAlertRuleTemplate リソースを使用してアラートルールテンプレートを定義し、ACK クラスターに適用します。これにより、クラスター内に対応するアラートルールが作成されます。次の例は、ROS テンプレートのスニペットです。

    ROSTemplateFormatVersion: '2015-09-01'
    Description:
      ja: アラートルールを適用
    Parameters:
      ClusterIds:
        AssociationPropertyMetadata:
          Parameter:
            Required: true
            Type: String
            Description:
              ja: Prometheus インスタンスの ID。
        Description:
          ja: Prometheus インスタンスの ID のリスト。
        Default: Null
        MinLength: 1
        Required: false
        MaxLength: 100
        AssociationProperty: List[Parameter]
        Type: Json
      TemplateIds:
        AssociationPropertyMetadata:
          Parameter:
            Required: true
            Type: String
            Description:
              ja: Prometheus アラートルールテンプレートの ID。
        Description:
          ja: Prometheus アラートルールテンプレートの ID のリスト。
        Default: Null
        MinLength: 1
        Required: false
        MaxLength: 100
        AssociationProperty: List[Parameter]
        Type: Json
    Resources:
      ApplyAlertRuleTemplate:
        Type: ALIYUN::ARMS::ApplyAlertRuleTemplate
        Properties:
          ClusterIds:
            Ref: ClusterIds
          TemplateIds:
            Ref: TemplateIds

ステップ6:モニタリングデータの確認

サービスインスタンスのデプロイ後、テナントとサービスプロバイダーの双方が、サービスインスタンスの詳細ページでモニタリングダッシュボードを確認できます。

  • テナントビュー:image

  • サービスプロバイダービュー:image