Filtrar logs por intervalo de tempo
Nesta etapa, você aprenderá como filtrar os logs de contêineres Docker com base em um intervalo de tempo específico. Isso é útil para examinar logs de um período específico, por exemplo, durante um incidente ou uma implantação específica.
O comando docker logs oferece opções para filtrar logs por tempo. Usaremos o contêiner alpine novamente. Se ele não estiver em execução, inicie-o com o mesmo comando que antes:
docker run -d --name mylogger alpine sh -c 'while true; do echo "INFO: Hello from mylogger at $(date)"; sleep 5; echo "WARNING: Something is happening at $(date)"; sleep 5; echo "ERROR: An error occurred at $(date)"; sleep 5; done'
Deixe o contêiner em execução por um ou dois minutos para gerar alguns logs.
Para visualizar os logs gerados desde um horário específico, use a opção --since. O tempo pode ser especificado em vários formatos, incluindo um timestamp (segundos desde a época), um tempo relativo (por exemplo, 10m para 10 minutos, 1h para 1 hora) ou uma string de data/hora.
Vamos visualizar os logs gerados nos últimos 2 minutos:
docker logs --since 2m mylogger
Este comando exibirá todas as entradas de log do contêiner mylogger que foram geradas nos últimos 2 minutos.
Você também pode especificar um horário de início e término usando --since e --until. A opção --until funciona de forma semelhante a --since, permitindo que você especifique um horário até o qual deseja ver os logs.
Para visualizar os logs gerados entre 5 minutos atrás e 1 minuto atrás:
docker logs --since 5m --until 1m mylogger
Este comando mostrará os logs da janela de tempo especificada. Observe que a saída exata dependerá de quando você executar o comando e por quanto tempo o contêiner está em execução.
Você também pode usar timestamps específicos. Para obter o timestamp atual, você pode usar o comando date +%s.
Vamos obter o timestamp de 1 minuto atrás:
date -d "1 minute ago" +%s
Agora, use este timestamp com --until para ver os logs até 1 minuto atrás:
docker logs --until $(date -d "1 minute ago" +%s) mylogger
Este comando exibirá os logs desde o início da vida útil do contêiner até 1 minuto atrás.
A filtragem por intervalo de tempo é uma maneira poderosa de restringir sua análise de log e se concentrar em eventos relevantes.
Finalmente, pare e remova o contêiner:
docker stop mylogger
docker rm mylogger