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
Faça login no console do ACK.
No canto superior esquerdo da barra de navegação superior, selecione uma região.
Na página Clusters, clique em nome do cluster ACK Serverless desejado para abrir a página de detalhes.
-
Implante o componente alibaba-log-controller no cluster.
No painel de navegação à esquerda da página de detalhes do cluster, escolha .
Clique em aba Logs and Monitoring, localize o cartão alibaba-log-controller e clique em Install.
-
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
Conecte-se ao cluster ACK Serverless.
-
Crie um arquivo de configuração YAML para o CRD AliyunLogConfig.
ImportantePara 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.
-
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.yamlImportanteApó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.
-
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: busyboxSalve 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 -
Verifique o status do aplicativo.
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE eci-sls-demo-7bf8849b9f-cgpbn 1/1 Running 0 2m14s -
Visualize os logs.
Faça login no console do Simple Log Service.
Clique em nome do projeto de destino.
-
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 valorsls,__image_name__com o valorregistry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30,__namespace__com o valordefaultecontentcom o valorhello 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 campocontentexibe a saída do contêiner, comohello 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.
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