Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Analyze nginx-ingress-controller access logs with SLS

Última atualização: Sep 11, 2026

O Alibaba Cloud Ingress registra requisições HTTP no stdout. Ative a coleta de logs ao criar um cluster e use o Simple Log Service (SLS) para visualizar análises de logs de acesso do Nginx Ingress e monitorar o status do Ingress em tempo real. Este tópico descreve como implantar e visualizar os logs de acesso do Nginx Ingress.

Pré-requisitos

Antes de começar, verifique se:

Ative a coleta de logs para o nginx-ingress-controller

Use o console ACK, a menos que precise automatizar a configuração por meio de um pipeline GitOps ou CI/CD.

ACK console

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

  2. Na página Clusters, clique no cluster desejado. No painel de navegação à esquerda, escolha Operations > Add-ons.

  3. Na página Add-ons, clique na aba Networking. No cartão Nginx Ingress Controller, clique no ícone image.png e selecione Enable Log Collection. Clique em OK.

CLI

O ACK fornece um CRD chamado AliyunLogConfig. Ao criar um AliyunLogConfig, o alibaba-log-controller gera automaticamente a configuração do SLS e atualiza os painéis.

Importante

Antes de criar um AliyunLogConfig:

  • Se já existirem pods do nginx-ingress-controller, recrie-os após aplicar o AliyunLogConfig para que a coleta de logs tenha efeito.

  • O alibaba-log-controller deve estar na versão 0.2.0.0-76648ee-aliyun ou posterior. Caso um AliyunLogConfig já exista após a atualização do controller, exclua-o e crie-o novamente.

  • Esta configuração pressupõe o formato de log padrão do ACK. Se você personalizou o formato de log, atualize a seção processor_regex. Consulte Use CRDs to collect container logs in DaemonSet mode.

  1. Crie um arquivo chamado k8s-nginx-ingress.yaml com o seguinte conteúdo:

    Defina IncludeLabel com os rótulos do Docker obtidos via docker inspect . io.kubernetes.pod.namespace seleciona por namespace; io.kubernetes.container.name seleciona por container. Por exemplo, io.kubernetes.pod.namespace: backend-prod coleta todos os containers desse namespace; io.kubernetes.container.name: worker-server direciona a coleta para um container específico. Especifique apenas esses dois rótulos. Para filtrar por variáveis de ambiente, use IncludeEnv ou ExcludeEnv . Consulte Use the Simple Log Service console to collect container stdout and stderr in DaemonSet mode .

    Campo

    Descrição

    Modificar?

    metadata.namespace

    Namespace do controller de Ingress

    Sim, se não for kube-system

    spec.logstore

    Nome do Logstore do SLS

    Opcional

    IncludeLabel

    Rótulos do Docker usados para selecionar containers

    Sim, se estiver coletando de um namespace específico

    processor_regex > Regex

    Regex de análise de log

    Apenas se você alterou o formato de log padrão

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      # Unique name for this AliyunLogConfig within the cluster.
      name: k8s-nginx-ingress
      # Set to the namespace of the Ingress controller you want to collect logs from.
      namespace: kube-system
    spec:
      # The SLS Logstore where logs are stored.
      logstore: nginx-ingress
      # Product code — do not change this value.
      productCode: k8s-nginx-ingress
      logtailConfig:
        inputType: plugin
        # Must match metadata.name.
        configName: k8s-nginx-ingress
        inputDetail:
          plugin:
            inputs:
              - type: service_docker_stdout
                detail:
                  IncludeLabel:
                    # Collect logs from the nginx-ingress-controller container.
                    # If multiple Ingress controllers run in your cluster, collecting
                    # by container name may produce duplicate logs. Review the
                    # IncludeLabel behavior before applying.
                    io.kubernetes.container.name: nginx-ingress-controller
                  Stderr: true
                  Stdout: true
            processors:
              - type: processor_regex
                detail:
                  KeepSource: false
                  # Fields extracted from each log line, in order:
                  Keys:
                    - client_ip
                    - x_forward_for
                    - remote_user
                    - time
                    - method
                    - url
                    - version
                    - status
                    - body_bytes_sent
                    - http_referer
                    - http_user_agent
                    - request_length
                    - request_time
                    - proxy_upstream_name
                    - upstream_addr
                    - upstream_response_length
                    - upstream_response_time
                    - upstream_status
                    - req_id
                    - host
                    - proxy_alternative_upstream_name
                  NoKeyError: true
                  NoMatchError: true
                  # Regular expression that maps each capture group to the Keys above.
                  Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]*)"\s"([^"]*)"\s(\S+)\s(\S+)+\s\[([^]]*)]\s(\S+?(?:,\s\S+?)*)\s(\S+?(?:,\s\S+?)*)\s(\S+?(?:,\s\S+?)*)\s(\S+?(?:,\s\S+?)*)\s(\S+)\s*(\S*)\s*\[*([^]]*)\]*.*
                  SourceKey: content

    A tabela a seguir descreve os campos mais comuns de personalização:

  2. Aplique a configuração:

    kubectl apply -f k8s-nginx-ingress.yaml

Para desativar a coleta de logs, exclua o AliyunLogConfig:

kubectl delete aliyunlogconfig k8s-nginx-ingress -n kube-system

Visualize o log de acesso e os painéis

  1. Faça login no console do Simple Log Service.

  2. Na seção Projects, clique no projeto do seu cluster ACK (nomeado k8s-log-{cluster-id}).

  3. No painel de navegação à esquerda, clique no ícone Nginx Ingress.png e selecione um painel na lista.

Painéis disponíveis:

Painel

Intervalo de tempo

Conteúdo

Visão geral do Ingress

Últimas 24 h / último 1 min

Volume de tráfego, latência, taxas de erro, distribuição geográfica, principais URLs

Central de acesso do Ingress

Últimas 24 h

Contagens de UV/PV, distribuição regional, principais navegadores e IPs de origem, detalhamento mobile

Central de monitoramento do Ingress

Última 1 h

Taxa de sucesso em tempo real, proporções de erro, percentis de latência, principais Services por PV e taxa de falha

Central de monitoramento do Ingress para implantações blue-green

Dinâmico

Comparação lado a lado das métricas de ServiceA e ServiceB para rollouts seguros

Central de exceções do Ingress

Automático

Detecção de anomalias baseada em machine learning do SLS e análise de séries temporais

Visão geral do Ingress

Rastreia o tráfego no nível do site pelo nginx-ingress-controller. Principais métricas:

  • Last 24 hours: visualizações de página (PVs), visitantes únicos (UVs), tráfego de entrada/saída, latência média, proporção de usuários mobile, proporção de erros 5xx, proporção de erros 404

  • Último 1 minuto: PVs, UVs, taxa de sucesso de requisições, latência média, latência P95, latência P99

  • Tendências e distribuição: Tendência de PV em 24 horas e 7 dias, distribuição regional de requisições, principais áreas e cidades, detalhamento Android/iOS

  • Principais URLs (última 1 hora): 10 URLs com maiores PVs, maior latência, mais erros 5xx e mais erros 404

Central de acesso do Ingress

Origens das requisições e distribuição de clientes nas últimas 24 horas: contagens de UV/PV, detalhamento regional, principais navegadores, IPs de origem e proporções mobile.

Central de monitoramento do Ingress

Métricas em tempo real da última hora para detecção e triagem de problemas:

  • Taxa de sucesso de requisições, proporção de 5xx, proporção de 404 e proporção de requisições não encaminhadas ao upstream

  • Latência média, latência P95, latência P99 e latência P999

  • Distribuição de requisições por código de status e proporção de PV por Ingress

  • Top 10 Services por PVs, taxa de falha, latência média e total de requisições

Ingress monitoring center

Central de monitoramento do Ingress para implantações blue-green

Comparação lado a lado das métricas de ServiceA e ServiceB — PVs, taxas de erro, percentis de latência e total de requisições — para detectar regressões durante rollouts blue-green.

Ingress blue-green deployment monitoring center

Central de exceções do Ingress

Detecta anomalias nos logs do nginx-ingress-controller usando machine learning do SLS e análise de séries temporais.

Ingress exceptions center

Configure alertas

Configure regras de alerta em qualquer gráfico do painel, com notificações por e-mail, chatbot do DingTalk, webhooks ou SMS.

Consulte Configure an alert rule.

Este exemplo cria um alerta que dispara quando a proporção de erros 5xx excede 1%, verificado a cada 5 minutos.

  1. Na seção Dashboard, clique em Ingress Monitoring Center. Passe o mouse sobre o ícone Tip no canto superior direito do gráfico 5XX Proportion e clique em Save as Alert (Old Version).

  2. No assistente Create Alert, defina Alert Name, Associated Chart, Frequency e Trigger Condition. O campo total representa a proporção de erros 5xx; defina a Trigger Condition como total > 1.

  3. Na página Notifications, selecione os canais de notificação, configure os parâmetros e clique em Submit.

Inscreva-se em um painel

Envie snapshots agendados do painel para um endereço de e-mail ou grupo do DingTalk. Consulte Subscribe to a dashboard.

Este exemplo inscreve-se no painel Ingress Overview V1.2 e envia um snapshot diário para um grupo do DingTalk às 10:00.

  1. Na seção Dashboard, clique em Ingress Overview V1.2. Escolha Subscribe > Create.

  2. No assistente Create Subscription, defina a Frequency como Daily e o horário para 10:00. Desative a opção Add Watermark e clique em Next.

  3. Na página Notifications, selecione WebHook-DingTalk Bot em Notifications e defina a Request URL com a URL do webhook do seu chatbot do DingTalk. Clique em Submit.

Use o painel do Ingress com o ARMS

O painel Ingress Overview V1.2 integra-se ao Application Real-Time Monitoring Service (ARMS) para fornecer visibilidade completa de rastreamento ponta a ponta.

  1. Faça login no console do Simple Log Service.

  2. Na seção Projects, clique no projeto do seu cluster ACK.

  3. No painel de navegação à esquerda, clique no ícone image e selecione Ingress Overview V1.2 na lista de Dashboard.

  4. Na seção Top 10 Request URLs by Latency, clique em uma URL na coluna URL(ARMS Troubleshooting) para visualizar os detalhes de rastreamento do ARMS para esse Service.

Próximos passos

  • Data filtering plugin — aplique filtros de consulta de log para investigar requisições específicas ou janelas de tempo.