DISQUS

Homo-Adminus Blog: Monitoring nginx Server Statistics With rrdtool

  • Jordi Sanfeliu · 3 years ago
    Monitorix is another lightweight tool perl-based and web-based to monitorize easily your Linux/UNIX servers.

    Try it! ;)
  • Alex · 3 years ago
    У меня странно работает. Запросы в секунду показывает нормально, а вот с другими - беда.
    Сначала показал совсем левые значения из миллионных величин (пр: Total Current: 450.0 m)
    В дальнейшем так же 4300.0, что не сходится даже со строкой
    print "RQ:$requests; TT:$total; RD:$reading; WR:$writing; WA:$waiting\n";
    которая все показывает правильно...
    где собака порылась?
    Вот здесь можно посмотреть:
    http://foxtrot355.server4you.de/stat.html
  • Alex · 3 years ago
    Нашел ошибку!
    вместо:
    "DS:total:ABSOLUTE:120:0:60000",
    "DS:reading:ABSOLUTE:120:0:60000",
    "DS:writing:ABSOLUTE:120:0:60000",
    "DS:waiting:ABSOLUTE:120:0:60000",
    надо:
    "DS:total:GAUGE:120:0:60000",
    "DS:reading:GAUGE:120:0:60000",
    "DS:writing:GAUGE:120:0:60000",
    "DS:waiting:GAUGE:120:0:60000",
    Теперь данные будут правильно отображаться
  • PavelR · 3 years ago
    >У меня странно работает. Запросы в секунду >показывает нормально, а вот с другими - беда.

    Число обработанных за период соединений надо брать из другого показателя, т.к. $total отображает число установленных соединений на момент запроса.

    Предлагаю заменить

    if (/^\s+(\d+)\s+(\d+)\s+(\d+)/) {
    > $requests = $3;
    > $connects = $1;
    > }

    Хранение реализовать аналогично хранению $requests, c типом хранилища ABSOLUTE.
    (Добавить в RRDs::create
    строку "DS:connects:ABSOLUTE:120:0:100000000",)

    Чтобы получать разницу в количестве обработанных соединений между запусками, предыдущее значение записывается в отдельный файл nginx.cns (аналогично хранению числа запросов в файле nginx.rqs).

    Добавляемый код:

    +my $connects=0;

    ....

    +# get connects
    +if (! -e "$rrd/nginx1.cns") {
    + $cns = 0;
    +} else {
    + open RQS, ";
    + close RQS;
    + $cns = $connects if ($cns $rrd/nginx1.cns";
    +print RQS $connects;
    +close RQS;


    Также мне не нравится поведение в случае, если новый счетчик меньше старого - это означает что он уже успел сброситься по какой-то причине. Но это не означает что его не стоит использовать.

    $rqs = $requests if ($rqs
  • PavelR · 3 years ago
    К сожалению не все в сообщении вставилось как ожидалось, но думаю основную идею донес.
  • Joe · 2 years ago
    So what does it mean if the graphs are never updating (i.e. stay blank). I've checked the .conf, nginx_status page as well as making sure the cron is running but the graphs are never being populated. I've tried a few things but can't seem to get it to work.

    user@machine ~> nginx -v
    nginx version: nginx/0.5.10
    user@machine ~> php -v
    PHP 4.3.10-18 (cli) (built: Nov 3 2006 21:56:29)
    [snip]

    Thanks.
  • Snakk · 1 year ago
    I was facing the same problem like you.

    -------------------------------------------------
    app201:/home/nginx/rrd# nginx -v
    nginx version: nginx/0.5.37
    app201:/home/nginx/rrd# php -v
    PHP 5.2.0-8+etch11 (cli) (built: May 10 2008 10:46:24)
    Copyright (c) 1997-2006 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
    app201:/home/nginx/rrd# rrdtool -v
    RRDtool 1.2.15 Copyright 1997-2006 by Tobias Oetiker <tobi@oetiker.ch>
    Compiled Dec 14 2006 22:05:35

    Usage: rrdtool [options] command command_options

    Valid commands: create, update, updatev, graph, dump, restore,
    last, first, info, fetch, tune, resize, xport

    RRDtool is distributed under the Terms of the GNU General
    Public License Version 2. (www.gnu.org/copyleft/gpl.html)

    For more information read the RRD manpages
    -------------------------------------------------

    I don't assure that this method is right but my graph is OK right now. By replacing these lines

    RRDs::update "$rrd/nginx.rrd",
    "-t", "requests:total:reading:writing:waiting",
    "N:$requests:$total:$reading:$writing:$waiting";

    with

    RRDs::update ("$rrd/nginx.rrd", "N:$requests:$total:$reading:$writing:$waiting");


    Cheers,
  • Denis · 2 years ago
    It's possible to have statistic of traffic transfered via nginx?

    PavelR: Can you paste all code ?
  • PavelR · 2 years ago
  • halfdan · 1 year ago
    Nice article. I guess I'll give nginx a try on my new server. Oh and..

    PavelR: The links posted above gave me a 403 Forbidden.. would be nice to get the current version of your script.
  • Vlad · 1 year ago
    2PavelR
    http://nikolas.ru/nginx/nginx-rrd_new.pl - 403 Forbidden
    Also error in this project - http://www.nginx.eu/nginx-rrd.html
  • Ian · 1 year ago
    I use this Server Statistics tool, it gives me a live graphical display of load dn bandwidth usage.