Если у тебя есть свой сайт или ты отвечаешь за продакшн в компании — рано или поздно ты столкнёшься с анализом логов Nginx. Почему? Потому что логи — это твои глаза и уши: они расскажут, кто ломится в админку, почему сайт тупит или почему сожрали весь трафик за ночь. Без нормального мониторинга и анализа логов ты как капитан корабля без радара: вроде всё плывёт, но айсберг уже рядом.
Возможности
- Видеть реальное число запросов, пиковые часы, самые популярные страницы
- Ловить 404/500 ошибки на лету
- Отслеживать подозрительную активность (боты, DDoS, brute force и пр.)
- Мониторить производительность — сколько времени реально обрабатывается запрос
- Анализировать рефереры, user-agent, географию посетителей
- Интегрировать с системами алертов (Telegram, Slack, email)
Что требуется
- ОС: Linux (Ubuntu/Debian/CentOS/Alpine), подойдет и macOS для теста
- Железо: 1 CPU, 1-2 GB RAM хватит для старта, SSD ускорит парсинг
- Права: root или sudo для установки пакетов
- Доступ к логам Nginx: обычно /var/log/nginx/access.log и error.log
Установка — пошаговая инструкция
Покажу на примере GoAccess — это реально крутая тулза для live-аналитики логов прямо в терминале или через web-интерфейс. Работает быстро, не требует сложных зависимостей, open source.
- Обнови пакеты:
sudo apt update
- Установи GoAccess:
sudo apt install goaccess
Для CentOS:sudo yum install goaccess
- Проверь, где лежат логи Nginx:
cat /etc/nginx/nginx.conf | grep access_log
Обычно это/var/log/nginx/access.log
- Запусти GoAccess в терминале:
goaccess /var/log/nginx/access.log -c
Первый запуск попросит выбрать формат логов. Для стандартного Nginx — выбирайCOMBINED
или укажи свой формат. - Для постоянного мониторинга в браузере:
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html
После этого открывайhttp://your-server/report.html
— и смотри обновления в реальном времени. - Для нескольких логов (ротация):
zcat /var/log/nginx/access.log.*.gz | goaccess - -c
Это склеит все архивные логи и покажет аналитику по ним.
Официальная дока по установке на другие ОС: https://goaccess.io/download
Использование — команды и варианты
goaccess /var/log/nginx/access.log -c
— запусти интерактивный терминал-отчетgoaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED
— оффлайн HTML-отчетgoaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html
— live-отчет в браузереgoaccess /var/log/nginx/error.log -c
— анализируй error.log (но для него формат другой, обычноCOMBINED
не подходит)goaccess --help
— все опцииman goaccess
— подробная справкаgoaccess --exclude-ip=127.0.0.1
— исключить локальные запросыgoaccess --geoip-database=/usr/share/GeoIP/GeoLite2-City.mmdb
— добавить геолокацию по IP
Больше примеров: https://goaccess.io/man
Ошибки и как делать не надо
- Не запускай анализ логов без ротации — access.log может вырасти до гигабайтов и упереть сервер в swap
- Не храни отчеты в общедоступных папках без пароля — там может быть чувствительная инфа (IP, user-agent, реферы)
- Не забывай про права: если запускаешь goaccess от обычного юзера, может не быть доступа к логам (решается через группу или sudo)
- Не используй устаревшие форматы логов — иногда admin меняет
log_format
в nginx.conf, и GoAccess не сможет их корректно парсить - Не игнорируй
error.log
— там часто живут самые ценные подсказки по проблемам
Пример из жизни
Реальный случай: на одном проекте резко выросла нагрузка на сервер. В access.log видно — за 10 минут прилетело 100k запросов на /wp-login.php из разных стран. С помощью GoAccess быстро увидели топ-10 IP и user-agent, забанили их через fail2ban и nginx. Одновременно нашли, что 30% трафика — это краулеры и парсеры, которые можно было отрубить через robots.txt и firewall. Без анализа логов это бы заняло часы, а тут — 10 минут и всё под контролем.
Заключение
Логи Nginx — это не просто “история посещений”, а мощный инструмент для диагностики, оптимизации и безопасности. Не забивай на них, а автоматизируй анализ с помощью GoAccess или других тулзов. Это реально экономит нервы, время и деньги. И да, анализируй не только access.log, но и error.log — там часто лежит ключ к решению проблем. Удачи в мониторинге!
Полезные ссылки:
Ваш отзыв