Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Configurar limpeza periódica de métricas do ASM

Última atualização: Jun 28, 2026

Service Mesh (ASM) gera métricas de monitoramento para todo o tráfego que entra, sai e circula na malha de serviços, facilitando o monitoramento do comportamento dos serviços. Essas métricas incluem informações como volume de tráfego, taxa de erros e tempo de resposta. Com o tempo, grandes volumes de dados podem se acumular e aumentar o consumo de recursos do Envoy e do Prometheus. Para gerenciar esse cenário, o ASM oferece um recurso de limpeza periódica de métricas de monitoramento. Esse recurso remove automaticamente métricas não utilizadas armazenadas em cache no Envoy, reduzindo o consumo de memória e a carga de rede durante a coleta pelo Prometheus. Este tópico descreve como configurar esse recurso e fornece um exemplo funcional.

Pré-requisitos

Procedimento

  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 nome da instância do ASM. No painel de navegação à esquerda, escolha Observability Management Center > Observability Settings.

  3. Na página Observability Settings, clique em aba Global. Na seção Metric Settings, insira um valor para Periodic Cleaning Time of Metrics e clique em Submit.

    Ative a chave Enable Periodic Cleaning of Metrics.

    Importante

    Defina o tempo de limpeza periódica como pelo menos o dobro do scrape_interval do Prometheus. Isso garante que o Prometheus consiga coletar as métricas antes da remoção.

Exemplo

Implantar a aplicação de exemplo

  1. Use o conteúdo YAML a seguir para implantar uma aplicação de exemplo no cluster do plano de dados. Para mais informações, consulte Criar um Deployment de carga de trabalho sem estado ou Criar recursos usando um arquivo YAML.

    Clique em visualizar o YAML

    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:
          containers:
          - image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/httpbin:0.1.0
            imagePullPolicy: IfNotPresent
            name: httpbin
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sleep
      labels:
        app: sleep
        service: sleep
    spec:
      ports:
      - port: 80
        name: http
      selector:
        app: sleep
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sleep
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sleep
      template:
        metadata:
          labels:
            app: sleep
        spec:
          terminationGracePeriodSeconds: 0
          containers:
          - name: sleep
            image: registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2
            command: ["/bin/sleep", "infinity"]
            imagePullPolicy: IfNotPresent
  2. Execute o comando a seguir para verificar o status da aplicação:

    kubectl get pod

    Saída de exemplo:

    NAME                       READY   STATUS    RESTARTS   AGE
    httpbin-846bxxx694-xxxxx   2/2     Running   0          44s
    sleep-866xxx97f9-xxxxx     2/2     Running   0          44s

Ativar métricas e testar

  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 nome da instância do ASM. No painel de navegação à esquerda, escolha Observability Management Center > Observability Settings.

  3. Na página Observability Settings, clique em aba Global. Na seção Metric Settings, selecione a caixa de seleção Enabled da métrica REQUEST_COUNT na seção Server-side Metrics. Em seguida, clique em Submit.

  4. Execute o comando a seguir para acessar a aplicação httpbin:

     kubectl exec -it deploy/sleep -- sh -c 'for i in $(seq 1 10); do curl -s httpbin:8000/status/418 > /dev/null; done'
  5. Execute o comando a seguir para visualizar as métricas de monitoramento da aplicação httpbin:

    kubectl exec -it deploy/httpbin -c istio-proxy -- curl 0.0.0.0:15020/stats/prometheus | grep istio_requests_total{

    Saída de exemplo:

    istio_requests_total{reporter="destination",source_workload="sleep",source_canonical_service="sleep",...,request_protocol="http",response_code="418",grpc_response_status="",response_flags="-",connection_security_policy="mutual_tls"} 20

Configurar limpeza periódica de métricas

  1. Siga as etapas na seção Procedimento para definir o tempo de limpeza periódica das métricas de monitoramento como 10s.

    A limpeza de métricas pode atrasar alguns segundos. Durante a verificação, ajuste o tempo de limpeza conforme necessário.
  2. Após concluir a configuração, execute o comando a seguir para visualizar as métricas de monitoramento da aplicação httpbin:

    kubectl exec -it deploy/httpbin -c istio-proxy -- sh -c ' for i in $(seq 1 2); do echo "# Current content of the istio_requests_total metric: "; curl -s 0.0.0.0:15020/stats/prometheus | grep istio_requests_total{; sleep 15; done'

    Saída de exemplo:

    # Current content of the istio_requests_total metric: 
    istio_requests_total{reporter="destination",source_workload="sleep",source_canonical_service="sleep",...connection_security_policy="mutual_tls"} 30
    # Current content of the istio_requests_total metric: 
    O comando de teste faz duas requisições de sondagem. A primeira, realizada antes da limpeza, retorna uma linha de saída de métrica e uma linha de saída personalizada. Após 15 segundos, os dados da métrica são limpos e a requisição seguinte retorna apenas uma linha de saída personalizada.