Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Definir SLOs de serviço de aplicativo com o ASM

Última atualização: Jun 28, 2026

Este tópico descreve como definir Service Level Objectives (SLOs) de aplicativo usando o ASM.

Pré-requisitos

Contexto

Um Service Level Objective (SLO) é um valor alvo ou intervalo de valores para um nível de serviço, medido por um ou mais Service Level Indicators (SLIs). É possível definir SLOs manualmente com base em métricas do Prometheus, mas esse processo pode ser complexo. O ASM simplifica essa tarefa ao permitir a geração de SLOs e das regras de alerta correspondentes diretamente pelo console do ASM. Para mais informações, consulte Visualize geral do Service Level Objective (SLO) e Referência de campos CRD de SLO.

Preparações

Implante o aplicativo httpbin em um cluster ACK e configure seu serviço virtual e as regras de gateway.

Implantar o httpbin em um cluster ACK

  1. Crie o arquivo httpbin.yaml com o conteúdo a seguir.

    ##################################################################################################
    # httpbin service
    ##################################################################################################
    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. Conecte-se ao cluster ACK usando kubectl para gerencie o cluster e seus aplicativos. Para mais informações, consulte Conectar-se a um cluster usando kubectl.

  3. Execute o comando a seguir para implantar o httpbin no cluster ACK.

    kubectl apply -f httpbin.yaml

Configure regras de serviço virtual e gateway

  1. Crie o arquivo httpbin-gateway.yaml com o conteúdo a seguir.

    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. Conecte-se à instância do ASM usando kubectl para gerenciá-la. Para mais informações, consulte Usar kubectl no plano de controle para acessar recursos do Istio.

  3. Execute o comando a seguir para implantar o serviço virtual e as regras de gateway.

    kubectl apply -f httpbin-gateway.yaml
  4. Na barra de endereços do navegador, insira http://{endereço IP do serviço de gateway de entrada}.

    A página do aplicativo httpbin será exibida, indicando que a implantação foi bem-sucedida.

Defina a configuração de SLO

Esta seção demonstra como crie um SLO de disponibilidade de serviço para o serviço httpbin no namespace default, com valor alvo de 99%, duração de 30 dias e dois níveis de alerta: Page e Ticket.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha Observability Management Center > SLO Configuration.

  3. Na página SLO Configuration, selecione o Namespace do serviço alvo. Neste exemplo, o namespace é default. Na linha do serviço httpbin, clique em Create.

  4. Na página Create, na seção Basic Information, selecione 30 days para Duration.

  5. Clique em na aba SLO Rule. Defina Name como asm-slo, Target como 99 e Plugin Type como availability. Ative a chave Enable Alert Rule, defina Alert Rule Name como asm-alert e ative as chaves Enable Page-level Alert Rule e Enable Ticket-level Alert Rule. Na seção Basic Information, selecione default para Namespace, insira httpbin para , e defina como .

  6. Opcional: Na parte inferior da página, clique em Preview para revisar a configuração. Após confirme que as informações estão corretas, clique em Confirm.

    Para mais informações sobre os campos no arquivo de configuração, consulte

    Referência de campos CRD de SLO

    .

  7. Ao concluir, clique em Create na parte inferior da página.

Regras do Prometheus geradas automaticamente

Após configure o SLO, retorne à página

SLO Configuration

. Na linha do serviço

httpbin

, clique em

View Prometheus Rule

na coluna

Actions

para visualize as regras geradas.

---
# Code generated by Alibaba Cloud Service Mesh (ASM).
# DO NOT EDIT.

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_naxxx\n      }[5m])) \n  /        \n  (sum(rate(istio_requests_total{ destination_service_name=\"httpbin\",destinaxxx\n      }[5m])) > 0)\n) OR on() vector(0)\n)"
    labels:
      asm_slo: asm-slo
      slo_id: httpbin-asm-slo
      slo_service: httpbin
      slo_window: 5m
  - record: slo:sli_error:ratio_rate30m
    expr: "(\n(\n  sum(rate(istio_requests_total{ destination_service_name=\"httpbin\",destination_service_naxxx\n      }[30m])) \n  /        \n  (sum(rate(istio_requests_total{ destination_service_name=\"httpbin\",destinaxxx\n      }[30m])) > 0)\n) OR on() vector(0)\n)"
    labels:
      asm_slo: asm-slo
      slo_id: httpbin-asm-slo
      slo_service: httpbin
      slo_window: 30m
  - record: slo:sli_error:ratio_rate1h
    expr: "(\n(\n  sum(rate(istio_requests_total{ destination_service_name=\"httpbin\",destination_service_naxxx\n      }[1h])) \n  /        \n  (sum(rate(istio_requests_total{ destination_service_name=\"httpbin\",destinaxxx\n      }[1h])) > 0)\n) OR on() vector(0)\n)"
    labels:
      asm_slo: asm-slo

Importe essas regras para o Prometheus para aplicar os SLOs. Para mais informações, consulte Importar regras geradas para o Prometheus para implementar SLOs.