Требуется ли вести access-логи на серверах с высокой посещаемостью?

Следует ли отключить access логи для nginx и apache на высоконагруженном веб-сервере, где количество запросов составляет 3+ миллионов страниц в сутки? Могут ли эти логи создавать нагрузку на диск и сервер?
  • 3 января 2024 г. 10:31
Ответы на вопрос 5
Вопрос о том, стоит ли вести access-логи на серверах с высокой посещаемостью, зависит от множества факторов, включая требования к безопасности, необходимость анализа трафика, производительность серверов, и достаточность хранилища данных.

Access-логи предоставляют ценную информацию, которая может быть использована для:

- Мониторинга трафика и анализа поведения пользователей.
- Выявления и расследования безопасностных инцидентов.
- Отладки веб-приложения.
- Сбора статистики для бизнес-аналитики.

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

Вот несколько возможных мер, которые вы можете предпринять, чтобы сбалансировать между потребностями логирования и производительностью:

1. **Выборочное логирование**: Конфигурируйте логирование таким образом, чтобы записывать только важные события или запросы (например, ошибки или определённые коды состояния).

2. **Ротация логов**: Используйте инструменты для ротации логов, такие как `logrotate`, чтобы правильно управлять размером файлов логов, их сжатием и удалением старых записей.

3. **Отдельный дисковый накопитель**: Подумайте о том, чтобы записывать логи на отдельный физический диск или массив дисков, что может уменьшить влияние логирования на производительность основного носителя данных.

4. **Асинхронное логирование**: В некоторых сценариях использование асинхронного логирования или буферизации может сократить нагрузку на диск.

5. **Централизованное логирование**: Перенаправьте логи на централизованную систему логирования (например, ELK Stack или Splunk), которая может обрабатывать и анализировать большое количество данных более эффективно.

6. **Мониторинг производительности**: Регулярно контролируйте производительность сервера и влияние логирования на неё, чтобы в случае необходимости вносить соответствующие коррективы.

Отключение access-логов может быть крайней мерой и сделать это стоит только в том случае, если другие методы оптимизации оказались неэффективными и вы точно уверены, что логи вам не потребуются. Нужно помнить, что удачно настроенное логирование может служить важной цели и обеспечивать важную информацию для множества аспектов управления веб-серверами и приложениями.
Создают ли эти логи нагрузку на диск и сервер в целом?

Создают
нужно ли отключать access логин для nginx

1. Для критичных путей оставь (логин, изменения данных).
2. Для GET запросов и других не важных можешь использовать самплинг - записываешь только определенный процент логов, а не все (выборка)
Это зависит от каждого конкретного сервиса, ну и логи не только на диск бывают. А вообще в крупных системах использует уже более сложная система, чем просто логи, почитай про ELK и подобные.
Да, конечно создают нагрузку. 
Записывать или нет зависит от сервиса и законодательства
Нагрузку создают. Поэтому сервисы с серьёзными нагрузками часто логи пишут не на диск, а в какой-нибудь распределённый сервис сбора логов, хорошо масштабирующийся горизонтально.
Похожие вопросы