O Container Compute Service (ACS) é integrado ao Simple Log Service (SLS). Ao criar um cluster, você pode ativar o SLS para coletar rapidamente logs de contêineres no cluster ACS, incluindo stdout e arquivos de texto. Este tópico descreve como coletar logs de aplicação em um cluster ACS usando um recurso personalizado AliyunLogConfig.
Etapa 1: Ative o complemento do Log Service
Ao criar um cluster ACS, você pode selecionar Enable Log Service para ativar automaticamente o complemento do Log Service. Caso não tenha selecionado essa opção durante a criação do cluster, siga as etapas abaixo para ativar o complemento em um cluster existente.
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, clique em Add-ons.
Na seção Logs and Monitoring, localize alibaba-log-controller. Clique em Install. Na caixa de diálogo Install, clique em OK.
Se você personalizou a configuração e as variáveis de ambiente do alibaba-log-controller, a atualização sobrescreve esses parâmetros, sendo necessário reconfigurá-los.
Etapa 2: Crie um recurso personalizado AliyunLogConfig
O recurso personalizado AliyunLogConfig permite coletar logs de stdout e de arquivos de aplicações específicas. Para criar esse recurso, navegue até Custom Resources > CRDs> Create from YAML no painel de navegação à esquerda. A tabela a seguir descreve os principais parâmetros do recurso personalizado AliyunLogConfig.
|
Parâmetro |
Descrição |
Exemplo |
|
|
Nome do recurso de configuração de coleta de logs. O nome precisa ser único dentro do cluster ACS. |
test-stdout |
|
|
Opcional. Nome do Project. Recomenda-se usar o formato |
k8s-log-c326bc86**** |
|
|
Obrigatório. Nome do Logstore. Se o Logstore não existir, o Simple Log Service o cria automaticamente. |
test-stdout |
|
|
Tipo da fonte de dados. |
plugin |
|
|
Nome da configuração do Logtail. Deve ser igual ao nome do recurso especificado em |
test-stdout |
|
|
Configuração detalhada do Logtail, incluindo as definições para coleta de logs de stdout e de arquivos. |
Coleta a saída padrão ( |
|
|
Recursos estendidos de configuração do Logtail. As definições de
|
O Logtail coleta logs de contêineres somente quando todas as condições a seguir são atendidas:
|
Para mais informações sobre os parâmetros de configuração, consulte Logtail configurations (legacy).
Exemplo 1: Coletar logs de stdout específicos
Para coletar logs de stdout (incluindo stderr) e filtrá-los por pods ou contêineres específicos, adicione regras de correspondência na seção detail da configuração de input. Aplique a configuração a seguir ao seu cluster ACS.
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-stdout
spec:
project: k8s-log-c326bc86**** # Replace this with the actual name of your Project.
logstore: test-stdout
shardCount: 2
lifeCycle: 90
logtailConfig:
inputType: plugin
configName: test-stdout
inputDetail:
plugin:
inputs:
- type: service_docker_stdout
detail:
Stdout: true
Stderr: true
K8sNamespaceRegex: ^(default)$
K8sContainerRegex: ^(busybox)$
K8sPodRegex: ^backend.+$
IncludeK8sLabel:
app: backend
application: prod
Exemplo 2: Coletar logs de arquivo específicos
Para coletar logs de arquivo de pods ou contêineres específicos, adicione regras de correspondência dentro de um bloco advanced na configuração de inputDetail. Aplique a configuração a seguir ao seu cluster ACS.
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-file
spec:
project: k8s-log-c326bc86**** # Replace this with the actual name of your Project.
logstore: test-file
logtailConfig:
inputType: file
configName: test-file
inputDetail:
logType: common_reg_log
logPath: /log/
filePattern: "*.log"
dockerFile: true
advanced:
k8s:
K8sNamespaceRegex: ^(default)$
K8sContainerRegex: ^(busybox)$
K8sPodRegex: ^backend.+$
IncludeK8sLabel:
app: backend
application: prod
Após criar os recursos personalizados AliyunLogConfig test-stdout e test-file, siga as instruções em Step 4: View logs in the SLS console para verificar se os Logstores correspondentes foram criados. Caso contrário, revise e ajuste suas configurações com base em Logtail configurations (legacy).
Etapa 3: Crie uma aplicação de exemplo
Após criar o recurso personalizado AliyunLogConfig, o Simple Log Service (SLS) coleta automaticamente logs de novos pods que correspondem à configuração. Crie a aplicação de exemplo a seguir para testar a coleta de logs.
-
O exemplo abaixo mostra uma aplicação implantada como Deployment. Após o contêiner iniciar, ele executa comandos que imprimem logs continuamente no stdout e em um arquivo de log.
apiVersion: apps/v1 kind: Deployment metadata: name: backend-busybox labels: app: backend application: prod spec: replicas: 1 selector: matchLabels: app: backend application: prod template: metadata: name: backend-busybox labels: app: backend application: prod spec: containers: - args: - -c - mkdir -p /log; while true; do echo hello world; date; echo hello sls >> /log/busybox.log; sleep 1; done command: - /bin/sh image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28 imagePullPolicy: Always name: busybox
Etapa 4: Visualize logs no console do SLS
Após aplicar a configuração, o Simple Log Service (SLS) coleta e armazena os logs da aplicação de exemplo. Visualize os logs de contêiner no console do SLS.
Faça login no console do SLS.
Na seção Projects, clique no Project do seu cluster ACS (padrão: k8s-log-{ACS_cluster_ID}) para abrir a lista de Logstores.
-
Na lista, clique no nome do Logstore especificado na configuração de coleta de logs para visualizar os logs em uma nova aba.
Neste exemplo, é possível visualizar os logs de stdout (no Logstore test-stdout) e os logs de arquivo do contêiner (no Logstore test-file) na página de consulta de logs.
Na página de consulta do Logstore test-stdout, observe que o SLS coletou 582 logs. Os logs brutos contêm campos como
_container_name_,_image_name_,_namespace_,_pod_name_,_source_(com o valorstdout) econtent. Isso confirma que os logs de stdout do contêiner busybox foram coletados com sucesso.Os resultados da consulta do Logstore test-file mostram que os logs de arquivo do contêiner busybox foram coletados com sucesso. O caminho de origem é
/log/busybox.log, e o conteúdo do log écontent: hello sls.
Mais informações
Para orientações sobre solução de problemas, consulte Troubleshoot Logtail log collection failures.