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

Alibaba Cloud Service Mesh:ASM でアプリケーションの SLO を構成する

最終更新日:Jan 14, 2025

アプリケーションのサービスレベルを管理および監視する必要がある場合は、Service Mesh(ASM)コンソールでサービスレベル目標(SLO)とアラートルールを構成して、アプリケーションが期待どおりに実行されるようにすることができます。アプリケーションのサービスレベルが事前に設定されたしきい値以下になると、ASM は障害の重大度に基づいてさまざまなレベルのリマインダーを発行します。これにより、アプリケーションのサービスレベルをより効率的に管理し、問題をより迅速に処理できます。

前提条件

手順 1:HTTPBin アプリケーションをデプロイする

  1. 次の内容を含む httpbin.yaml ファイルを作成します。

    展開して httpbin.yaml ファイルを表示する

    ##################################################################################################
    # httpbin サービス
    ##################################################################################################
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      labels:
        app: httpbin
        service: httpbin
    spec:
      ports:
      - name: http
        port: 8000
        targetPort: 80
      selector:
        app: httpbin
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
          version: v1
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          serviceAccountName: httpbin
          containers:
          - image: docker.io/kennethreitz/httpbin
            imagePullPolicy: IfNotPresent
            name: httpbin
            ports:
            - containerPort: 80
  2. kubectl を使用して ACK クラスターに接続し、次のコマンドを実行して HTTPBin アプリケーションをデプロイします。

    kubectl を使用して ACK クラスターに接続する方法の詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。

    kubectl apply -f httpbin.yaml

手順 2:仮想サービスと Istio ゲートウェイを作成する

  1. 次の内容を含む httpbin-gateway.yaml ファイルを作成します。

    展開して httpbin-gateway.yaml ファイルを表示する

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: httpbin-gateway
    spec:
      selector:
        istio: ingressgateway
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "*"
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: httpbin
    spec:
      hosts:
      - "*"
      gateways:
      - httpbin-gateway
      http:
      - route:
        - destination:
            host: httpbin
            port:
              number: 8000
  2. kubectl を使用して ASM インスタンスに接続し、次のコマンドを実行して仮想サービスと Istio ゲートウェイをデプロイします。

    kubectl を使用して ASM インスタンスに接続する方法の詳細については、「コントロールプレーンで kubectl を使用して Istio リソースにアクセスする」をご参照ください。

    kubectl apply -f httpbin-gateway.yaml
  3. ブラウザーのアドレスバーに http://{イングレスゲートウェイの IP アドレス} と入力します。

    イングレスゲートウェイの IP アドレスを取得する方法の詳細については、「Istio リソースを使用してトラフィックをサービスの異なるバージョンにルーティングする」をご参照ください。 HTTPBin アプリケーションのページが表示された場合は、HTTPBin アプリケーションが正常にデプロイされています。

手順 3:SLO を構成する

この例では、デフォルトの名前空間の HTTPBin アプリケーションに対して SLO を構成して、サービスの可用性を指定します。目標は 99% で、SLO が有効になる期間は 30 日です。 2 つの重大度レベルのアラート(ページとチケット)が構成されています。 SLO 関連の概念の詳細については、「SLO の概要」をご参照ください。

  1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[可観測性管理センター] > [SLO 構成] を選択します。

  3. [SLO 構成] ページの上部にある 既定[名前空間] ドロップダウンリストから 作成httpbin 名前空間を選択し、 サービスの [アクション] 列にある をクリックします。

  4. [基本情報] セクションの [作成] ページで、[期間][30d] に設定します。

  5. [SLO ルール] タブをクリックします。 [名前]asm-slo に、[プラグインタイプ][可用性] に、[目標]99 に設定します。 [アラートルールを有効にする] をオンにし、[アラートルール名]asm-alert に設定します。 [チケットレベルのアラートルールを有効にする][ページレベルのアラートルールを有効にする] をオンにします。SLO配置

  6. (オプション)ページの下部にある [プレビュー] をクリックして構成を表示します。構成が正しいことを確認し、[送信] をクリックします。

    構成ファイルのフィールドの詳細については、「SLO CRD フィールドの説明」をご参照ください。

  7. ページの下部にある [作成] をクリックします。

手順 4:自動生成された Prometheus ルールを表示する

SLO を構成した後、次の操作を実行して、自動生成された Prometheus ルールを表示できます。 [SLO 構成] ページで [httpbin] サービスを見つけ、[アクション] 列の [prometheus ルールを表示] をクリックします。

查看Promethe规则

展開して Prometheus ルールのサンプルを表示する

groups:
- name: asm-slo-sli-recordings-httpbin-asm-slo
  rules:
  - record: slo:sli_error:ratio_rate5m
    expr: "(\n(\n  sum(rate(istio_requests_total{ destination_service_name=\"httpbin\",destination_service_namespace=\"default\",response_code=~\"(5..|429)\"
      }[5m])) \n  /          \n  (sum(rate(istio_requests_total{ destination_service_name=\"httpbin\",destination_service_namespace=\"default\"
      }[5m])) > 0)\n) OR on() vector(0)\n)"
    labels:
      asm_slo: asm-slo
      slo_id: httpbin-asm-slo
      slo_service: httpbin
      slo_window: 5m
  # ... (Prometheus ルールの残りの部分) ...

次の手順

生成された Prometheus ルールを Prometheus システムにインポートして SLO を有効にし、Grafana を使用して SLO 関連のメトリックを表示できます。詳細については、「生成された Prometheus ルールを Prometheus システムにインポートして SLO を有効にする」および「Grafana を使用して SLO を表示する」をご参照ください。