Linux

Анализ логов Linux: полное руководство для администраторов

Этот гайд подробно объясняет, как анализировать системные логи в Linux. Вы научитесь использовать утилиты вроде journalctl, grep и awk для диагностики проблем и мониторинга системы.

Обновлено 14 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04+CentOS 8+Debian 11+systemd-based systems

Введение

Анализ логов — ключевой навык для любого администратора Linux. Логи содержат информацию о работе системы, служб и приложений, помогая быстро диагностировать сбои, отслеживать безопасность и оптимизировать производительность. В этом гайде вы узнаете, как эффективно работать с логами в Linux, используя как стандартные утилиты, так и современные инструменты.

Требования

Перед началом убедитесь, что:

  • У вас есть доступ к Linux-системе (физической или виртуальной) с установленным дистрибутивом на базе systemd (например, Ubuntu 22.04, CentOS 8).
  • Вы знакомы с базовыми командами командной строки.
  • Для доступа к некоторым логам могут потребоваться права суперпользователя (используйте sudo).

Шаг 1: Понимание структуры логов в Linux

В Linux логи хранятся в двух основных форматах:

  1. Файловые логи: традиционные текстовые файлы в директории /var/log/. Сюда попадают логи ядра (kern.log), системы (syslog), аутентификации (auth.log), пакетного менеджера (dpkg.log или yum.log) и многие другие.
  2. Системный журнал systemd: бинарный журнал, управляемый systemd-journald. Доступен через команду journalctl, хранится в /var/log/journal/ (если включено постоянное хранение).

По умолчанию, многие современные дистрибутивы используют systemd journal, но также могут писать в файловые логи через службы вроде rsyslog или syslog-ng.

Чтобы увидеть список логов в /var/log/, выполните:

ls -la /var/log/

Для просмотра активного journal:

sudo journalctl --disk-usage  # проверить размер журнала

Шаг 2: Использование базовых команд для просмотра логов

Для работы с файловыми логами используйте стандартные утилиты:

  • less: постраничный просмотр. less /var/log/syslog
  • tail: просмотр последних строк. tail -f /var/log/syslog для реального времени.
  • grep: поиск по шаблону. grep "error" /var/log/syslog
  • head: просмотр первых строк. head -n 50 /var/log/syslog

Комбинируйте команды для эффективного анализа. Например, чтобы найти последние 10 ошибок в syslog:

grep "error" /var/log/syslog | tail -n 10

Для journalctl аналогичные операции:

  • journalctl: просмотр всего журнала.
  • journalctl -f: отслеживание в реальном времени.
  • journalctl -u ssh.service: логи конкретной службы.
  • journalctl --since "2026-02-14 09:00:00": фильтрация по времени.

Шаг 3: Фильтрация и поиск в логах

Более сложная фильтрация требует использования grep с регулярными выражениями или awk для извлечения полей.

Пример: найти все неудачные попытки SSH в auth.log:

grep "Failed password" /var/log/auth.log

С помощью awk можно извлечь IP-адреса:

grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

Это покажет количество неудачных попыток с каждого IP.

Для journalctl используйте встроенные фильтры:

journalctl _COMM=sshd  # только логи sshd
journalctl PRIORITY=err  # только ошибки
journalctl --boot -1  # логи предыдущей загрузки

Шаг 4: Анализ логов безопасности

Логи безопасности критически важны. Основные файлы:

  • /var/log/auth.log (Debian/Ubuntu) или /var/log/secure (RHEL/CentOS) для аутентификации.
  • /var/log/faillog для неудачных попысков входа (просмотр через faillog).
  • Логи брандмауэра (например, ufw в /var/log/ufw.log).

Регулярно проверяйте на подозрительную активность. Автоматизируйте с помощью скриптов или инструментов вроде fail2ban, которые сами анализируют логи и блокируют IP.

Шаг 5: Автоматизация и мониторинг

Для постоянного мониторинга используйте:

  • logwatch: ежедневные отчеты по почте. Установка: sudo apt install logwatch (Debian/Ubuntu) или sudo yum install logwatch (RHEL). Настройка в /etc/logwatch/.
  • Logrotate: автоматическая ротация логов, настроена по умолчанию. Проверьте /etc/logrotate.conf/.
  • ELK stack (Elasticsearch, Logstash, Kibana) или Grafana Loki для централизованного сбора и визуализации логов в больших средах.

Пример простого скрипта для оповещения о критических ошибках:

#!/bin/bash
if journalctl -p err --since "1 hour ago" | grep -q ".*"; then
    echo "Обнаружены ошибки в логах за последний час" | mail -s "Ошибки в системе" admin@example.com
fi

Добавьте в cron для регулярного запуска.

Проверка результата

После прохождения гайда вы должны уметь:

  • Находить и открывать основные логи системы.
  • Использовать grep, awk, journalctl для фильтрации.
  • Диагностировать распространенные проблемы (например, ошибки служб, неудачные логины).
  • Настраивать базовый мониторинг логов.

Проверьте себя: попробуйте найти все ошибки kernel за последний день или определить, какая служба генерирует больше всего логов.

Возможные проблемы

  1. Ошибки доступа: Некоторые логи требуют прав root. Используйте sudo или добавьте пользователя в группу adm (Debian/Ubuntu) или wheel (RHEL).
  2. Большой объем логов: Journal может занимать много места. Настройте ограничения в /etc/systemd/journald.conf (параметры SystemMaxUse, MaxRetentionSec). Для файловых логов настройте logrotate.
  3. Неправильные фильтры: Убедитесь, что используете правильные имена служб или пути. Для journalctl проверьте доступные поля через journalctl -F.
  4. Отсутствие логов: Некоторые службы могут не писать в стандартные логи. Проверьте их конфигурацию (например, в /etc/rsyslog.conf или для systemd-сервисов через StandardOutput).

Если логи не появляются, перезапустите службу или systemd-journald.

Часто задаваемые вопросы

Какой инструмент лучше для просмотра логов в Linux?
Где хранятся логи системы в Linux?
Как отслеживать логи в реальном времени?
Что делать, если логи переполнены?

Полезное

Понимание структуры логов в Linux
Использование базовых команд для просмотра логов
Работа с systemd journal через journalctl
Фильтрация и поиск в логах
Анализ логов безопасности
Автоматизация и мониторинг