Como configurar a rotação de logs para Docker

DockerBeginner
Pratique Agora

Introdução

O Docker tornou-se uma plataforma de contentores amplamente adotada, permitindo que desenvolvedores construam, implantem e executem aplicações num ambiente consistente e escalável. À medida que a sua infraestrutura baseada em Docker cresce, a gestão dos dados de log cada vez maiores torna-se uma tarefa crucial. Este tutorial irá guiá-lo através do processo de configuração da rotação de logs para os seus contentores Docker, garantindo uma gestão eficiente de logs e otimização do armazenamento.

Compreendendo os Logs do Docker

O Docker é uma poderosa plataforma de contentores que revolucionou a forma como as aplicações são desenvolvidas, implantadas e geridas. Um dos aspetos cruciais do trabalho com o Docker é a compreensão e gestão dos logs gerados pelos contentores Docker. Os logs fornecem informações valiosas sobre o comportamento, desempenho e estado das suas aplicações em contentores, o que é essencial para a resolução de problemas, monitorização e auditoria.

O que são os Logs do Docker?

O Docker fornece um mecanismo de logs embutido que captura as streams de saída padrão (stdout) e erro padrão (stderr) de cada contentor. Este mecanismo de logs é conhecido como o driver de logs do Docker e permite visualizar e gerir os logs gerados pelos seus contentores.

Aceder aos Logs do Docker

Pode aceder aos logs de um contentor Docker utilizando o comando docker logs. Este comando permite visualizar os logs de um contentor específico, seguir a stream de logs em tempo real e até filtrar os logs com base em vários critérios.

## Visualizar os logs de um contentor

## Seguir a stream de logs em tempo real

## Filtrar logs com base num intervalo de tempo específico

Compreendendo os Níveis de Logs

Os logs do Docker podem ter diferentes níveis de logs, que indicam a gravidade da mensagem. Os níveis de logs disponíveis são:

  • debug: Informações detalhadas sobre a operação do contentor.
  • info: Informações gerais sobre a operação do contentor.
  • warn: Avisos sobre potenciais problemas ou comportamentos inesperados.
  • error: Erros que podem ter ocorrido durante a operação do contentor.
  • fatal: Erros graves que fizeram com que o contentor falhasse.

Pode controlar o nível de logs dos seus contentores definindo a opção --log-level ao iniciar um contentor.

## Iniciar um contentor com um nível de log específico

Drivers de Logs do Docker

O Docker suporta vários drivers de logs, que determinam como os logs são armazenados e geridos. O driver de logs padrão é o driver json-file, que armazena os logs num formato JSON no sistema de ficheiros do host. No entanto, pode configurar o Docker para utilizar outros drivers de logs, como syslog, journald ou fluentd, dependendo das suas necessidades e infraestrutura.

graph LR A[Contentor Docker] --> B[Driver de Logs] B --> C[json-file] B --> D[syslog] B --> E[journald] B --> F[fluentd]

Compreendendo os fundamentos dos logs do Docker, pode gerir eficazmente os logs gerados pelas suas aplicações em contentores e utilizá-los para resolver problemas, monitorizar o desempenho e garantir a fiabilidade da sua infraestrutura.

Configurando a Rotação de Logs para Contentores Docker

À medida que os seus contentores Docker geram mais logs ao longo do tempo, os ficheiros de log podem rapidamente consumir uma quantidade significativa de espaço de disco no sistema host. Para evitar isto, pode configurar a rotação de logs, que é o processo de arquivar e apagar regularmente ficheiros de log mais antigos para liberar espaço de disco.

Compreendendo a Rotação de Logs

A rotação de logs é uma prática comum em administração de sistemas, onde os ficheiros de log são periodicamente rotacionados, comprimidos e arquivados para manter um tamanho de ficheiro de log gerenciável. Este processo garante que os ficheiros de log não cresçam indefinidamente e consumam todo o espaço de disco disponível.

Configurando a Rotação de Logs para Contentores Docker

Para configurar a rotação de logs para contentores Docker, pode utilizar a opção embutida --log-opt ao iniciar um contentor. Esta opção permite especificar os parâmetros de rotação de logs, como o tamanho máximo do ficheiro de log, o número de ficheiros de log arquivados a manter e o formato de compressão.

## Iniciar um contentor com rotação de logs configurada

No exemplo acima, o contentor está configurado para rotar os ficheiros de log quando atingem um tamanho máximo de 10 MB e para manter um máximo de 5 ficheiros de log arquivados.

Implementando Estratégias de Rotação de Logs

Embora a opção embutida --log-opt seja uma forma conveniente de configurar a rotação de logs para contentores individuais, pode não ser adequada para gerir a rotação de logs em toda a sua infraestrutura Docker. Nestes casos, pode implementar estratégias de rotação de logs automatizadas utilizando ferramentas ou scripts externos.

Uma abordagem popular é utilizar a utilidade logrotate, que é uma ferramenta padrão para gerir a rotação de logs em sistemas Linux. Pode criar um ficheiro de configuração logrotate que especifique as regras de rotação de logs para os seus contentores Docker e, em seguida, agendar o comando logrotate para ser executado periodicamente utilizando um trabalho cron ou um serviço de sistema.

Eis um exemplo de ficheiro de configuração logrotate para contentores Docker:

/var/lib/docker/containers/*/*.log {
    rotate 5
    copytruncate
    compress
    delaycompress
    missingok
    notifempty
}

Este ficheiro de configuração rotará os ficheiros de log para todos os contentores Docker, mantendo um máximo de 5 ficheiros de log arquivados, comprimindo os ficheiros arquivados e apagando os ficheiros de log se estiverem vazios.

Configurando a rotação de logs para os seus contentores Docker, pode garantir que o espaço de disco do seu sistema host é utilizado eficientemente e que as suas aplicações em contentores continuam a funcionar sem problemas, sem serem afetadas por ficheiros de log em crescimento.

Implementando Estratégias de Rotação Automática de Logs

Embora a opção embutida --log-opt no Docker seja uma forma conveniente de configurar a rotação de logs para contentores individuais, pode não ser a solução mais escalável ou eficiente para gerir a rotação de logs em toda a sua infraestrutura Docker. Nestes casos, pode implementar estratégias de rotação de logs automatizadas utilizando ferramentas ou scripts externos.

Utilizando logrotate

Uma abordagem popular é utilizar a utilidade logrotate, que é uma ferramenta padrão para gerir a rotação de logs em sistemas Linux. O logrotate pode ser configurado para monitorizar e rotar ficheiros de log com base em vários critérios, como tamanho do ficheiro, idade ou um horário.

Eis um exemplo de como pode configurar o logrotate para gerir os logs de todos os contentores Docker num sistema Ubuntu 22.04:

  1. Crie um ficheiro de configuração logrotate para contentores Docker:

    sudo touch /etc/logrotate.d/docker-containers
    sudo nano /etc/logrotate.d/docker-containers
  2. Adicione a seguinte configuração ao ficheiro:

    /var/lib/docker/containers/*/*.log {
        rotate 5
        copytruncate
        compress
        delaycompress
        missingok
        notifempty
    }

    Esta configuração rotará os ficheiros de log de todos os contentores Docker, mantendo um máximo de 5 ficheiros de log arquivados, comprimindo os ficheiros arquivados e apagando os ficheiros de log se estiverem vazios.

  3. Grave o ficheiro e saia do editor de texto.

  4. Teste a configuração do logrotate:

    sudo logrotate -d /etc/logrotate.d/docker-containers

    A opção -d executará o logrotate em modo de depuração, o que lhe mostrará as ações que ele tomaria sem as executar de facto.

  5. Programe o comando logrotate para ser executado periodicamente utilizando um trabalho cron ou um serviço de sistema.

    sudo crontab -e

    Adicione a seguinte linha ao crontab para executar o logrotate diariamente às 3 da manhã:

    0 3 * * * /usr/sbin/logrotate /etc/logrotate.d/docker-containers

Utilizando Ferramentas de Terceiros

Para além do logrotate, existem várias ferramentas e serviços de terceiros que podem ajudá-lo a implementar estratégias de rotação automática de logs para a sua infraestrutura Docker. Algumas opções populares incluem:

  • Fluentd: Um popular coletor de dados de código aberto que pode ser utilizado para gerir e rotar logs de contentores Docker.
  • Elastic Stack (ELK): Um conjunto de ferramentas que inclui Elasticsearch, Logstash e Kibana, que podem ser utilizadas para gestão e rotação centralizada de logs.
  • Splunk: Uma plataforma comercial de gestão e análise de logs que pode ser integrada com o Docker para gerir e rotar logs.
  • LabEx Log Rotation: Um serviço da marca LabEx que fornece rotação e gestão automatizadas de logs para contentores Docker.

Implementando estratégias de rotação automática de logs, pode garantir que o espaço de disco da sua infraestrutura Docker é utilizado eficientemente e que as suas aplicações em contentores continuam a funcionar sem problemas, sem serem afetadas por ficheiros de log em crescimento.

Resumo

No final deste tutorial, terá um conhecimento abrangente sobre registos Docker e será capaz de implementar estratégias eficazes de rotação de registos para manter a saúde e o desempenho das suas aplicações baseadas em Docker. Dominar a rotação de registos para Docker ajudá-lo-á a otimizar o armazenamento, melhorar a estabilidade do sistema e manter um sistema de gestão de registos bem organizado.