Colete logs de texto de contêineres de Serviço Knative executando um agente de log em cada nó via DaemonSet para garantir uma coleta não invasiva. Instale um componente de coleta de logs no cluster ACK para encaminhar os logs de todos os contêineres de cada nó ao Simple Log Service (SLS) para gerenciamento e análise.
Pré-requisitos
Antes de começar, verifique se:
O Knative está implantado no cluster.
Etapa 1: Instalar um componente de coleta de logs
O ACK oferece dois componentes de coleta de logs: LoongCollector e Logtail. Instale apenas um componente por cluster, pois não é possível executar ambos simultaneamente.
|
Componente |
Status |
Quando usar |
|
LoongCollector |
Versão canary |
Novos clusters nas regiões suportadas |
|
Logtail (logtail-ds) |
Disponibilidade geral |
Clusters existentes ou regiões ainda não suportadas pelo LoongCollector |
Instalar o LoongCollector
O LoongCollector está atualmente em versão canary. Verifique as
antes da instalação.
O LoongCollector, agente de log de próxima geração do SLS, aprimora o Logtail com integração planejada ao Application Real-Time Monitoring Service (ARMS), incluindo Managed Service for Prometheus e coleta de dados baseada em eBPF. Consulte Coleta de dados baseada em LoongCollector.
O loongcollector e o logtail-ds não podem coexistir. Se o logtail-ds estiver instalado, não será possível atualizar diretamente — um caminho de atualização estará disponível em breve.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no cluster desejado. No painel de navegação à esquerda, escolha Operations > Add-ons.
Na aba Logs and Monitoring, localize o componente loongcollector e clique em Install.
Após a instalação, o SLS cria automaticamente um projeto chamado k8s-log-${your_k8s_cluster_id} e os seguintes recursos:
|
Tipo de recurso |
Nome do recurso |
Descrição |
Exemplo |
|
Grupo de máquinas |
|
Grupo de máquinas para loongcollector-ds, usado na coleta de logs |
|
|
Grupo de máquinas |
|
Grupo de máquinas para loongcollector-cluster, usado na coleta de métricas |
|
|
Grupo de máquinas |
|
Grupo de máquinas para instância única, usado para criar configurações do LoongCollector |
|
|
Logstore |
|
Armazena logs do loongcollector-operator. Não exclua este Logstore. |
|
Instalar o Logtail
O Logtail é um agente do SLS que coleta logs de várias fontes — incluindo instâncias ECS, servidores locais e servidores de nuvem de terceiros — sem exigir alterações no código. Consulte Coleta de dados baseada em Logtail.
Instalar o Logtail em um cluster ACK existente
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no cluster de destino. No painel de navegação à esquerda, escolha Operations > Add-ons.
Na aba Logs and Monitoring, localize o componente logtail-ds e clique em Install.
Instalar o Logtail ao criar um cluster ACK
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
-
Na página Clusters, clique em Create Kubernetes Cluster. Na etapa Component Configurations, selecione Enable Log Service. Esta seção aborda apenas as configurações do SLS. Consulte Criar um cluster gerenciado ACK para outras configurações. Escolha como criar o projeto do SLS:
Select Project: use um projeto existente para gerenciar os logs de contêiner coletados.

Create Project: o SLS cria automaticamente um projeto. O nome do projeto inclui o
ClusterIDdo novo cluster.
ImportanteNa etapa Component Configurations, a opção Enable vem selecionada por padrão para Control Plane Component Logs. Quando ativada, o sistema coleta automaticamente logs dos componentes do plano de controle do cluster e aplica cobrança com base no método de faturamento pagamento conforme o uso. Avalie se deve ativar essa opção conforme seus requisitos. Consulte Coletar logs de componentes do plano de controle em clusters gerenciados ACK.

Após a instalação, o SLS cria automaticamente um projeto chamado k8s-log-<YOUR_CLUSTER_ID> e os seguintes recursos:
|
Tipo de recurso |
Nome do recurso |
Descrição |
Exemplo |
|
Grupo de máquinas |
|
Grupo de máquinas para logtail-daemonset, usado na coleta de logs |
|
|
Grupo de máquinas |
|
Grupo de máquinas para logtail-statefulset, usado na coleta de métricas |
|
|
Grupo de máquinas |
|
Grupo de máquinas para instância única, usado para criar configurações do Logtail |
|
|
Logstore |
|
Armazena logs do alibaba-log-controller. Evite criar uma configuração do Logtail para este Logstore. Você pode excluí-lo; a coleta de logs operacionais cessará após a exclusão. A cobrança segue o mesmo padrão dos Logstores comuns. Consulte Itens faturáveis do pagamento por dados ingeridos. |
— |
Etapa 2: Criar uma configuração de coleta
Escolha um método para criar a configuração de coleta. Use apenas um método por configuração.
|
Método |
Mais indicado para |
|
CRD - AliyunPipelineConfig (recomendado) |
Coleta e processamento complexos; consistência de versão entre a configuração do Logtail e o contêiner do Logtail em um cluster ACK. Requer logtail-ds posterior à V1.8.10. |
|
Console do SLS |
Configurações simples via interface gráfica; alguns recursos avançados e configurações personalizadas não estão disponíveis. |
|
Variáveis de ambiente |
Apenas configurações simples; logs de texto de linha única; sem processamento complexo. Suporta coleta de vários aplicativos para o mesmo Logstore ou para Logstores diferentes. |
|
CRD - AliyunLogConfig |
Cenários legados que utilizam o CRD antigo. Migre para AliyunPipelineConfig para obter melhor extensibilidade e estabilidade. |
CRD - AliyunPipelineConfig (recomendado)
Recomendado para novas configurações. Oferece melhor extensibilidade e estabilidade que o AliyunLogConfig, com suporte a pipelines complexos de coleta e processamento. Requer Logtail V0.5.1+.
Crie um Recurso Personalizado (CR) a partir do CRD AliyunPipelineConfig. A configuração é aplicada automaticamente. Para modificá-la, atualize o CR.
Principais restrições:
O valor de
configNamedeve ser exclusivo dentro do projeto do SLS.Crie um CR por configuração do Logtail. Se vários CRs referenciarem a mesma configuração, apenas o primeiro terá efeito.
Etapas:
Obtenha o arquivo kubeconfig e conecte-se ao cluster usando kubectl.
-
Crie um arquivo YAML:
vim cube.yaml Adicione a configuração ao arquivo YAML. Consulte os exemplos abaixo.
-
Aplique a configuração:
kubectl apply -f cube.yamlO Logtail começa a coletar logs dos contêineres especificados e a enviá-los ao SLS.
Após o início da coleta, crie índices no Logstore para habilitar consulta e análise.
Coletar logs de texto de linha única de contêineres específicos
Este exemplo cria uma configuração do Logtail chamada example-k8s-file para coletar logs de texto de linha única de contêineres cujos nomes contenham app. O arquivo de log é test.LOG no caminho /data/logs/app_1. Os logs são armazenados no Logstore k8s-file do projeto k8s-log-test.
apiVersion: telemetry.alibabacloud.com/v1alpha1
# Create a CR from the ClusterAliyunPipelineConfig CRD.
kind: ClusterAliyunPipelineConfig
metadata:
# The name must be unique in the Kubernetes cluster. It is also used as the Logtail configuration name.
name: example-k8s-file
spec:
# Specify the project to collect logs into.
project:
name: k8s-log-test
# Create a Logstore to store logs.
logstores:
- name: k8s-file
config:
inputs:
# Use input_file to collect text logs from containers.
- Type: input_file
# Log file path inside the containers.
FilePaths:
- /data/logs/app_1/**/test.LOG
# Enable container discovery.
EnableContainerDiscovery: true
# Filter containers. Multiple conditions use logical AND.
ContainerFilters:
# Match containers in the default namespace.
K8sNamespaceRegex: default
# Match containers whose name contains "app".
K8sContainerRegex: ^(.*app.*)$
flushers:
# Use flusher_sls to send logs to a Logstore.
- Type: flusher_sls
Logstore: k8s-file
# For valid endpoint and region values, see https://www.alibabacloud.com/help/en/sls/developer-reference/service-entrance
Endpoint: cn-hangzhou.log.aliyuncs.com
Region: cn-hangzhou
TelemetryType: logs
Consulte (Recomendado) Usar AliyunPipelineConfig para gerenciar uma configuração do Logtail e CreateLogtailPipelineConfig.
Coletar logs de texto multilinha de todos os contêineres
Este exemplo cria uma configuração do Logtail chamada example-k8s-file para coletar logs de texto multilinha de todos os contêineres em um cluster. O arquivo de log é test.LOG no caminho /data/logs/app_1. Os logs são analisados com uma expressão regular e armazenados no Logstore k8s-file do projeto k8s-log-test.
O plug-in input_file lê logs no formato {"content": "2024-06-19 16:35:00 INFO test log\nline-1\nline-2\nend"} e o plug-in processor_parse_regex_native os analisa em {"time": "2024-06-19 16:35:00", "level": "INFO", "msg": "test log\nline-1\nline-2\nend"}.
apiVersion: telemetry.alibabacloud.com/v1alpha1
# Create a CR from the ClusterAliyunPipelineConfig CRD.
kind: ClusterAliyunPipelineConfig
metadata:
name: example-k8s-file
spec:
project:
name: k8s-log-test
logstores:
- name: k8s-file
config:
# Optional: add a sample log for reference.
sample: |
2024-06-19 16:35:00 INFO test log
line-1
line-2
end
inputs:
- Type: input_file
FilePaths:
- /data/logs/app_1/**/test.LOG
EnableContainerDiscovery: true
# Enable multi-line log collection.
Multiline:
# Use a custom regex to identify the first line of each log entry.
Mode: custom
StartPattern: \d+-\d+-\d+.*
processors:
# Parse logs using a regular expression. Capturing groups define extracted fields.
- Type: processor_parse_regex_native
SourceKey: content
Regex: (\d+-\d+-\d+\s*\d+:\d+:\d+)\s*(\S+)\s*(.*)
Keys: ["time", "level", "msg"]
flushers:
- Type: flusher_sls
Logstore: k8s-file
Endpoint: cn-hangzhou.log.aliyuncs.com
Region: cn-hangzhou
TelemetryType: logs
CRD - AliyunLogConfig
Crie um CR a partir do CRD AliyunLogConfig. A configuração é aplicada automaticamente. Para modificá-la, atualize o CR.
Se vários CRs referenciarem a mesma configuração do Logtail, modificar ou excluir um CR afetará todos os outros e causará inconsistência de status com o SLS.
Etapas:
Obtenha o arquivo kubeconfig e conecte-se ao cluster usando kubectl.
-
Crie um arquivo YAML:
vim cube.yaml Adicione a configuração. Consulte o exemplo abaixo. O valor de
configNamedeve ser exclusivo no projeto do SLS.-
Aplique a configuração:
kubectl apply -f cube.yaml
Após o início da coleta, crie índices para habilitar consulta e análise.
Coletar logs de texto de linha única de contêineres específicos
Este exemplo cria uma configuração chamada example-k8s-file para coletar logs de texto de linha única de pods cujos nomes começam com app. O arquivo de log é test.LOG no caminho /data/logs/app_1. Os logs são armazenados no Logstore k8s-file do projeto k8s-log-test.
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: example-k8s-file
namespace: kube-system
spec:
# If left blank, the project named k8s-log-<your_cluster_id> is used.
project: k8s-log-test
# If the specified Logstore does not exist, SLS creates it automatically.
logstore: k8s-file
logtailConfig:
# Set to "file" for text logs.
inputType: file
configName: example-k8s-file
inputDetail:
# Simple mode for text logs.
logType: common_reg_log
logPath: /data/logs/app_1
# Supports wildcard characters (* and ?). Example: log_*.log
filePattern: test.LOG
# Required for container log collection.
dockerFile: true
advanced:
k8s:
K8sPodRegex: '^(app.*)$'
Consulte Usar AliyunLogConfig para gerenciar uma configuração do Logtail e CreateConfig.
Console do SLS
Faça login no console do Simple Log Service.
-
Na seção Quick Data Import, clique em Import Data. Na caixa de diálogo Import Data, clique no cartão Kubernetes - File.

Selecione o projeto e o Logstore e clique em Next. Use o projeto criado durante a instalação do Logtail.
-
Na etapa Machine Group Configurations, configure o seguinte:
-
Selecione uma opção de grupo de máquinas conforme sua configuração:
Kubernetes Clusters > ACK Daemonset
Kubernetes Clusters > Self-managed Cluster in DaemonSet Mode
ImportanteAs configurações subsequentes variam dependendo da opção selecionada.
-
Confirme se os grupos de máquinas aparecem em Applied Server Groups e clique em Next. O SLS cria automaticamente um grupo de máquinas chamado
k8s-group-${your_k8s_cluster_id}durante a instalação do Logtail.ImportantePara criar um novo grupo de máquinas, clique em Create Machine Group e configure os parâmetros. Consulte Coletar logs de contêiner de clusters ACK.
Se o status de heartbeat de um grupo de máquinas for FAIL, clique em Automatic Retry. Se o problema persistir, consulte Como solucionar erros relacionados a um grupo de máquinas do Logtail?
-
-
Crie uma configuração do Logtail e clique em Next. A coleta de logs começa após a criação. Opções de filtragem de contêiner Disponíveis para Logtail 1.0.34+. Versões anteriores: apenas variáveis de ambiente e rótulos de contêiner.
K8s Pod Name Regular Matching: corresponda contêineres pelo nome do pod usando uma expressão regular. Exemplo:
^(nginx-log-demo.*)$corresponde a todos os contêineres em pods cujo nome começa comnginx-log-demo.K8s Namespace Regular Matching: corresponda contêineres pelo namespace. Exemplo:
^(default|nginx)$corresponde a contêineres nos namespacesnginxedefault.K8s Container Name Regular Matching: corresponda contêineres pelo nome do contêiner (conforme definido em
spec.containers). Exemplo:^(container-test)$corresponde a contêineres chamadoscontainer-test.Container Label Whitelist / Blacklist: filtre contêineres por rótulos de contêiner (pares chave-valor). Namespaces do Kubernetes e nomes de contêiner mapeiam para os rótulos
io.kubernetes.pod.namespaceeio.kubernetes.container.name. Pares chave-valor são avaliados com lógica OR. A correspondência de string é o padrão; prefixe com^e sufixe com$para correspondência regex.Environment Variable Whitelist / Blacklist: filtre contêineres por pares chave-valor de variáveis de ambiente. Aplica-se lógica OR. Exemplo: defina Environment Variable Name como
NGINX_SERVICE_PORTe Environment Variable Value como^(80|6379)$para corresponder a contêineres na porta 80 ou 6379.Kubernetes Pod Label Whitelist / Blacklist: filtre contêineres por rótulos de pod do Kubernetes (distintos dos rótulos de contêiner). Aplica-se lógica OR. Exemplo: defina Label Name como
environmente Label Value como^(dev|pre)$para corresponder a contêineres com rótulos de podenvironment:devouenvironment:pre.
NotaUma configuração do Logtail leva até 3 minutos para entrar em vigor.
ImportanteRótulos de contêiner (obtidos via
docker inspect) diferem dos rótulos do Kubernetes. Consulte Obter rótulos e Obter variáveis de ambiente.Configurações globais
Parâmetro
Descrição
Nome da configuração
Nome exclusivo dentro do projeto. Não pode ser alterado posteriormente.
Tipo de tópico de log
Origem do tópico de log. Machine Group Topic: por grupo de máquinas. File Path Extraction: regex no caminho do arquivo. Custom: definido pelo usuário. Consulte Tópicos de log.
Parâmetros avançados
Opcional. Consulte CreateLogtailPipelineConfig.
Configurações de entrada
Parâmetro
Descrição
Logtail deployment mode
Selecione Daemonset para este caso de uso.
File path type
Selecione Path in Container na maioria dos casos. Selecione Host Path apenas para volumes montados via hostPath.
File path
Especifique o caminho do arquivo de log. Caminhos Linux começam com
/(exemplo: /apsara/nuwa//app.Log). Caminhos Windows começam com uma letra de unidade (exemplo:C:\Program Files\Intel\\*.Log). Use*e?apenas como caracteres curinga. Exemplos:/apsara/nuwa/**/*.logcoleta todos os arquivos.logsob/apsara/nuwarecursivamente./var/logs/app_*/**/*.logcoleta arquivos.logem subdiretórios correspondentes aapp_*sob/var/logs./var/log/nginx/**/access*coleta arquivos começando comaccesssob/var/log/nginxrecursivamente.Maximum directory monitoring depth
Profundidade máxima de subdiretório para o curinga
**.0monitora apenas o diretório especificado. Mantenha baixo — valores maiores aumentam o consumo de recursos e podem causar latência.Enable container metadata preview
Mostra metadados de contêiner correspondentes após a criação da configuração.
Container filtering
Filtre contêineres para coleta de logs. Logtail anterior a 1.0.34: apenas variáveis de ambiente e rótulos de contêiner. Logtail 1.0.34+: filtragem no nível do Kubernetes (Nome do Pod K8s, Namespace, Nome do Contêiner, Rótulo do Pod).
Log tag enrichment
Adicione tags de log a partir de variáveis de ambiente e rótulos de pod.
File encoding
Formato de codificação dos arquivos de log.
First collection size
Tamanho dos dados para a coleta inicial. Padrão: 1.024 KB. Intervalo: 0–10.485.760 KB. Arquivos menores que 1.024 KB são lidos desde o início; arquivos maiores são lidos a partir dos últimos 1.024 KB.
Collection blacklist
Exclua diretórios ou arquivos por caminho exato ou curingas (
*e?). Máximo de 10 entradas. Caminhos não podem terminar com/. Tipos: Caminho de Arquivo, Arquivo e Diretório.Allow file to be collected multiple times
Por padrão, uma configuração do Logtail por arquivo. Ative para permitir múltiplas configurações por arquivo.
Advanced parameters
Opcional. Consulte Criar uma configuração de pipeline do Logtail.
Configurações de processador
Parâmetro
Descrição
Amostra de log
Logs de amostra para configuração de processamento. Máximo: 1.500 caracteres.
Modo multilinha
Detecção de log multilinha. Custom: use Regex to Match First Line para limites de log. Multi-line JSON: cada objeto JSON abrange várias linhas. Processing Method If Splitting Fails: Discard (descarta logs não correspondentes) ou Retain Single Line (uma linha por entrada).
Método de processamento
Adicione processadores para processamento de dados. Logtail V2.0: combine livremente processadores nativos e estendidos (estendidos devem seguir nativos). Versões anteriores: sem mistura.
-
Crie índices e visualize dados, depois clique em Next. A indexação de texto completo é habilitada por padrão. Para criar índices de campo automaticamente, clique em Automatic Index Generation. Consulte Criar índices.
ImportanteUse índices de texto completo para consultar todos os campos. Use índices de campo para consultar campos específicos e reduzir o tráfego de índice. Índices de campo são necessários para análise de logs (consultas devem incluir uma instrução SELECT).
Clique em Query Log. Aguarde cerca de 1 minuto para que os índices entrem em vigor e visualize os logs na aba Raw Logs. Consulte Guia de consulta e análise de logs.
Variáveis de ambiente
Configure a coleta de logs no YAML do seu Serviço Knative usando variáveis de ambiente. Os nomes devem usar o prefixo aliyun_logs_. A parte {key} permite apenas letras minúsculas, dígitos e hifens (-).
A configuração baseada em variáveis de ambiente não é suportada em cenários de computação de borda.
Habilitar o SLS ao criar um Serviço Knative
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no cluster de destino. No painel de navegação à esquerda, escolha Applications > Knative.
Clique na aba Services, selecione um namespace e clique em Create from Template. Selecione Custom na seção Sample Template e use o seguinte YAML:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go-log
spec:
template:
spec:
containers:
- name: my-demo-app
image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'
env:
# Collect stdout to Logstore "log-stdout".
- name: aliyun_logs_log-stdout
value: stdout
# Collect /var/demo/*.log files to Logstore "log-varlog".
- name: aliyun_logs_log-varlog
value: /var/demo/*.log
# Add a custom tag to all logs collected by this container.
- name: aliyun_logs_mytag1_tags
value: tag1=v1
volumeMounts:
- name: volumn-sls-mydemo
mountPath: /var/demo
# Optional: add a sleep command if the pod restarts repeatedly.
command: ["sh", "-c"]
args: ["sleep 3600"]
volumes:
- name: volumn-sls-mydemo
emptyDir: {}
Como funcionam as variáveis de ambiente:
-
aliyun_logs_{key}: A{key}torna-se o nome do Logstore e o nome da configuração. Definavaluecomostdoutpara coletar stdout do contêiner, ou como um caminho de arquivo para coletar arquivos de log.aliyun_logs_log-stdout: stdoutcria o Logstorelog-stdoute coleta stdout do contêiner.aliyun_logs_log-varlog: /var/demo/*.logcria o Logstorelog-varloge coleta os arquivos correspondentes.
aliyun_logs_{key}_tags: Acrescenta uma tag a todos os logs do contêiner. Formato:{tag-key}={tag-value}. A{key}é o nome da tag (sem underscores).volumeMounts: Necessário ao coletar arquivos de log que não sejam stdout. OmountPathdeve corresponder ao diretório na variável de caminho do log.
Clique em Create para enviar a configuração.
(Opcional) Configurações avançadas de variáveis de ambiente
|
Variável |
Obrigatório |
Descrição |
Exemplo |
Observações |
|
|
Sim |
Especifica a origem do log. Defina como |
|
Os logs são coletados no modo simples por padrão. Para análise, use o console do SLS ou CRDs. |
|
|
Não |
Adiciona tags aos logs. Formato: |
|
— |
|
|
Não |
Especifica o projeto do SLS. O padrão é o projeto criado durante a instalação do Logtail. |
|
O projeto deve estar na mesma região que o Logtail. |
|
|
Não |
Especifica o nome do Logstore. O padrão é |
|
— |
|
|
Não |
Número de shards para o Logstore. Valores válidos: 1–10. Padrão: 2. |
|
Não tem efeito se o Logstore já existir. |
|
|
Não |
Período de retenção de logs em dias. Valores válidos: 1–3650. Defina como 3650 para armazenamento permanente. Padrão: 90 dias. |
|
Não tem efeito se o Logstore já existir. |
|
|
Não |
Grupo de máquinas onde o aplicativo está implantado. O padrão é o grupo de máquinas do Logtail. |
|
|
|
|
Não |
Tipo de Logstore. Padrão: |
|
Requer imagem logtail-ds v1.3.1 ou posterior. Não tem efeito se o Logstore já existir. |
Etapa 3: Consultar e analisar logs
Faça login no console do Simple Log Service.
-
Na seção Projects, clique no projeto para abrir sua página de detalhes.

-
No painel de navegação à esquerda, clique no ícone
ao lado do Logstore. Na lista suspensa, selecione Search & Analysis.
Aguarde cerca de 1 minuto para que os índices entrem em vigor e visualize os logs na aba Raw Logs. Consulte Guia de consulta e análise de logs.
Campos padrão em logs de texto de contêiner
Cada log de texto de contêiner inclui os seguintes campos por padrão:
|
Campo |
Descrição |
|
|
Nome do host do contêiner |
|
|
Caminho do arquivo de log no contêiner |
|
|
Endereço IP do contêiner |
|
|
Nome da imagem usada pelo contêiner |
|
|
Nome do pod |
|
|
Namespace do pod |
|
|
UID do pod |
Próximas etapas
Solucione erros de coleta de logs: Como visualizo erros de coleta do Logtail? e O que faço se ocorrerem erros ao coletar logs de contêineres?
Implante o DaemonSet do Logtail para coletar logs de contêiner de clusters ACK.