Re: Подсчет трафика динамически - интересная фишка
Alex Kitschkiruk
rusnginx at gmail.com
Thu Jun 29 11:56:33 MSD 2006
Игорь, подскажите пожалуйста, куда копать?
я может сам попробую...
я так понимаю это надо с r->connection->sent и b->last работать?
27.06.06, Alex Kitschkiruk <rusnginx at gmail.com> написал(а):
>
> Привет всем!
> Игорь, я тут придумал такую штучку...
> подсчет трафика и вывод его для каждого 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/20060629/dbce43f4/attachment.html>
More information about the nginx-ru
mailing list