Todos os produtos
Search
Central de documentação

Simple Log Service:Solucionar problemas de coleta de logs em contêineres

Última atualização: Jul 09, 2026

Se você encontrar problemas ao coletar logs de contêineres padrão ou Kubernetes com o Logtail, use este tópico para solucionar o problema, verificar o status de execução e executar outras operações de manutenção.

Verificar o heartbeat do grupo de máquinas

Verifique o heartbeat do grupo de máquinas para confirmar se o Logtail está instalado corretamente nos contêineres.

  1. Verifique o status de heartbeat do grupo de máquinas.

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

    2. Na seção Projects, clique em o projeto desejado.

      image

    3. No painel de navegação à esquerda, escolha Resources > Machine Groups.

    4. Na lista de grupos de máquinas, clique em o grupo de máquinas de destino.

    5. Na página Machine Group Configurations, visualize o status do grupo de máquinas e anote o número de nós com status de heartbeat OK.

  2. Verifique o número de nós de trabalho no cluster de contêineres.

    1. Conectar-se ao cluster.

    2. Execute o comando a seguir para visualizar o número de nós de trabalho no cluster.

      kubectl get node | grep -v master

      A saída será semelhante à seguinte:

      NAME                                 STATUS    ROLES     AGE       VERSION
      cn-hangzhou.i-bp17enxc2us3624wexh2   Ready     <none>    238d      v1.10.4
      cn-hangzhou.i-bp1ad2b02jtqd1shi2ut   Ready     <none>    220d      v1.10.4
  3. Compare o número de nós com status de heartbeat OK com o número de nós de trabalho no cluster de contêineres. Solucione o problema com base no resultado.

    • O status de heartbeat de todos os nós no grupo de máquinas é Failed.

      • Para coleta de logs de contêineres docker padrão, consulte Coletar logs de contêineres docker (saída padrão e arquivos) para verificar se os parâmetros ${your_region_name}, ${your_aliyun_user_id} e ${your_machine_group_user_defined_id} estão corretos.

      • Caso utilize um cluster Kubernetes autogerenciado, consulte Coletar logs de texto de contêineres Kubernetes usando sidecar para validar se os parâmetros {regionId}, {aliuid}, {access-key-id} e {access-key-secret} estão corretos.

        Se os parâmetros estiverem incorretos, execute o comando helm del --purge alibaba-log-controller para excluir o pacote de instalação e reinstale-o em seguida.

    • A quantidade de nós com status de heartbeat OK é menor que o número de nós de trabalho no cluster.

      • Verifique se um DaemonSet foi implantado manualmente por meio de um arquivo YAML.

        1. Execute o comando abaixo. Se houver retorno, significa que um DaemonSet foi implantado manualmente via arquivo YAML.

          kubectl get po -n kube-system -l k8s-app=logtail
        2. Baixe o modelo mais recente do DaemonSet.

        3. Defina parâmetros como ${your_region_name}, ${your_aliyun_user_id} e ${your_machine_group_name} com seus valores reais.

        4. Execute o comando a seguir para aplicar o arquivo atualizado.

          kubectl apply -f ./logtail-daemonset.yaml
    • FAQ: Por que não há heartbeat após implantar docker/LoongCollector?

      Quando o LoongCollector ou Logtail não apresenta heartbeat ou falha ao se registrar no grupo de máquinas após a implantação do docker, a causa raiz geralmente é a falta de configuração do identificador de usuário (AliUID).

      Solução:

      1. No host, crie o diretório /etc/ilogtail/users/.

        mkdir -p /etc/ilogtail/users/
      2. Dentro do diretório /etc/ilogtail/users/, crie um arquivo vazio nomeado com o ID da sua conta Alibaba Cloud.

        touch /etc/ilogtail/users/<your-alibaba-cloud-account-id>
      3. Ao iniciar o contêiner do LoongCollector ou Logtail, monte o diretório como somente leitura adicionando a seguinte flag:

        -v /etc/ilogtail/users:/etc/ilogtail/users:ro
      4. Reinicie o contêiner do LoongCollector ou Logtail.

      Verificação: Faça login no console SLS, acesse Resources > Machine Groups e abra o grupo de máquinas de destino. Na página Machine Group Configurations, confirme se o status de heartbeat do grupo de máquinas mudou para OK.

      FAQ: Por que o grupo de máquinas mostra apenas um servidor quando vários servidores docker Swarm reportam o mesmo IP?

      Causa: Em um cluster docker Swarm, vários servidores podem reportar o mesmo endereço IP interno através da rede do contêiner. Se esses servidores também compartilharem o mesmo valor da variável de ambiente ALIYUN_LOGTAIL_USER_DEFINED_ID, o sistema não consegue distingui-los, e a página Machine Groups exibe apenas uma entrada.

      Solução 1: Defina uma variável de ambiente ALIYUN_LOGTAIL_USER_DEFINED_ID exclusiva para o contêiner Logtail em cada servidor.

      Configure um valor diferente em cada servidor e garanta que ele corresponda à configuração de Machine Groups correspondente. Por exemplo:

      -e ALIYUN_LOGTAIL_USER_DEFINED_ID=<unique-id-for-this-server>

      Solução 2: Defina a variável de ambiente ALIYUN_LOGTAIL_WORKING_IP para especificar manualmente um endereço IP exclusivo para cada servidor.

      Utilize um valor que identifique exclusivamente cada host, como o endereço IP público do host ou um endereço IP de rede interna que seja único em todos os servidores:

      -e ALIYUN_LOGTAIL_WORKING_IP=<unique-ip-for-this-server>

      Solucionar problemas na coleta de logs de contêineres

      Caso não encontre logs na página Preview ou na página de consulta do Logstore no console do Simple Log Service, é possível que o serviço não esteja coletando os logs dos seus contêineres. Verifique o status do contêiner e realize as verificações a seguir.

      Importante
      • Ao coletar logs de arquivos em contêineres, observe os seguintes pontos:

        • Após aplicar uma configuração do Logtail, a coleta de logs de um arquivo só ocorre se houver atualização nesse arquivo. Para mais informações, consulte Ler logs.

        • O Logtail coleta logs apenas de arquivos armazenados no armazenamento padrão do contêiner ou montados em um caminho local. Outros métodos de armazenamento não são suportados.

      • Depois que os logs forem coletados, crie um índice para consultá-los e analisá-los no Logstore. Para mais detalhes, veja Criar um índice.

      1. Verifique se há problemas de heartbeat no grupo de máquinas. Para mais informações, consulte Verificar o heartbeat do grupo de máquinas.

      2. Valide se a configuração do Logtail está correta.

        Confira se as definições de IncludeLabel, ExcludeLabel, IncludeEnv e ExcludeEnv na configuração do Logtail atendem aos seus requisitos de coleta de logs.

        Nota
        • Os rótulos especificados aqui referem-se aos rótulos de contêiner da saída do comando docker inspect, e não aos rótulos do Kubernetes.

        • Remova temporariamente as configurações de IncludeLabel, ExcludeLabel, IncludeEnv e ExcludeEnv para testar a coleta de logs. Se a coleta funcionar, as configurações dos parâmetros estão incorretas.

        Nota

        Se você utiliza um nó docker autogerenciado (não Kubernetes) com uma configuração legada do Logtail, atente-se ao seguinte:

        • O campo _container_name_ não suporta correspondência por expressão regular para múltiplos valores. Não é possível usar uma única expressão regular para filtrar vários nomes de contêineres específicos.

        • Para coletar logs de múltiplos contêineres específicos (por exemplo, contêineres chamados a e b), crie duas configurações separadas do Logtail, cada uma com sua própria lista de permissões, e vincule ambas ao mesmo Machine Groups.

        • Nomes de rótulos duplicados em uma única configuração do Logtail não são reconhecidos. Caso precise corresponder a valores diferentes para o mesmo nome de rótulo, use uma expressão regular ou crie múltiplas configurações independentes do Logtail.

      O grupo de máquinas não cobre todos os nós de contêineres

      Sintoma: O heartbeat do grupo de máquinas está normal, mas a coleta de logs de alguns contêineres parou.

      Esse problema pode ocorrer quando os contêineres estão sendo executados em servidores que não foram incluídos nos Machine Groups.

      Etapas de solução de problemas:

      1. Em todos os servidores relevantes, execute o comando a seguir para identificar em quais nós os contêineres estão realmente sendo executados:

        docker ps -a | grep <container-name>
      2. Se um contêiner estiver sendo executado em um servidor que não foi adicionado ao grupo de máquinas, adicione o endereço IP desse servidor aos Machine Groups no console SLS.

      FAQ: Por que não consigo encontrar o Pod na visualização de metadados do contêiner ou por que os logs do emptyDir não são coletados?

      Causa: O Logtail executado no modo DaemonSet não consegue acessar diretamente o armazenamento temporário emptyDir dentro de um contêiner. Isso impede que o Logtail leia arquivos de log e extraia metadados do contêiner, fazendo com que o Pod não apareça na Preview de metadados do contêiner.

      Solução 1 (Recomendada): Redirecione a saída de logs da aplicação para a saída padrão (stdout/stderr).

      1. Modifique sua aplicação para gravar logs no stdout ou stderr em vez de arquivos.

      2. No console SLS, configure o caminho de coleta para usar o caminho de log padrão do Kubernetes:

        /logtail_host/var/log/pods/<namespace>_<pod-name>-<uid>/<container-name>/*.log

      Solução 2: Se sua aplicação precisar obrigatoriamente gravar logs em arquivos, altere a montagem do volume de logs de emptyDir para hostPath ou PVC.

      1. Na especificação do seu Pod, substitua o volume emptyDir por uma definição de hostPath ou PVC, de modo que os logs sejam persistidos em um caminho acessível a partir do host.

      2. Ajuste o caminho de coleta do SLS para apontar para o caminho de montagem real no host, por exemplo:

        /logtail_host/var/log/your-app/*.log

      FAQ: Como lidar com falhas na criação de arquivos ou erros de permissão ao coletar logs de contêineres?

      Sintoma: Uma mensagem de erro indica que o Logtail precisa criar um arquivo vazio específico dentro do contêiner, mas a criação falha ou um erro de permissão é reportado.

      Solução:

      1. Crie manualmente o arquivo vazio especificado na mensagem de erro dentro do contêiner.

      2. Defina as permissões do arquivo para -rw-r--r-- (644):

        chmod 644 <file-path>
      3. Reinicie o contêiner.

      Alternativa: Se o problema persistir após as etapas acima, monte o diretório de logs do contêiner no host e configure o SLS para coletar logs do caminho correspondente no host. Essa abordagem é mais estável do que a coleta de arquivos dentro do contêiner.

      FAQ: Como resolver o erro "parse cri docker line error: invalid CRI log, timestamp not found"?

      Causa: Falha na análise de logs. Esse erro é comumente causado por uma configuração incorreta de log multilinha.

      Solução:

      1. Verifique e ajuste a expressão regular de início de linha ou desative o modo multilinha:

        • Na configuração YAML: Comente a seção de configuração multiline.

        • No console SLS: Abra a configuração do Logtail e desative o modo multilinha.

      2. Verifique se o K8s Namespace Regex e outros campos de formato estão corretos. Se precisar especificar múltiplos namespaces, garanta que estejam separados pelo delimitador correto.

      3. Após modificar a configuração YAML, reaplique-a para que as alterações entrem em vigor:

        kubectl apply -f <your-config-file>.yaml

      Outras operações de manutenção

      Fazer login em um contêiner Logtail

      • docker Padrão

        1. No host, execute o comando a seguir para localizar o contêiner Logtail.

          docker ps | grep logtail

          A saída será semelhante à seguinte:

          223****6e        registry.cn-hangzhou.aliyuncs.com/log-service/logtail                             "/usr/local/ilogta..."   8 days ago          Up 8 days                               logtail-iba
        2. Execute o comando a seguir para iniciar um shell bash no contêiner Logtail.

          docker exec -it 223****6e  bash

          Substitua 223****6e pelo ID real do contêiner.

      • Kubernetes

        1. Execute o comando a seguir para localizar o pod do Logtail.

          kubectl get po -n kube-system | grep logtail

          A saída será semelhante à seguinte:

          logtail-ds-****d                                             1/1       Running    0          8d
          logtail-ds-****8                                             1/1       Running    0          8d
        2. Execute o comando a seguir para fazer login no pod.

          kubectl exec -it -n kube-system logtail-ds-****d -- bash

          Substitua logtail-ds-****d pelo ID real do pod.

      Visualizar logs de execução do Logtail

      O Logtail armazena seus logs no diretório /usr/local/ilogtail/ do contêiner Logtail. Os arquivos de log são ilogtail.LOG e logtail_plugin.LOG.

      1. Faça login no contêiner Logtail. Para mais informações, consulte Fazer login em um contêiner Logtail.

      2. Acesse o diretório /usr/local/ilogtail/.

        cd /usr/local/ilogtail
      3. Visualize os arquivos ilogtail.LOG e logtail_plugin.LOG.

        cat ilogtail.LOG
        cat logtail_plugin.LOG

      Saída padrão (stdout) do contêiner Logtail

      A saída padrão de um contêiner Logtail não fornece informações úteis para solução de problemas. Ignore o conteúdo a seguir.

      start umount useless mount points, /shm$|/merged$|/mqueue$
      umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
      umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
      umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
      ......
      xargs: umount: exited with status 255; aborting
      umount done
      start logtail
      ilogtail is running
      logtail status:
      ilogtail is running

      Verificar o status dos componentes do Kubernetes

      Execute o comando a seguir para visualizar o status e as informações da implantação do Simple Log Service.

      kubectl get deploy -n kube-system | grep -E 'alibaba-log-controller|loongcollector-operator'

      A seguinte saída será retornada:

      NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
      alibaba-log-controller   1/1     1            1           11d

      Execute o comando a seguir para visualizar as informações de status do recurso DaemonSet.

      kubectl get ds  -n kube-system | grep -E 'logtail-ds|loongcollector-ds'

      A seguinte saída será retornada:

      NAME         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR  AGE
      logtail-ds   2         2         2       2            2           **ux           11d

      Versão, endereço IP e hora de inicialização do Logtail

      1. No host, execute o comando a seguir para visualizar a versão, o endereço IP e a hora de inicialização do Logtail.

        Essas informações estão armazenadas no arquivo /usr/local/ilogtail/app_info.json do contêiner Logtail.

        kubectl exec logtail-ds-****k -n kube-system cat /usr/local/ilogtail/app_info.json

        A saída será semelhante à seguinte:

        {
           "UUID" : "",
           "hostname" : "logtail-****k",
           "instance_id" : "0EB****_172.20.4.2_1517810940",
           "ip" : "172.20.4.2",
           "logtail_version" : "0.16.2",
           "os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64",
           "update_time" : "2018-02-05 06:09:01"
        }

      Obter informações de solução de problemas para logs de Pod em um cluster ACK

      Se a coleta de logs de um Pod em um cluster ACK apresentar anomalias, siga as etapas abaixo para obter as informações básicas necessárias para autossolução de problemas ou para fornecer ao suporte técnico.

      Etapa 1: Localize o nome do Pod do Logtail ou LoongCollector.

      kubectl get pods -n kube-system | grep loongcollector

      Etapa 2: Obtenha o endereço IP da instância do Logtail ou LoongCollector no arquivo app_info.json.

      kubectl exec <pod-name> -n kube-system cat /usr/local/ilogtail/app_info.json

      O campo ip na saída JSON retornada corresponde ao endereço IP da instância do Logtail.

      Ao solicitar suporte, forneça as seguintes informações para auxiliar na solução de problemas:

      • Nome do Projeto SLS

      • Nome da configuração de coleta do Logtail

      • Nome do Pod de destino

      • Nome do contêiner de destino

      Lidar com Logstores CRD excluídos acidentalmente

      Se você excluir um Logstore criado automaticamente por uma Custom Resource Definition (CRD), os dados coletados serão irrecuperáveis e a configuração da CRD para esse Logstore se tornará inválida. Para evitar problemas na coleta de logs, escolha uma das soluções a seguir:

      • Na configuração da CRD, utilize um Logstore diferente daquele que foi excluído.

      • Reinicie o pod alibaba-log-controller.

        Execute o comando a seguir para localizar o pod.

        kubectl get po -n kube-system | grep alibaba-log-controller