Как посмотреть логи в Linux
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Основные подходы к просмотру логов в Linux
В Linux логи хранятся в каталоге /var/log и управляются службой rsyslog или systemd-journald. Существует несколько категорий и инструментов для их просмотра, выбор которых зависит от типа лога, его расположения и ваших задач.
Категории логов и их расположение
- Системные логи:
/var/log/syslog,/var/log/messages(общие системные события). - Логи авторизации:
/var/log/auth.log,/var/log/secure(входы в систему, sudo). - Логи демонов/сервисов:
/var/log/nginx/,/var/log/apache2/(логи веб-серверов),/var/log/mysql/(логи базы данных). - Логи загрузки и ядра:
/var/log/kern.log(логи ядра Linux),/var/log/boot.log(процесс загрузки). - Логи системы journald: хранятся в бинарном формате и доступны через команду
journalctl.
Основные инструменты командной строки
Для просмотра логов в реальном времени, поиска, фильтрации и анализа используются следующие команды:
cat,less,tail,head— базовые инструменты для чтения файлов.
* `cat /var/log/syslog` — вывести весь файл.
* `less /var/log/auth.log` — просмотр с возможностью прокрутки и поиска.
* `tail -f /var/log/nginx/access.log` — **режим реального времени** (`-f`), следить за новыми записями.
* `tail -n 100 /var/log/syslog` — показать последние 100 строк.
-
grep— ключевой инструмент для фильтрации и поиска.# Поиск всех записей с ошибками в syslog grep -i "error" /var/log/syslog # Поиск по конкретной дате и фильтрация по процессу grep "May 15" /var/log/auth.log | grep "ssh" # Режим реального времени с фильтрацией (очень полезно!) tail -f /var/log/syslog | grep "CRITICAL" -
journalctl— мощный инструмент для работы с логами systemd.# Показать все логи журнала journalctl # Логи в реальном времени journalctl -f # Логи за последний час journalctl --since "1 hour ago" # Логи конкретного сервиса (например, nginx) journalctl -u nginx.service # Логи с уровнем критичности (priority) ERROR и выше journalctl -p err
Анализ и агрегация логов
Для более сложного анализа, особенно когда нужно обрабатывать большие объемы данных или вести мониторинг, используются специализированные инструменты:
awkиsed: Для сложной обработки текста, например, подсчета количества определенных событий или преобразования формата.# Подсчитать количество успешных логинов SSH из auth.log awk '/Accepted publickey/ {count++} END {print count}' /var/log/auth.loglogwatchилиgoaccess: Генерируют удобные сводные отчеты по логам (например, ежедневный отчет по активности веб-сервера).- Централизованные системы мониторинга: Для промышленного использования логи отправляются в системы типа ELK Stack (Elasticsearch, Logstash, Kibana), Grafana Loki, Splunk или Datadog. Они обеспечивают агрегацию логов с множества серверов, мощный поиск, визуализацию и алертинг.
Практический пример: анализ проблемы с сервисом
Предположим, сервис myapp не запускается. Вот последовательность действий для анализа его логов:
# 1. Проверить логи systemd для этого сервиса
journalctl -u myapp.service --since "today" -p err
# 2. Если сервис пишет в свой собственный файл лога
tail -n 50 /var/log/myapp/app.log
# 3. Поиск связанных ошибок в системном логе
grep "myapp" /var/log/syslog | grep -E "fail|error|critical"
# 4. Если проблема связана с сетью или портами, проверить соответствующие логи
journalctl --since "10 min ago" | grep -i "port.*bind"
Ключевые рекомендации для DevOps:
- Для постоянного мониторинга используйте
tail -fв сочетании сgrepили настройте алерты в централизованной системе. - Понимайте уровни логирования (syslog levels): от DEBUG (7) до EMERG (0). Фильтрация по уровню (
journalctl -p warning) часто помогает быстро найти проблемы. - Настройте ротацию логов (logrotate) во избежание заполнения диска.
- Для production-систем всегда используйте централизованный сбор логов. Просмотр логов на каждой машине через SSH не scalable и неэффективен при расследовании инцидентов, затрагивающих множество серверов.
- Конфигурируйте структурированный формат логов (JSON) в своих приложениях — это значительно упрощает их дальнейший анализ в системах типа ELK.