Container Compute Service (ACS) integra-se ao Simple Log Service (SLS). Ao criar um cluster, ative o SLS para coletar rapidamente os logs de contêineres de um cluster ACS, incluindo stdout e arquivos de texto. Este tópico descreve como coletar logs de aplicação em um cluster ACS utilizando um recurso personalizado AliyunLogConfig.
Etapa 1: Ativar o complemento do Log Service
Ao criar um cluster ACS, selecione 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. Em seguida, 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 substituirá esses parâmetros e será necessário reconfigurá-los.
Etapa 2: Criar um recurso personalizado AliyunLogConfig
Utilize um recurso personalizado AliyunLogConfig para coletar logs de stdout e de arquivo de aplicações específicas. Para criar esse recurso, escolha Custom Resources > CRDs> Create from YAML no painel de navegação à esquerda. A tabela a seguir descreve os principais parâmetros de um recurso personalizado AliyunLogConfig.
|
Parâmetro |
Descrição |
Exemplo |
|
|
Nome do recurso de configuração de coleta de logs. Deve ser único dentro do cluster ACS. |
test-stdout |
|
|
Opcional. Nome do Project. Recomendamos o uso do formato |
k8s-log-c326bc86**** |
|
|
Obrigatório. Nome do Logstore. Se o Logstore não existir, o Simple Log Service o criará automaticamente. |
test-stdout |
|
|
Tipo de fonte de dados. |
plugin |
|
|
Nome da configuração do Logtail. Deve ser idêntico ao nome do recurso especificado em |
test-stdout |
|
|
Configuração detalhada do Logtail. Inclui definições para coleta de logs de stdout e de arquivo. |
Esta configuração coleta a saída padrão ( |
|
|
Recursos estendidos de configuração do Logtail. As configurações de
|
O Logtail coleta os logs do contêiner apenas quando todas as condições abaixo são atendidas:
|
Para mais informações sobre os parâmetros de configuração, consulte Configurações do Logtail (legado).
Exemplo 1: Coletar logs específicos de stdout
Para coletar logs de stdout (incluindo stderr) e filtrá-los por pods ou contêineres específicos, adicione regras de correspondência à seção detail da configuração de input. Aplique a seguinte configuração 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 inputDetail. Aplique a seguinte configuração 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 na Etapa 4: Visualize logs no console do SLS para verificar se os Logstores correspondentes foram criados. Caso contrário, revise e modifique suas configurações com base nas Configurações do Logtail (legado).
Etapa 3: Criar uma aplicação de exemplo
Depois de criar o recurso personalizado AliyunLogConfig, o Simple Log Service (SLS) coleta automaticamente os logs de novos pods que correspondem à configuração. Crie a seguinte aplicação de exemplo para testar a coleta de logs.
-
O exemplo abaixo mostra uma aplicação implantada como um Deployment. Após o início do contêiner, ele executa comandos para imprimir 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 do 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 sua configuração de coleta de logs para visualizar os logs em uma nova aba.
Neste exemplo, visualize 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 para o Logstore test-file mostram que os logs de arquivo do contêiner busybox foram coletados com sucesso. O caminho de origem é
/log/busybox.loge o conteúdo do log écontent: hello sls.
Mais informações
Para orientações sobre solução de problemas, consulte Solucionar falhas na coleta de logs do Logtail.