Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:ASM observability settings

Última atualização: Jun 28, 2026

O Service Mesh (ASM) oferece configurações de observabilidade para logs, métricas e rastreamento. Use o console do ASM para personalizar essas definições nos níveis global, de namespace ou de carga de trabalho específica. Defina o formato de saída de log, adicione dimensões de métrica, ative ou desative métricas específicas e configure a porcentagem de amostragem de rastreamento. Este tópico descreve como utilizar as Configurações de Observabilidade.

Pré-requisitos

É necessária uma instância do ASM versão 1.17.2.35 ou posterior. Para mais informações, consulte Criar uma instância do ASM ou Atualizar uma instância do ASM.

Escopos

Tipo

Descrição

Global

Uma configuração global suporta definições para logs, métricas e rastreamento. Existe apenas uma configuração global e ela não pode ser excluída. As configurações de rastreamento são suportadas apenas no escopo global.

Namespace

Permite criar uma configuração de observabilidade dedicada para um namespace. Cada namespace pode ter apenas uma configuração de observabilidade no nível de namespace.

Personalizado

Uma configuração personalizada utiliza um seletor de rótulo para definir seu escopo. Cada carga de trabalho pode ser selecionada por, no máximo, uma configuração personalizada.

Procedimento

Global

  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. Configure logs, métricas e rastreamento conforme necessário e clique em Submission.

    Clique em links da tabela a seguir para visualizar descrições detalhadas das configurações.

    Seção de configuração

    Descrição

    Configurações de log

    Configurações de métrica

    Configurações de rastreamento

Namespace

  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 Namespace e em Create. Selecione o Namespace desejado, configure logs e métricas conforme necessário e clique em Create.

    Clique em links da tabela a seguir para visualizar descrições detalhadas das configurações.

    Seção de configuração

    Descrição

    Configurações de log

    Configurações de métrica

Custom

  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 Custom, selecione o Namespace desejado e clique em Create. Insira um Name e um Label selector, configure logs e métricas conforme necessário e clique em Create.

    Clique em links da tabela a seguir para visualizar descrições detalhadas das configurações.

    Seção de configuração

    Descrição

    Configurações de log

    Configurações de métrica

Configurações de log

As configurações de log incluem ativar ou desativar a saída de log de acesso, definir o formato de saída de log, personalizar o formato de log e filtrar logs.

Saída de log de acesso

  1. Na seção Log Settings, ative ou desative a chave Enable Log Output conforme necessário.

    • Ao ativar esta opção, os sidecars ou gateways no plano de dados enviam logs de acesso para a saída padrão (stdout) do contêiner.

    • Ao desativar esta opção, os sidecars ou gateways no plano de dados param de enviar logs para a stdout do contêiner.

  2. Visualize os logs na stdout do contêiner sidecar do plano de dados.

    Os exemplos a seguir mostram como visualizar logs de acesso usando kubectl.

    1. Execute o comando a seguir para visualizar os logs do sidecar:

      kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1

      Sample output

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.29:80",
          "downstream_remote_address":"221.220.XXX.XXX:0",
          "duration":"80",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"default",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"inbound|80||",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"127.0.X.X:55879",
          "upstream_response_time":"79",
          "upstream_service_time":"79",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
    2. Execute o comando a seguir para visualizar os logs do gateway de entrada:

      kubectl -n istio-system logs istio-ingressgateway-6cff9b6b58-r**** --tail 1

      Sample output

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.63:80",
          "downstream_remote_address":"221.220.XXX.XXX:64284",
          "duration":"81",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"-",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"httpbin",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"outbound|8000||httpbin.default.svc.cluster.local",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"192.168.0.63:36140",
          "upstream_response_time":"81",
          "upstream_service_time":"81",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
  3. (Opcional) Visualize os logs de acesso no console do Container Service for Kubernetes.

    Se você utiliza um cluster do Alibaba Cloud Container Service for Kubernetes (ACK), também é possível visualizar os logs de acesso no console do ACK.

    1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique em nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Pods.

    3. Na página Pods, clique em nome do pod desejado e, em seguida, clique em aba Logs na parte inferior da página para visualizar os logs de acesso.

Formato de saída de log

Nota

Este recurso requer uma instância do ASM versão 1.20.6.36 ou posterior. Para mais informações sobre como atualizar uma instância, consulte Atualizar uma instância do ASM.

Na seção Log Settings, defina Log Output Format como JSON ou TEXT conforme necessário.

  • Se você selecionar JSON, os logs de acesso serão enviados para a stdout do contêiner como strings JSON.

  • Se você selecionar TEXT, os logs de acesso serão enviados para a stdout do contêiner como strings de texto simples.

Formato de log personalizado

  1. Na seção Log Settings, selecione campos, modifique as informações de campos personalizados ou clique em ícone 增加.png na parte inferior da lista de campos de log para adicionar um novo campo.

    A personalização do formato de log só é possível quando a chave Enable Log Output está ativada. Na seção Log Format, os campos de log selecionados por padrão são obrigatórios e não podem ser desmarcados. Os valores dos campos de log podem ser obtidos de cabeçalhos de solicitação, cabeçalhos de resposta ou valores internos do Envoy.

    Por exemplo, para registrar o cabeçalho de solicitação accept-encoding, defina accessLogFormat key como accept-encoding, Type como Request Properties e accessLogFormat value como Accept-Encoding. O modelo de formato para um cabeçalho de solicitação é %REQ(HEADER_NAME)% (por exemplo, %REQ(:AUTHORITY)%), para um cabeçalho de resposta é %RESP(HEADER_NAME)% (por exemplo, %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%) e para um atributo interno do Envoy é %ATTRIBUTE_NAME% (por exemplo, %REQUEST_DURATION%).

  2. Execute o comando a seguir para visualizar os logs dos componentes do plano de dados na malha de serviço.

    kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1|grep accept-encoding --color=auto

    Sample output

    {
        "bytes_received":"0",
        "bytes_sent":"9593",
        "downstream_local_address":"192.168.0.29:80",
        "downstream_remote_address":"69.164.XXX.XX:0",
        "duration":"2",
        "istio_policy_status":"-",
        "method":"GET",
        "path":"/",
        "protocol":"HTTP/1.1",
        "request_id":"29939dc9-62be-4ddf-acf6-32cb098d****",
        "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
        "response_code":"200",
        "response_flags":"-",
        "route_name":"default",
        "start_time":"2023-06-30T04:18:19.734Z",
        "trace_id":"-",
        "upstream_cluster":"inbound|80||",
        "upstream_host":"192.168.0.29:80",
        "upstream_local_address":"127.0.X.X:34723",
        "upstream_service_time":"2",
        "upstream_transport_failure_reason":"-",
        "user_agent":"Mozilla/5.0 zgrab/0.x",
        "x_forwarded_for":"69.164.XXX.XX",
        "authority_for":"47.110.XX.XXX",
        "upstream_response_time":"2",
        "accept-encoding":"gzip"
    }

    O log de acesso agora exibe o valor do cabeçalho Accept-Encoding adicionado na etapa 1.

Filtragem de logs

Na seção Log Settings, selecione Enable Log Filter para ativar a filtragem de logs e insira uma expressão de filtragem na caixa de texto. Os logs de acesso são gerados apenas para solicitações que correspondem à expressão.

Por exemplo, para registrar apenas solicitações que atendam à condição Response Http Status >= 400, use a expressão response.code >= 400. Para mais informações, consulte Expressões CEL e campos comuns.

Expressões CEL e campos comuns

As expressões de filtragem de logs são expressões padrão da Common Expression Language (CEL). A tabela a seguir lista os campos comuns para expressões CEL. Para mais informações, consulte a documentação oficial do CEL e do Envoy.

Atributo

Tipo

Descrição

request.path

string

O caminho da solicitação.

request.url_path

string

O caminho da solicitação sem a string de consulta.

request.host

string

A parte do host da URL.

request.method

string

O método da solicitação.

request.headers

map<string, string>

Todos os cabeçalhos de solicitação, indexados por seus nomes em minúsculas.

request.useragent

string

O valor do cabeçalho User-Agent.

request.time

timestamp

O momento em que o primeiro byte da solicitação é recebido.

request.id

string

O ID da solicitação.

request.protocol

string

O protocolo da solicitação. Valores válidos: HTTP/1.0, HTTP/1.1, HTTP/2 ou HTTP/3.

request.query

string

A string de consulta da URL da solicitação.

response.code

int

O código de status HTTP da resposta.

response.code_details

string

Detalhes sobre o código de resposta.

response.grpc_status

int

O código de status gRPC na resposta.

response.headers

map<string, string>

Todos os cabeçalhos de resposta, indexados por seus nomes em minúsculas.

response.size

int

O tamanho do corpo da resposta em bytes.

response.total_size

int

O tamanho total da mensagem de resposta em bytes, incluindo o corpo e os cabeçalhos.

Configurações de métrica

As configurações de métrica incluem ativar ou desativar a geração de métricas e configurar dimensões de métrica.

Geração de métricas

As métricas são categorizadas como métricas do lado do cliente e métricas do lado do servidor.

  • Métricas do lado do cliente: Métricas geradas quando um sidecar atua como cliente para iniciar solicitações. As métricas de gateway também são categorizadas como métricas do lado do cliente.

  • Métricas do lado do servidor: Métricas geradas quando um sidecar atua como servidor para receber solicitações.

  1. Na seção Metric Settings, na coluna Client-Side Metrics ou Server-Side Metrics, marque ou desmarque a caixa de seleção Enabled de uma métrica conforme necessário.

    • Se uma métrica estiver ativada, o sidecar ou gateway do plano de dados expõe essa métrica através do caminho /stats/prometheus na porta 15020.

    • Se uma métrica estiver desativada, ela não será exposta na porta e no caminho especificados.

  2. Execute o comando a seguir para visualizar as métricas expostas por um sidecar ou gateway.

    Use o kubectl para executar um comando curl dentro do contêiner sidecar ou gateway para acessar o caminho /stats/prometheus na porta local 15020 e visualizar as métricas exportadas.

    kubectl exec httpbin-5c5944c58c-w**** -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus|head -n 10

    Saída de exemplo:

    # TYPE istio_agent_cert_expiry_seconds gauge
    istio_agent_cert_expiry_seconds{resource_name="default"} 46725.287654548
    # HELP istio_agent_endpoint_no_pod Endpoints without an associated pod.
    # TYPE istio_agent_endpoint_no_pod gauge
    istio_agent_endpoint_no_pod 0
    # HELP istio_agent_go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
    # TYPE istio_agent_go_gc_duration_seconds summary
    istio_agent_go_gc_duration_seconds{quantile="0"} 5.0149e-05
    istio_agent_go_gc_duration_seconds{quantile="0.25"} 9.8807e-05
    ......

Dimensões de métrica

As dimensões de métrica fornecem informações contextuais ricas. Use essas dimensões para filtrar métricas alvo no Prometheus. Por exemplo, utilize a dimensão source_app para filtrar métricas de solicitações de uma aplicação cliente específica.

Editar dimensões padrão

Siga estas etapas para editar as dimensões padrão:

  1. Na seção Metric Settings, na coluna Client-Side Metrics ou Server-Side Metrics, clique em Edit dimension para uma métrica ativada.

  2. Na caixa de diálogo Customize CLIENT dimension configuration ou Customize SERVER dimension configuration, marque ou desmarque as caixas de seleção das dimensões a serem exportadas e clique em Confirm.

Por exemplo, se nenhuma dimensão estiver desativada, execute um comando curl dentro do contêiner sidecar ou gateway para acessar o caminho /stats/prometheus na porta local 15020 e visualizar as métricas exportadas.

kubectl exec httpbin-5c5944c58c-w**** -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus

Tomando como exemplo a métrica istio_request_bytes_sum (que corresponde à métrica REQUEST_SIZE no console), observe que ela inclui todas as dimensões por padrão.

istio_request_bytes_sum{reporter="destination",source_workload="istio-ingressgateway",source_canonical_service="unknown",source_canonical_revision="latest",source_workload_namespace="istio-system",source_principal="spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway",source_app="istio-ingressgateway",source_version="unknown",source_cluster="c479fc4abd2734bfaaa54e9e36fb26c01",destination_workload="httpbin",destination_workload_namespace="default",destination_principal="spiffe://cluster.local/ns/default/sa/httpbin",destination_app="httpbin",destination_version="v1",destination_service="httpbin.default.svc.cluster.local",destination_canonical_service="httpbin",destination_canonical_revision="v1",destination_service_name="httpbin",destination_service_namespace="default",destination_cluster="c479fc4abd2734bfaaa54e9e36fb26c01",request_protocol="http",response_code="200",grpc_response_status="",response_flags="-",connection_security_policy="mutual_tls"} 18000

Se você modificar a métrica padrão REQUEST_SIZE do lado do servidor para reter apenas a dimensão response_code e então acessar o caminho /stats/prometheus, verá que a métrica agora inclui apenas a dimensão response_code.

istio_request_bytes_sum{response_code="200"} 16550

Adicionar dimensões personalizadas

Siga estas etapas para adicionar dimensões personalizadas:

  1. Na seção Metric Settings, na coluna Client-Side Metrics ou Server-Side Metrics, clique em Edit dimension para uma métrica ativada.

  2. Na caixa de diálogo Customize CLIENT dimension configuration ou Customize SERVER dimension configuration, sob a opção Custom Dimensions, edite o nome e o valor da dimensão e clique em Confirm.

Por exemplo, se você editar a métrica REQUEST_SIZE do lado do servidor e adicionar uma dimensão personalizada com o nome request_path e valor request.path, a métrica exportada incluirá a dimensão personalizada request_path ao acessar o caminho /stats/prometheus.

istio_request_bytes_sum{response_code="200",request_path="/spec.json"} 5800
Importante

Reduza o consumo de memória do Envoy e do Prometheus removendo dimensões padrão desnecessárias. No entanto, como a maioria das dimensões costuma ser útil, a seção Metric Settings exibe apenas as dimensões que você removeu explicitamente.

Configurações de rastreamento

As configurações de rastreamento incluem porcentagem de amostragem e tags personalizadas. Para construir cadeias de chamadas completas, o rastreamento exige configurações de relatório consistentes em todos os serviços. Endpoints de relatório ou taxas de amostragem inconsistentes podem levar a rastreamentos incompletos. Por esse motivo, versões do ASM anteriores à 1.24.6.83 não permitem configurações de rastreamento no nível de namespace ou de carga de trabalho. A partir da versão 1.24.6.83, o ASM suporta a modificação de recursos Telemetry usando a API do Kubernetes para habilitar configurações de rastreamento nos níveis de namespace e de carga de trabalho. Para mais informações sobre como configurar recursos Telemetry, consulte Telemetry CRD.

Porcentagem de amostragem

Personalize a porcentagem de amostragem para rastreamento, que determina a porcentagem de solicitações para as quais os rastreamentos são gerados. Um valor de 0 desativa o rastreamento.

Tags personalizadas

Personalize as tags anexadas aos spans de rastreamento reportados. Na seção Tracing Analysis Settings, clique em Add Custom Tags e configure o Name, o Type e o Value.

Os tipos válidos incluem Valor Fixo, Cabeçalho de Solicitação e Variável de Ambiente. A tabela a seguir descreve cada tipo e fornece exemplos.

Tipo

Descrição

Configuração de exemplo

Fixed Value

O valor da tag é fixado na string que você especificar.

  • Name: env

  • Type: Fixed Value

  • Value: prod

Request Header

A tag utiliza o valor de um cabeçalho de solicitação especificado. Se o cabeçalho não existir na solicitação, o valor padrão será usado.

Por exemplo, obtenha o valor da tag do cabeçalho User-Agent e use unknown como valor padrão caso o cabeçalho não esteja presente.

  • Name: useragent

  • Type: Request Header

  • Value:

    • Header name: User-Agent

    • Default value: unknown

Environment Variable

A tag utiliza o valor de uma variável de ambiente especificada da carga de trabalho. Se a variável de ambiente não existir na carga de trabalho, o valor padrão será usado.

Por exemplo, obtenha o valor da tag da variável de ambiente ENV e use unknown como valor padrão caso a variável não exista.

  • Name: env

  • Type: Environment Variable

  • Value:

    • Environment Variable Name: ENV

    • Default value: unknown