в debian, monitoring, scripts, ubuntu

Пишем свой плагин для munin — http_response_median

pages response time
Мы уже знаем как узнать время отклика сайта из командной строки Linux, но для наглядности нужно эти данные визуализировать.

Наиболее простой способ — написание плагина для munin (назовем его http_response_median). Давайте разберемся, как писать этот плагин!

Последовательность действий следующая:

  • переходим в каталог /etc/munin/plugin-conf.d/:
cd /etc/munin/plugin-conf.d/
  • открываем на редактирование конфиг munin-node:
nano munin-node
  • добавляем в него следующие строки:
...
[http_response_median]
env.domain letsclearitup.com.ua
env.url1 /
env.url2 /about
env.url3 /category/asterisk
  • далее переходим в каталог /etc/munin/plugins:
cd /etc/munin/plugins
  • создаем файл http_response_median:
touch http_response_median

содержимое плагина munin должно быть следующим:

#!/usr/bin/perl
use strict;

my $domain = $ENV{'domain'} || "letsclearitup.com.ua";
my @urls;
my $i = 1;

while (defined ($ENV{"url$i"})) {
    push(@urls, $ENV{"url$i"});
    $i++;
}
if (! @urls) {
    die "No urls defined\n";
}

if (exists $ARGV[0] and $ARGV[0] eq "config") {
    print "graph_title $domain Page response times by curl\n";
    print "graph_category apache\n";
    print "graph_vlabel request time (ms)\n";
    print "graph_info Response times of $domain.\n";

    foreach my $url (@urls) {
  my $label = $url; 
  $label =~ s@[\/-]@_@g;
  print "$label.label $url\n";
  print "$label.type GAUGE\n";
    }
    exit 0;
}

sub get_url {
    my $cur_url = $_[0];
    my $content = `/usr/bin/curl -s -w %{time_total}\\n -o /dev/null "$cur_url"`;
}

foreach (@urls){
    my $value = $_;
    my $summary = 0;
    my $url = "http://".$domain.$value;
    my @time;
    for ($i=0; $i<5;$i++){
  $time[$i] = get_url($url);
  my $counter = 1000 * $time[$i];
  $summary += $counter;
    }
    $value =~ s@[\/-]@_@g;
    print $value.".value ".($summary/5)."\n";
};

exit 0;

Примечание. Для получения более объективного значения времени отклика сайта делаем 5 замеров и выводим среднее значение.

  • делаем файл http_response_median исполняемым:
chmod +x http_response_median
  • и перезапускаем munin-node:
/etc/init.d/munin-node restart

На этом написание плагина для munin закончено, и через некоторое время можно будет увидеть результаты в виде графика:

http_response_median

График с примером работы плагина http_response_median

Добавить комментарий