Пишем свой плагин для Munin: http response median
Sep 14, 2015 14:55 · 274 words · 2 minute read
Мы уже знаем как узнать время отклика сайта из командной строки 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 закончено, и через некоторое время можно будет увидеть результаты в виде графика.