Где смотреть логи, получаемые с виртуальной машины

«Где смотреть логи, получаемые с виртуальной машины» — вопрос из категории Виртуализация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Логи виртуальной машины можно анализировать как внутри неё, так и извне, через систему централизованного сбора. В DevOps-практике предпочтительнее второй подход.

1. Просмотр логов внутри ВМ (Linux): Основная директория: /var/log/.

  • /var/log/syslog или /var/log/messages — общие системные сообщения.
  • /var/log/auth.log (или secure на RHEL) — логи аутентификации и авторизации.
  • /var/log/kern.log — сообщения ядра.
  • Логи systemd: sudo journalctl -u <service_name> -f (флаг -f для слежения в реальном времени).
  • Логи приложений: часто в /var/log/ (например, /var/log/nginx/).

2. Централизованный сбор логов (DevOps-подход): Логи из ВМ пересылаются во внешнюю систему для агрегации, поиска и визуализации.

  • Агент на ВМ: Устанавливается агент (Filebeat, Fluentd, Vector), который читает логи из /var/log/ и отправляет их в:
    • ELK-стек (Elasticsearch, Logstash, Kibana).
    • Grafana Loki.
    • Splunk.
  • Облачные сервисы:
    • AWS: CloudWatch Logs Agent -> Amazon CloudWatch.
    • GCP: Ops Agent -> Cloud Logging.
    • Azure: Azure Monitor Agent -> Log Analytics.

Пример команды для быстрого просмотра внутри ВМ:

# Показать последние 100 строк системного лога и следить за новыми
sudo tail -f -n 100 /var/log/syslog

Важно: Для контейнеризированных приложений внутри ВМ логи следует направлять в stdout/stderr, чтобы их мог захватить драйвер логирования контейнера (Docker, Containerd).