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

Alibaba Cloud Service Mesh:SLO のための生成されたルールの Prometheus へのインポート

最終更新日:Aug 22, 2026

Alibaba Cloud Service Mesh (ASM) でアプリケーションレベルのサービスレベル目標 (SLO) を定義すると、一連の Prometheus ルールが自動的に生成されます。このトピックでは、これらのルールをご利用の Prometheus インスタンスにインポートして SLO を適用する方法について説明します。

前提条件

ステップ 1:Prometheus へのルールのインポート

このトピックでは、Prometheus Operator を使用して Prometheus をデプロイしたことを前提としています。このモードでは、Prometheus の構成はカスタムリソースを通じて管理されます。記録ルールとアラートルールを構成するには、PrometheusRule ラベルを持つ app: ack-prometheus-operator and release: ack-prometheus-operator オブジェクトを作成します。

説明
  • これらのラベルが必要かどうかは、ご利用の Prometheus カスタムリソースの ruleSelector 設定によって異なります。ruleSelector が空の場合、ラベルを追加する必要はありません。ご利用の環境に合わせて構成を調整してください。

  • 異なるメソッドで Prometheus をデプロイする場合、対応するメソッドを使用して生成されたルールを適用する必要があります。詳細については、公式の Prometheus ドキュメントをご参照ください。

  1. ACK コンソールから ruleSelector を取得します。

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

    2. クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > カスタムリソース をクリックします。

    3. CRD タブで、[PrometheusRule] をクリックします。

    4. リソースオブジェクト タブで、名前空間 ドロップダウンリストから [monitoring] を選択します。[ack-prometheus-operator-prometheus] の行で、アクション 列の YAML の編集 をクリックします。

    5. ruleSelector フィールドを取得します。

      次の例は、典型的な ruleSelector 構成を示しています。Prometheus Operator がご利用の PrometheusRule リソースを選択するには、リソースに matchLabels で定義されたラベルが必要です。

      ruleSelector:
        matchLabels:
          app: ack-prometheus-operator
          release: ack-prometheus-operator
  2. PrometheusRule リソースをデプロイします。

    1. 次の内容で prometheusrule.yaml という名前のファイルを作成します。

      YAML ファイルでは、labels フィールドに前のステップで取得したラベルを含める必要があります。spec フィールドには、生成された Prometheus ルールが含まれます。

      apiVersion: monitoring.coreos.com/v1
      kind: PrometheusRule
      metadata:
        labels:
          app: ack-prometheus-operator
          release: ack-prometheus-operator
        name: asm-rules
        namespace: monitoring
      spec:
        # Replace this with the content of your generated rule file.
    2. ご利用の ACK クラスターで次のコマンドを実行して、PrometheusRule リソースを適用します。

      kubectl apply -f prometheusrule.yaml
  3. ルールが適用されたことを確認します。

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

    2. クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、設定 > ConfigMap をクリックします。

    3. ConfigMap ページで、名前空間 ドロップダウンリストから [monitoring] を選択します。Prometheus 構成の行で、アクション 列の YAML の編集 をクリックします。

      PrometheusRule コントローラーは、リソースを自動的にルールに変換し、Prometheus が読み取るための ConfigMap に追加します。次の例は ConfigMap の内容を示しており、monitoring-asm-rules-fcd9bea9-22b3-462b-8786-424f74f098ec.yaml は ASM ルールファイルのキーです:

      up{job= alertmanager main,namespace= monitoring }
                  )
                )
                >= 0.5
              for: 5m
              labels:
                severity: critical
        monitoring-asm-rules-fcd9bea9-22b3-462b-8786-424f74f098ec.yaml: |
          groups:
          - name: sloth-slo-sli-recordings-httpbin-asm-slo
            rules:

ステップ 2:SLO モニタリングの検証

Prometheus でのメトリックとアラートの確認

  1. kubectl を使用して ACK クラスターに接続し、次のコマンドを実行して Prometheus サービスをローカルポートに転送します。

    kubectl --namespace monitoring port-forward svc/ack-prometheus-operator-prometheus 9090
  2. https://localhost:9090 をクリックして Prometheus コンソールにアクセスします。

  3. Prometheus UI で、式ブラウザに asm_slo_info を入力し、[実行] をクリックすると、SLO 構成を表示できます。

    クエリは結果 asm_slo_info{asm_slo="asm-slo",slo_id="httpbin-asm-slo",slo_mode="cli-gen-prom",slo_objective="99.9",slo_service="httpbin",slo_spec="prometheus/v1",slo_version="dev"} を返します。これは、Prometheus 記録ルールが正しく構成されていることを示します。

  4. ページの上部で、[アラート] をクリックしてアラートルールを表示します。

    次の 2 つのルールが存在することは、Prometheus アラートルールが正しく構成されていることを示します。asm-alert という名前の 2 つのアラートルールが表示され、両方とも [0 active] (アクティブなアラートなし) と表示されます。

シナリオ 1:通常のトラフィックのシミュレーション

  1. 次のスクリプトを実行して、成功率 99.5% のトラフィックをシミュレーションします。

    {ingress-gateway-ip} をご利用のイングレスゲートウェイの実際の IP アドレスに置き換えてください。イングレスゲートウェイの IP アドレスを取得するには、「イングレスゲートウェイ情報の表示」をご参照ください。

    #!/bin/bash
    for i in `seq 200`
    do
    if (( $i == 100 ))
    then
        curl -I http://{ingress-gateway-ip}/status/500;
    else
        curl -I http://{ingress-gateway-ip}/;
    fi
    echo "OK"
    sleep 0.01;
    done;
  2. Prometheus UI に戻り、式ブラウザに slo:period_error_budget_remaining:ratio を入力して [実行] をクリックします。 残りのエラーバジェットの変更を確認します。

    クエリを実行すると、グラフには残りのエラーバジェット率が約 1.0 から約 0.93 に急激に低下することが示され、エラーバジェットが急速に消費されていることがわかります。

    次の表は、主要な SLO メトリックについて説明しています。詳細については、「サービスレベル目標 (SLO) の概要」をご参照ください。

    メトリック

    説明

    slo:period_error_budget_remaining:ratio

    30 日間の SLO 期間の残りのエラーバジェット。

    slo:sli_error:ratio_rate30d

    30 日間の SLO 期間の平均エラーレート。

    slo:period_burn_rate:ratio

    30 日間の SLO 期間のバーンレート。

    slo:current_burn_rate:ratio

    現在のバーンレート。

シナリオ 2:エラートラフィックのシミュレーション

手動で障害をトリガーして、アラートルールをテストします。

  1. 次のスクリプトを実行して、成功率 50% のトラフィックをシミュレーションします。これはバーンレート 50 に相当します。

    {ingress-gateway-ip} をご利用のイングレスゲートウェイの実際の IP アドレスに置き換えてください。

    #!/bin/bash
    for i in `seq 200`
    do
    curl -I http://{ingress-gateway-ip}/
    curl -I http://{ingress-gateway-ip}/status/500;
    echo "OK"
    sleep 0.01;
    done;
  2. Prometheus コンソールの [アラート] ページに戻り、トリガーされたアラートを確認します。

    [アラート] ページでは、ルールファイルパス monitoring-asm-rules.yaml の下、sloth-slo-alerts-httpbin-asm-slo2 ルールグループ内に、2 つの asm-alert アラートルールがアクティブな状態 (1 active) になっています:

    • 最初のルール: sloth_severity=page、sloth_window=30m、ラベルには alertlabel="bbb"、pagelabels="ddd"、sloth_id="httpbin-asm-slo2" が含まれます。

    • 2 番目のルール: sloth_severity=ticket、sloth_window=2h、ラベルには ticketlabel="eee" が含まれます。

Alertmanager コンソールでのアラートの表示

Prometheus フレームワークでは、Alertmanager コンポーネントが Prometheus サーバーによって生成されたアラートを収集し、構成に基づいてレシーバーにルーティングします。

  1. 次のコマンドを実行して、ack-prometheus-operator-alertmanager サービスをローカルポートに転送します。

    kubectl --namespace monitoring port-forward svc/ack-prometheus-operator-alertmanager 9093
  2. https://localhost:9093 をクリックして Alertmanager コンソールにアクセスします。

  3. [Alertmanager] ページで、展開アイコン 展开 をクリックしてアラートの詳細を表示します。

    Alertmanager のアラートリストには、asm-alert タイプの 2 つのカスタムアラートが表示されます。1 つは slo_severity=page (slo_window=30m) で、もう 1 つは slo_severity=ticket (slo_window=2h) です。これは、ASM SLO アラートルールが正常にトリガーされたことを示します。