Чтение логов – основная работа системного администратора, когда что-то пошло не так. Да, сегодня у него есть хороший помощник – ИИ, но перед тем, как он проанализирует логи их надо откуда-то взять.
Сегодня мы рассмотрим, что может предложить нам сам Docker в части чтения логов. А предложить он может достаточно много.
Штатно посмотреть логи можно командой:
docker logs my_container
Где my_container – имя нашего контейнера, также можно использовать вместо имени его ID.
А если нам надо больше деталей?
docker logs --details my_container
Данная команда дополнит вывод всеми собранными данными и вместо
2024-01-15T10:00:00Z APP started
Мы получим:
2024-01-15T10:00:00Z APP started, container_id=abc123, env=prod
Если же мы хотим смотреть лог в реальном времени, то добавляем ключ -f или --follow:
docker logs -f my_container
Это хорошо, но как быть, если нам надо посмотреть логи с определенного времени? Используем ключ --since в котором указываем метку времени:
docker logs --since "2024-01-15T14:30:00Z" my_container
Или относительный интервал, скажем за последние 30 минут:
docker logs --since 30m my_container
Либо можем попросить вывести определенное количество последних строк при помощи ключа -n или --tail:
docker logs --tail 50 my_container
Данная команда покажет последние 50 строк, ключи можно комбинировать, например:
docker logs --tail 20 -f my_container
Покажет последние 20 строк лога и продолжит отслеживать его в реальном времени.
Если нужно обязательно выводить в каждой строке метку времени используйте ключ -t или –timestamps.
Еще один полезный ключ --until (требуется API 1.35+), он прямо противоположен --since и показывает лог до, а не после указанной временной метки или относительного интервала.
docker logs --until 1h my_container
Покажет все логи не ранее чем за час.
Но особую ценность он имеет в сочетании с –-since, скажем:
docker logs --since "2024-01-15T10:00:00Z" --until "2024-01-15T11:00:00Z" my_container
Данная команда покажет логи между 10 и 11 часами 15 января 2024 года.
