Кэширование nginx: Мониторинг

Оригинал статьи тут, себе копирую, чтоб не потерять.

Объявляем новый log_format в nginx.conf:

log_format rt_cache '$remote_addr - $upstream_cache_status [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';

в server разделе вашего vhost:

И замените

access_log /var/log/nginx/example.com.access.log;
На вот такое:

access_log /var/log/nginx/example.com.access.log rt_cache;

Или можно поступить как-то так.

access_log /var/log/nginx/example.com.access.log;
access_log /var/log/nginx/example.com.cache.log rt_cache;

обратите внимание, что в разных логах различаются имена файлов.

Анализируем логи:

HIT vs MISS vs etc

Можно посмотреть статистику из access.log:

awk '{print $3}' access.log | sort | uniq -c | sort -r

Sample output:

800 HIT
779 -
392 BYPASS
19 EXPIRED
14 MISS

Важно: тире (“-“) означает прочие коды return 403, return 444, и возможно всякие файлы, что не попали к нам в локейшин в котором действует кэш.

Посмотреть список уролов с MISS

awk '($3 ~ /MISS/)' access.log | awk '{print $7}' | sort | uniq -c | sort -r

BYPASS Requests URLs

awk '($3 ~ /BYPASS/)' access.log | awk '{print $7}' | sort | uniq -c | sort -r
MISS v/s BYPASS

MISS – Это промахнулись мимо кэша, возможно это первое обращение, после которого кэш создаётся.

BYPASS – это пропуск к бэкэнду минуя кэн nginx например для залогиненных пользователей.

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>