Todos os produtos
Search
Central de documentação

Elastic Container Instance:Coletar logs usando um SLS CRD

Última atualização: Jun 28, 2026

Este tópico descreve como usar um SLS CRD para configurar a coleta de logs em um cluster ACK Serverless e permitir a coleta automática de logs de contêiner com o Simple Log Service (SLS).

Informações básicas

O Simple Log Service é uma solução completa para dados de log. Ele permite coletar, consumir, enviar, consultar e analisar dados de log rapidamente, sem escrever código. Para mais informações, consulte O que é o Simple Log Service?.

Pré-requisitos

Verifique se o Simple Log Service está ativado. Caso contrário, o sistema solicitará a ativação ao fazer login no console do Simple Log Service. Siga as instruções na tela para concluir a ativação.

Observações

A coleta de logs habilitada por um SLS CRD aplica-se apenas aos pods ECI criados posteriormente. Para coletar logs de pods existentes, execute uma atualização contínua (rolling update).

Configurar a coleta de logs

Após implantar o componente alibaba-log-controller no cluster, use o CRD AliyunLogConfig para configurar a coleta de logs.

Implantar o componente alibaba-log-controller

  1. Faça login no console do ACK.

  2. No canto superior esquerdo da barra de navegação superior, selecione uma região.

  3. Na página Clusters, clique em nome do cluster ACK Serverless desejado para abrir a página de detalhes.

  4. Implante o componente alibaba-log-controller no cluster.

    1. No painel de navegação à esquerda da página de detalhes do cluster, escolha Operations > Add-ons.

    2. Clique em aba Logs and Monitoring, localize o cartão alibaba-log-controller e clique em Install.

    3. Na caixa de diálogo exibida, clique em OK.

      Após a instalação, o cartão alibaba-log-controller exibe Installed no canto superior direito.

Criar uma configuração do Logtail

  1. Conecte-se ao cluster ACK Serverless.

  2. Crie um arquivo de configuração YAML para o CRD AliyunLogConfig.

    Importante

    Para evitar desvio de configuração, sempre atualize as definições modificando o recurso CRD. Alterações feitas diretamente no console não são sincronizadas de volta para o CRD.

    Modelo YAML do CRD AliyunLogConfig

    apiVersion: log.alibabacloud.com/v1alpha1     
    kind: AliyunLogConfig                         
    metadata:
      name: simple-stdout-example                 
    spec:
      project: k8s-my-project                      
      logstore: k8s-stdout                         
      logstoreMode: standard                       
      shardCount: 2                               
      lifeCycle: 90                               
      logtailConfig:                            
        inputType: plugin                          
        configName: simple-stdout-example          
        inputDetail:                               
          ...

    A tabela a seguir descreve os parâmetros básicos. Para mais informações, consulte Usar AliyunLogConfig para gerenciar configurações de coleta.

    • Parâmetros básicos

      Parâmetro

      Tipo

      Obrigatório

      Descrição

      project

      string

      Não

      Nome do projeto. O padrão é o projeto especificado durante a instalação do componente Logtail.

      Se o projeto especificado não existir, o sistema o criará automaticamente.

      logstore

      string

      Sim

      Nome do Logstore. Se o Logstore especificado não existir, o sistema o criará automaticamente.

      logstoreMode

      string

      Não

      Tipo do Logstore. Este parâmetro tem efeito apenas na criação de um novo Logstore. Valores válidos:

      • query: Logstore de consulta

      • standard: Logstore padrão

      Para mais informações, consulte Gerenciar um Logstore.

      shardCount

      int

      Não

      Número de shards. Valor padrão: 2. Valores válidos: 1 a 10.

      lifeCycle

      int

      Não

      Período de retenção dos dados no Logstore, em dias. Valor padrão: 90. Valores válidos: 1 a 3650. O valor 3650 indica armazenamento permanente. Este parâmetro tem efeito apenas na criação de um novo Logstore.

      machineGroups

      array

      Não

      Grupo de máquinas. Ao instalar o componente Logtail, o Simple Log Service cria automaticamente um grupo de máquinas chamado k8s-group-${your_k8s_cluster_id}.

      logtailConfig

      object

      Sim

      Configuração do Logtail. Inclui os seguintes parâmetros:

      • configName: Nome da configuração do Logtail. Deve ser igual a metadata.name.

      • inputType: Método de entrada de log. Valores válidos:

        • plugin: coleta logs como MySQL Binlog usando plug-ins do Logtail.

        • file: coleta logs de arquivos de texto usando um modo fixo, como expressão regular ou delimitador.

      • inputDetail: Configurações detalhadas para a entrada de log.

      • outputType: Método de saída de log. Apenas LogService é suportado; portanto, os dados só podem ser enviados para o Simple Log Service.

      • outputDetail: Configurações detalhadas para a saída de log.

      • logSample: Exemplo de log.

      Para mais informações sobre os parâmetros, consulte Configurações do Logtail (legado).

    • Filtragem de contêineres

      • Para versões do Logtail anteriores a 1.0.34, a filtragem de contêineres é suportada apenas via variáveis de ambiente e rótulos de contêiner.

        O namespace do Kubernetes e os nomes dos contêineres correspondem aos rótulos de contêiner io.kubernetes.pod.namespace e io.kubernetes.container.name, respectivamente. Use esses rótulos para filtrar contêineres. Se eles não atenderem aos requisitos, utilize listas de permissões e bloqueios de variáveis de ambiente para a filtragem.

      • Para o Logtail 1.0.34 e posterior, use informações de nível do Kubernetes, como nome do pod, namespace, nome do contêiner e rótulos do contêiner, para filtragem.

        Configure os parâmetros de filtragem de contêineres no campo logtailConfig.inputDetail.advanced.k8s. Parâmetros suportados:

        • IncludeK8sLabel: Lista de permissões de rótulos do Kubernetes. Apenas contêineres com rótulos correspondentes terão logs coletados.

        • ExcludeK8sLabel: Lista de bloqueios de rótulos do Kubernetes. A coleta de logs é ignorada para contêineres com rótulos correspondentes.

        • K8sNamespaceRegex: Expressão regular para corresponder ao namespace.

        • K8sPodRegex: Expressão regular para corresponder ao nome do pod.

        • K8sContainerRegex: Expressão regular para corresponder ao nome do contêiner.

    Exemplos de arquivos YAML do CRD AliyunLogConfig

    Logs de texto

    Salve o conteúdo a seguir como log-file.yaml.

    apiVersion: log.alibabacloud.com/v1alpha1  # Use the default value. Do not modify.
    kind: AliyunLogConfig                      # Use the default value. Do not modify.
    metadata:
      name: test-file                  # Resource name, unique in the current Kubernetes cluster.
    spec:
      project: k8s-log-c326bc86****    # Optional. The project name. If the project does not exist, the system automatically creates it.
      logstore: test-file              # Required. The Logstore name. If the Logstore does not exist, the system automatically creates it.  
      logtailConfig:                   # Logtail configuration
        inputType: file                # Data source type. file = text log. plugin = stdout.
        configName: test-file          # The name of the Logtail configuration. Must match the resource name (metadata.name).
        inputDetail:                   # Detailed Logtail settings
          logType: common_reg_log      # Collect text logs in simple mode.
          logPath: /log/               # Path to the log files.
          filePattern: "*.log"         # File name pattern. Wildcard characters, such as the asterisk (*) and question mark (?), are supported. Example: log_*.log.
          dockerFile: true             # To collect logs from files in a container, set dockerFile to true.
          advanced:                    # Container filtering settings.
            k8s:
              K8sNamespaceRegex: ^(default)$
              K8sPodRegex: '^(eci-sls-demo.*)$'

    Saída padrão

    Salve o conteúdo a seguir como log-stdout.yaml.

    apiVersion: log.alibabacloud.com/v1alpha1   # Use the default value. Do not modify.
    kind: AliyunLogConfig                       # Use the default value. Do not modify.
    metadata:
      name: test-stdout               # Resource name, unique in the current Kubernetes cluster.
    spec:
      project: k8s-log-c326bc86****   # Optional. The project name. If the project does not exist, the system automatically creates it.
      logstore: test-stdout           # Required. The Logstore name. If the Logstore does not exist, the system automatically creates it.                 
      shardCount: 2                   # Optional. The number of shards. Default: 2. Valid values: 1 to 10.                         
      lifeCycle: 90                   # Optional. Log retention period in days (effective for new Logstores). Default: 90. Range: 1-3650 (3650 means permanent).
      logtailConfig:                  # Logtail configuration
        inputType: plugin             # Data source type. file = text log. plugin = stdout.                                
        configName: test-stdout       # The name of the Logtail configuration. Must match the resource name (metadata.name).
        inputDetail:                  # Detailed Logtail settings
          plugin:
            inputs:
              - type: service_docker_stdout
                detail:
                  Stdout: true
                  Stderr: true
    #              IncludeEnv:
    #                aliyun_logs_test-stdout: "stdout"
  3. Crie o CRD AliyunLogConfig.

    Execute os comandos a seguir para aplicar as configurações. Quando a configuração do Logtail entrar em vigor, ele começará a coletar logs de stdout ou texto dos contêineres correspondentes e os enviará para o Simple Log Service.

    kubectl apply -f log-file.yaml
    kubectl apply -f log-stdout.yaml
    Importante

    Após a coleta dos logs, crie um índice antes de consultar e analisar logs no Logstore. Para mais informações, consulte Criar índice.

Testar a coleta de logs

Depois de criar o CRD AliyunLogConfig, o Simple Log Service coleta automaticamente logs de novos pods. Crie o aplicativo a seguir para testar a coleta de logs.

  1. Crie um aplicativo.

    O exemplo a seguir usa um Deployment. Após iniciar, o contêiner imprime logs continuamente na saída padrão (stdout) e em um arquivo de log.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: eci-sls-demo
      labels:
        app: sls
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sls
      template:
        metadata:
          name: sls-test
          labels:
            app: sls
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - args:
            - -c
            - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
            command:
            - /bin/sh
            image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30
            imagePullPolicy: Always
            name: busybox

    Salve o arquivo YAML anterior como test-sls-crd.yaml e execute o comando a seguir para criar o aplicativo.

    kubectl create -f test-sls-crd.yaml
  2. Verifique o status do aplicativo.

    kubectl get pod

    Saída esperada:

    NAME                            READY   STATUS    RESTARTS   AGE
    eci-sls-demo-7bf8849b9f-cgpbn   1/1     Running   0          2m14s
  3. Visualize os logs.

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

    2. Clique em nome do projeto de destino.

    3. Localize o Logstore de destino e clique em nome dele para visualizar os logs.

      Logs de texto

      No console do Simple Log Service, selecione o Logstore test-file para visualizar os logs de arquivo coletados. As entradas de log incluem campos-chave como __container_name__ com o valor sls, __image_name__ com o valor registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30, __namespace__ com o valor default e content com o valor hello sls. Isso confirma que os logs do contêiner busybox foram coletados com sucesso.

      Saída padrão

      No console do Simple Log Service, selecione o Logstore test-stdout na lista à esquerda para visualizar os logs de stdout coletados. As entradas de log contêm campos como _container_name_ (valor: sls), _image_name_ (URL da imagem busybox), _namespace_ (default) e _source_ (stdout). O campo content exibe a saída do contêiner, como hello world.

Desativar a coleta de logs

Após criar um CRD de configuração de coleta de logs, o sistema coleta automaticamente logs de todos os Pods correspondentes. Para Pods dos quais você não deseja coletar logs, adicione a anotação k8s.aliyun.com/eci-sls-enable: "false" para desativar a coleta. Isso impede a criação automática de instâncias do Logtail e evita o desperdício de recursos.

Importante
  • Adicione as anotações aos metadados no arquivo de configuração do pod. Por exemplo, ao criar um Deployment, adicione anotações na seção spec.template.metadata.

  • As anotações relacionadas ao Elastic Container Instance são aplicadas apenas na criação do pod. Adicionar ou modificar essas anotações em um pod existente não surte efeito.

Exemplo:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eci-sls-demo2
  labels:
    app: sls
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sls
  template:
    metadata:
      name: sls-test
      labels:
        app: sls
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-sls-enable: "false"    # Disable log collection.
    spec:
      containers:
      - args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;
          done
        command:
        - /bin/sh
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        imagePullPolicy: Always
        name: busybox