Container Compute Service (ACS) integra-se ao Alibaba Cloud Simple Log Service (SLS). Ao criar um cluster ACS, ative o serviço de log para coletar rapidamente os logs de contêiner do cluster, incluindo stdout e arquivos de texto dos contêineres. Este tópico descreve como coletar logs de aplicações em um cluster ACS utilizando variáveis de ambiente do pod.
Etapa 1: Ativar o complemento Log Service
Ao criar um cluster ACS, selecione Enable Log Service para ativar automaticamente o complemento 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 substituirá esses parâmetros e será necessário reconfigurá-los.
Etapa 2: Configurar a coleta de logs durante a criação da aplicação
Ao criar uma aplicação, configure a coleta de logs de contêiner por meio do console ou de um arquivo YAML.
Console wizard
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, escolha Workloads > Deployments.
-
Na página Deployments, selecione um namespace na lista suspensa Namespace. Em seguida, no canto superior direito, clique em Create from Image.
NotaEste exemplo utiliza um Deployment, mas o processo é o mesmo para outros tipos de carga de trabalho, como StatefulSets.
-
Na aba Basic Information, defina Name:, Replicas: e Type. Clique em para acessar a página .
NotaEsta seção descreve apenas as configurações relacionadas ao Simple Log Service. Para obter informações sobre outros itens de configuração da aplicação, consulte Criar uma carga de trabalho sem estado (Deployment).
-
Na seção , configure as informações relacionadas aos logs.
-
Defina a Collection Configuration.
Clique no ícone + para criar uma nova configuração de coleta. Cada configuração consiste em um Logstore e um Log Path in Container (Can be set to stdout).
-
Logstore: Especifique um nome para o Logstore que armazenará os logs coletados. Se o Logstore não existir, o ACS o criará automaticamente no Projeto do Simple Log Service associado ao cluster.
NotaPor padrão, os logs em um Logstore recém-criado são retidos por 90 dias.
-
Log Path in Container: Especifique o caminho de onde os logs serão coletados. Por exemplo, use /usr/local/tomcat/logs/catalina.*.log para coletar logs de texto do Tomcat.
NotaSe você definir este parâmetro como stdout, o stdout e o stderr do contêiner serão coletados.
Cada entrada cria uma configuração de coleta para o Logstore especificado. Por padrão, os logs são coletados no modo simples (linha por linha).
Exemplo: Defina o nome do Logstore como access e o caminho do log no contêiner como
/usr/local/tomcat/logs/catalina.*.log. Defina outro nome de Logstore como catalina e o caminho comostdout. Observação: Certifique-se de que o complemento do agente de log esteja implantado no cluster.
-
-
Defina uma Custom Tag.
Clique no ícone + para criar uma nova tag personalizada. Cada tag personalizada é um par chave-valor anexado aos logs coletados. Use essas tags para adicionar metadados, como número de versão, aos logs do seu contêiner.
No campo Tag Name, insira
release. No campo Tag Value, insira1.0.0.
-
-
Após concluir a configuração, clique em no canto superior direito.
Para obter informações sobre operações subsequentes, consulte Criar uma carga de trabalho sem estado (Deployment).
YAML file
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Deployments, selecione um namespace na lista suspensa Namespace. Em seguida, no canto superior direito, clique em Create from YAML.
NotaEste exemplo utiliza um Deployment, mas o processo é o mesmo para outros tipos de carga de trabalho, como StatefulSets.
-
Configure o arquivo YAML.
A sintaxe do arquivo YAML segue a sintaxe do Kubernetes. Para especificar uma configuração de coleta para o contêiner, use
envpara adicionar uma Collection Configuration e uma Custom Tag. O código a seguir fornece um exemplo de um pod simples:apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log - name: aliyun_logs_mytag1_tags value: tag1=v1 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Configure as definições na seguinte ordem, conforme suas necessidades.
NotaPara obter mais informações sobre requisitos avançados de coleta de logs, consulte Etapa 3: Parâmetros avançados de coleta de logs.
-
Use variáveis de ambiente para criar uma Collection Configuration e uma Custom Tag. Todas as variáveis de ambiente relacionadas à configuração têm o prefixo
aliyun_logs_.-
Crie uma configuração de coleta.
apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]No exemplo, duas configurações de coleta são criadas usando o formato
aliyun_logs_{key}. Os valores correspondentes de{key}sãolog-stdoutelog-varlog.aliyun_logs_log-stdout: Esta variável cria uma configuração de coleta para ostdoutdo contêiner. Os logs coletados são enviados para umLogstorechamadolog-stdout. A configuração de coleta correspondente do Simple Log Service também se chamalog-stdoute utiliza olog-stdoutLogstore.aliyun_logs_log-varlog: Esta variável de ambiente especifica uma configuração que cria umLogstorechamadolog-varloge define o caminho de coleta de logs como /var/log/*.log. O nome da configuração de coleta correspondente do Simple Log Service também élog-varlog. O objetivo desta configuração é coletar o conteúdo dos arquivos /var/log/*.log de um contêiner e enviá-lo para olog-varlogLogstore.
-
Crie uma tag personalizada.
apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: - name: aliyun_logs_mytag1_tags value: tag1=v1 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]O Simple Log Service adiciona automaticamente esta tag como um campo a todos os logs coletados do contêiner. Neste exemplo, a parte
mytag1do nome da variável pode serany name that does not contain an underscore (_).
-
-
Se você especificar um caminho de coleta diferente de stdout, também deverá definir um
volumeMountscorrespondente na especificação do pod.No exemplo, a configuração de coleta inclui a coleta de /var/log/*.log. Portanto, um
volumeMountspara /var/log é adicionado adequadamente.
-
Após escrever o arquivo YAML, clique em para aplicar a configuração ao cluster ACS.
Etapa 3: Parâmetros avançados de coleta de logs
Use diversas variáveis de ambiente para configurar parâmetros avançados para requisitos específicos de coleta de logs.
|
Parâmetro |
Descrição |
Exemplo |
Observações |
|
aliyun_logs_{key} |
|
|
|
|
aliyun_logs_{key}_tags |
Opcional. O valor deve estar no formato {tag-key}={tag-value} e ajuda a identificar os logs. |
|
Não aplicável. |
|
aliyun_logs_{key}_project |
Opcional. O Projeto SLS. Se esta variável de ambiente não for definida, o padrão será o Projeto selecionado durante a instalação do complemento. |
|
O Projeto deve estar na mesma região onde o complemento Log Service é executado. |
|
aliyun_logs_{key}_logstore |
Opcional. O Logstore SLS. Se esta variável de ambiente não for definida, o nome do Logstore assumirá o valor de {key} por padrão. |
|
Não aplicável. |
|
aliyun_logs_{key}_shard |
Opcional. O número de shards a serem criados para o Logstore. Valores válidos: 1 a 10. Se esta variável de ambiente não for definida, o valor padrão será 2. Nota
Este parâmetro se aplica apenas quando um Logstore é criado; ele não afeta Logstores existentes. |
|
Não aplicável. |
|
aliyun_logs_{key}_ttl |
Opcional. O período de retenção de logs em dias. Valores válidos: 1 a 3650.
Nota
Este parâmetro se aplica apenas quando um Logstore é criado; ele não afeta Logstores existentes. |
|
Não aplicável. |
|
aliyun_logs_{key}_machinegroup |
Opcional. O grupo de máquinas para a aplicação. Se esta variável de ambiente não for definida, o padrão será o grupo de máquinas selecionado durante a instalação do complemento Log Service. Para obter mais informações sobre como usar este parâmetro, consulte Caso de uso especial 2: Roteamento de logs de diferentes aplicações para diferentes Projetos. |
|
Não aplicável. |
|
aliyun_logs_{key}_logstoremode |
Opcional. O tipo do Logstore SLS. Se você não especificar este parâmetro, o valor padrão será standard. Valores válidos: Nota
Este parâmetro se aplica apenas quando um Logstore é criado; ele não afeta Logstores existentes.
|
|
Não aplicável. |
-
Caso de uso 1: Coleta para um único Logstore
Para coletar dados de várias aplicações no mesmo Logstore, defina o parâmetro aliyun_logs_{key}_logstore. Por exemplo, a configuração a seguir coleta o stdout de duas aplicações e o envia para o Logstore
stdout-logstore.No exemplo, a
{key}da Aplicação 1 éapp1-stdout, e a{key}da Aplicação 2 éapp2-stdout.Variáveis de ambiente para a Aplicação 1:
apiVersion: v1 kind: Pod metadata: name: my-demo-1 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_logstore value: stdout-logstore command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Variáveis de ambiente para a Aplicação 2:
apiVersion: v1 kind: Pod metadata: name: my-demo-2 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_logstore value: stdout-logstore command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"] -
Caso de uso 2: Roteamento de logs para diferentes Projetos
Para coletar logs de diferentes aplicações e roteá-los para diferentes Projetos, siga estas etapas:
Em cada Projeto, crie um grupo de máquinas com um identificador personalizado chamado
k8s-group-{cluster-id}, onde{cluster-id}é o ID do cluster. O nome do grupo de máquinas pode ser personalizado.-
Configure as informações de Projeto, Logstore e grupo de máquinas nas variáveis de ambiente de cada aplicação. O nome do grupo de máquinas deve ser aquele que você criou na etapa anterior.
No exemplo a seguir, a
{key}da Aplicação 1 éapp1-stdout, e a{key}da Aplicação 2 éapp2-stdout. Se ambas as aplicações estiverem no mesmo cluster Kubernetes, elas poderão usar o mesmo grupo de máquinas.Variáveis de ambiente para a Aplicação 1:
apiVersion: v1 kind: Pod metadata: name: my-demo-1 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_project value: app1-project - name: aliyun_logs_app1-stdout_logstore value: app1-logstore - name: aliyun_logs_app1-stdout_machinegroup value: app1-machine-group command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Variáveis de ambiente para a Aplicação 2:
apiVersion: v1 kind: Pod metadata: name: my-demo-2 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables for Application 2 - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_project value: app2-project - name: aliyun_logs_app2-stdout_logstore value: app2-logstore - name: aliyun_logs_app2-stdout_machinegroup value: app1-machine-group command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
Etapa 4: Visualizar logs no console SLS
Este exemplo mostra como visualizar logs de uma aplicação criada com o assistente do console. Após a configuração, o Simple Log Service coleta automaticamente os logs da aplicação, que podem ser visualizados no console SLS.
Faça login no console SLS.
Na seção Projects, selecione o Projeto correspondente ao cluster ACS. Por padrão, o Projeto é nomeado k8s-log-{ACS-Cluster-ID}. Em seguida, acesse a aba Logstores.
-
Na lista de Logstores, localize o Logstore especificado na configuração de coleta. Passe o mouse sobre o nome do Logstore. No lado direito do nome do Logstore, clique no ícone
e, em seguida, clique em Search & Analysis.Na página de consulta de logs, você pode visualizar os logs de stdout da aplicação e os logs de texto do contêiner. A tag personalizada aparece como um campo nos logs.
Mais informações
Após coletar logs de contêineres Kubernetes usando o Simple Log Service, visualize os logs coletados no console SLS.
Para informações sobre solução de problemas, consulte Solucionar falhas na coleta de logs.