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