Логи в Nginx
Логи в Nginx
Возможно настроить два типа логов:
1. access_log - логи запросов
2. error_log - логи ошибок
Конструкции прописывается в секциях:
http, stream, server, location
### error_log
Уровни ошибок:
warn, error crit, alert, emerg
Пример записи error:
error_log logs/site.error.log warn;
### access_log
Конструкции прописывается в секциях:
http, server, location, if в location, limit_except
Простейшая запись:
access_log logs/site.access.log;
### Переопределение формата записей с помощью log_format
Документация:
http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format
Формат записи по умолчанию:
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"
Где:
$remote_addr – IP - источник запроса
$remote_user – Логин, аутентифицированный с помощью HTTP-аутентификации
[$time_local] – Время запроса по часовому поясу сервера
"$request" - Тип HTTP-запроса, запрошенный путь без аргументов, версия протокола HTTP
$status - HTTP-код ответа сервера
$body_bytes_sent - Размер в байтах ответа сервера
"$http_referer" - Реферальная ссылка (страница источник, с которой был переход)
"$http_user_agent" - User agent
Конструкции прописывается в секциях:
http
Синтаксис:
access_log путь [формат [buffer=размер] [gzip[=степень]] [flush=время] [if=условие]];
По дефолту:
access_log logs/access.log combined;
Пример:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
### Анализ логов
Допустим мы используем стандартный формат лога
Посчитаем количество запросов и коды ответа:
cat /var/log/nginx/site.ru.access.log | cut -d '"' -f3 | cut -d ' ' -f2 | sort | uniq -c | sort -rn
5006 404
4012 200
201 302
11 502
4 499
Или так:
awk '{print $9}' /var/log/nginx/site.ru.access.log | sort | uniq -c | sort -rn
Наблюдаем 5006 ошибок типа 404
Вычисляем эти запросы для 404 ошибки:
awk '($9 ~ /404/)' /var/log/nginx/site.ru.access.log | awk '{print $7}' | sort | uniq -c | sort -rn | more
7 /static/js/app.js
2 /images/image27.jpg
2 /Federalnyy-zakon-N-127-FZ/
1 /docs/Prikaz-Minzdravsotsrazvitiya-Rossii
1 /docs/zemelnyi-kodeks-rossiiskoi-federatsii
Вычисляем эти запросы для 502 ошибки:
awk '($9 ~ /502/)' /var/log/nginx/site.ru.access.log | awk '{print $7}' | sort | uniq -c | sort -r | more
3 /static/i/corner-m.png
2 /doc/wu1dcOHW/?_=1531366826866&snippet_pos=1344&vsrf-case_doc=&vsrf-date_from=01.01.2016
1 /doc/ES97zxW/?vsrf-txt=%D0%9F%D1%82+12.07.2018
С какого ip запрашивали url:
awk '($7 ~ "/static/i/corner-m.png")' /var/log/nginx/site.ru.access.log | awk '{print $1}'
awk '($7 ~ "/doc/wu1dcOHW/")' /var/log/nginx/site.ru.access.log | awk '{print $1}'
10.1.1.100
10.15.1.56
10.13.55.23
Самые посещаемые url:
awk -F\" '{print $2}' /var/log/nginx/site.ru.access.log | awk '{print $2}' | sort | uniq -c | sort -r | more
Комментарии пользователей
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!