Подсчет трафика динамически - интересная фишка
Alex Kitschkiruk
rusnginx at gmail.com
Tue Jun 27 11:40:29 MSD 2006
Привет всем!
Игорь, я тут придумал такую штучку...
подсчет трафика и вывод его для каждого server {} или location {}.
Идея в том, чтобы ввести переменную, которую можно было бы вставить в
необходимый server {} или location {}, а потом выводить эту статистику
через /nginx_status
Это удобно тем, что позволяет динамически считать и наблюдать трафик от
отдельной директории. Особенно интересно это там, где нет ведения логов: в
картинках и файлах.
И не надо динамически логи парсить.
Что-то типа из формата логов $bytes_sent, только постоянно ссумируется (до
обнуления).
Что-то типа подобного:
location / {
proxy_pass http://111.111.111.111:8000/;
access_log /usr/local/nginx/logs/access_web.log main;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
traffic_count $location[1] "Main directory"
}
location ~*
^.+\.(jpg|jpeg|gif|png|ico|css|swf|zip|rar|doc|xls|exe|pdf|ppt|txt|bmp|js)$
{
root /srv/www/htdocs/web1/html/obs;
access_log off;
expires 30d;
traffic_count $location[2] "Files"
}
location ^~ /swf/ {
valid_referers none server_names *.server.com/;
if ($invalid_referer) {
return 403; }
root /srv/www/htdocs/web/html;
autoindex on;
traffic_count $location[3] "SWF files"
access_log /usr/local/nginx/logs/access_web_swffiles.log
download;
}
Для обнуления можно ввести глобальную переменную с форматом наподобие крона
(минимальный интервал обнуления сделать не минуту, а час)
час день месяц
traffic_count_zero */3 * *
обнуление каждые три часа
В статистике это выгладит примерно так (в байтах):
croesus:~# GET http://your-domain.com/nginx_status
Active connections: 1492
server accepts handled requests
2124355 2124355 8278635
Reading: 6 Writing: 405 Waiting: 1081
Main directory: 111111
Files: 2223334
SWF files: 8888888
Или просто имена переменных выдавать, а там пусть сами разбираются
croesus:~# GET http://your-domain.com/nginx_status
Active connections: 1492
server accepts handled requests
2124355 2124355 8278635
Reading: 6 Writing: 405 Waiting: 1081
location[1]: 111111
location[2]: 2223334
location[3]: 8888888
Еще это интересно там, где одновременно отдается "легкая" графика сайта и
огромные файлы-архивы или видеофайлы, так как они качаются долго и в логи
попадают не равномерно по времени.
Думаю это будет элегантным решением ;)
Что скажете?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20060627/9ada1a36/attachment.html>
More information about the nginx-ru
mailing list