Мониторинг Tornado с помощью Munin в Debian / Ubuntu

Добавить в google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru memori.ru moemesto.ru


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

Ниже следующее изложение предполагает, что материалы о:

уже прочитаны и усвоены. А так же считаем, что Munin и Tornado уже настроены и работают.

Для решения задачи осталось не много - добавить плагин для munin и убедиться, что он работает.

Суть мониторинга Tornado

Согласно материалу о запуске Tornado под Nginx tornado запускается следующим образом:

$ python deploy/tornading.py 8001 &
$ python deploy/tornading.py 8002 &

Соответственно, чтобы узнать размер памяти, занимаемой этими двумя процессам, необходимо воспользоваться следующим кодом:

$ ps aux | grep tornading | grep -v grep
dw        9321  0.4  0.7  21184 15384 ?        S    10:29   0:14 python deploy/tornading.py 8001
dw        9324  0.4  0.8  22280 16584 ?        S    10:29   0:13 python deploy/tornading.py 8002

Этот код и будет сутью нашего плагина. Весь вывод представлен в килобайтах. Нас интересует:

  • шестая по счету колонка из представленного вывода, что есть ничто иное, как RSS - размер постоянно занимаемой физической памяти
  • пятая по счету колонка из представленного вывода, что есть VSZ - размер виртуальной памяти, занимаемой процессом

Плагин мониторинга Tornado для Munin

Создаем плагин:

$ sudo vim /usr/share/munin/plugins/tornado_memory

Пишем следующее:

#!/usr/bin/env perl

if ( exists $ARGV[0] and $ARGV[0] eq "config" ) {
    print "graph_title Tornado ram usage\n";
    print "graph_vlabel ram\n";
    print "graph_vlabel vmem\n";
    print "graph_category tornado\n";
    print "ram.label ram\n";
    print "vmem.label vmem\n";
            print "graph_args --base 1024\n";
} else {
    my $i=0, $vm=0;
    @cmd = `ps aux | grep tornading | grep -v grep | grep -v tornado_memory`;

    foreach (@cmd) {
        @return = split(/ +/, $_);
        $i += @return[5]*1024;
        $vm += @return[4]*1024;
    }
    print "ram.value ".$i."\n";
    print "vmem.value ".$vm."\n";
}

Суть плагина проста - получаем информацию о состоянии необходимых процессов и суммируем необходимые значения. Все суммы переводим в мегабайты.

Остается включить плагин:

$ sudo chmod +x /usr/share/munin/plugins/tornado_memory
$ sudo ln -s /usr/share/munin/plugins/tornado_memory /etc/munin/plugins/tornado_memory

И проверить, что он работает:

$ sudo munin-run tornado_memory
ram.value 32124928
vmem.value 44199936

Все. Можно любоваться графиками.

Вопросы по теме ...

Есть еще вопрос?