Какие могут быть причины такого ступенчатого роста access-логов nginx?

Заметили очень странное изменение размера файла access-логов nginx. Ниже будет скриншот из Zabbix, по которому видно, что файл логов nginx растёт ступенчато (на графике показано свободное место в /var, но там только логи nginx, к тому же проверяли изменение размера логов и в консоли). Видно, что замер "ступенек" на графике равномерно и пропорционально возрастает.

Самое странное, что в районе 22:00 файл логов стал весить 8Гб, а потом сразу 4Гб, при этом мы никаких действий не осуществляли и никаких "особых демонов ротации логов" на хосте нет.

Несколько уточнений:
  • Трафик равномерный, никаких скачков в течение для не было.
  • Логи в конфиге nginx настроены по дефолту:
access_log /var/log/nginx/access.log main;

Может есть какие-то особенности записи логов в nginx, о которых мы не догадались по доке?

83affdde6afe40fbab5106f9f9925b9f.png
  • Вопрос задан
  • 561 просмотр
Решения вопроса 1
siberian_redneck
@siberian_redneck Автор вопроса
CTO
В общем ответ оказался для нас слегка неожиданным, и суть заключалась в специфике работы XFS. Оказалось, что на диске по мере роста файла преаллоцируется пространство, что и объясняет скачкообразный рост показателей в команде du, не коррелирующий с динамикой трафика. Ниже ссылки для интересующихся, а также скрин графика из Zabbix, на котором мы решили отдельно мониторить файл логов (выводы du и stat). И как мы видим - du растёт ступенчато, а stat по динамике соответствует трафику:

git.kernel.org/cgit/linux/kernel/git/torvalds/linu...
serverfault.com/questions/406069/why-are-my-xfs-fi...

f5e0168b447840e8a60b616769ca58f3.jpg
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
Ernillew
@Ernillew
Администрирую *nix-системы с 1997 года
А кто вам сказал, что никаких ротаций?
Вы уверены, что у вас не отработал logrotate?
Ответ написан
selivanov_pavel
@selivanov_pavel
Linux admin
nginx сам логи чистить не умеет и правильно делает. Это отрабатывает что-нибудь вроде logrotate.
UPD:
Это точно не сам nginx, он логи только пишет. Я бы для начала сделал grep -r /etc -e nginx | grep -v ^/etc/nginx.
Если не удалось ничего найти таким образом - можно подключить тяжёлую артиллерию: поставить auditd, прописать в rules что-нибудь вроде
auditctl -a exit,always -F path =/var/log/nginx -F perm = aw

И смотреть в логах auditd всё, что работало с этой папкой. Только надо учитывать, этих логов будет очень много, на каждый syscall.
Ответ написан
kresska
@kresska
Во-первых, vfs.file.size на access.log
Во-вторых, cat /etc/logrotate.d/nginx
+ можно lsof`ом посмотреть /var/log и увидеть кто и что туда пишет
в один момент времени лог на 4гб скакнуть не мог, как часто вы свободное место в /var/log проверяете?
Кстати, в конце крафика, ступенькообразность заканчивается, изменили время забора метрики?
Ответ написан
Комментировать
BuriK666
@BuriK666 Куратор тега Nginx
Компьютерный псих
не поверю что в /var нет ничего кроме логов nginx...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы