На днях, для того чтобы снять стресс социального происхождения, я решил немного попрограммировать для души, хотя, наверно, это громко сказано - несколько строк на перле - это, пожалуй, не программирование :)
Сказано - сделано, порывшись в документации к munin было решено написать модулёк для сбора статистики по температуре процессора.
Итак, какова идея? на вход плагину при запуске munin-node подаётся команда config, в ответ плагин должен вернуть описание осей графика название графика, название осей (точнее - вертикальных осей, горизонтальные - это время).
То есть, запустив coretemp.pl config , мы видим:
# ./coretemp.pl config
graph_title CPU Temperature
graph_vlabel Degrees Celcium
graph_scale no
graph_category system
graph_info How hot cpu is.
temperature.label temperature
а если пареметров не будет или они будут другими(еже 5-минутр), то мы увидим значение в градусах цельсия:
./coretemp.pl
temperature.value 46
<div>вот например так.</div>
<div>Дублировать документацию по мунину здесь мне откровенно влом, просто приведу скрипт, который у меня сейчас работает, для наглядности что всё просто.</div>
#!/usr/bin/perl
# cpu temperature monitoring plugin for munin
# distributed for public domain
# date 17 May 2010
#use strict;
#use warnings "all";
use Fcntl;
if (defined($ARGV[0]) && ($ARGV[0] eq 'config')){
syswrite STDOUT, < <DATA
graph_title CPU Temperature
graph_vlabel Degrees Celcium
graph_scale no
graph_category system
graph_info How hot cpu is.
temperature.label temperature
DATA
;
}else{
if( -r '/sys/bus/platform/devices/coretemp.0/temp1_input'){
sysopen(FILE, '/sys/bus/platform/devices/coretemp.0/temp1_input', O_RDONLY);
my $str = <FILE>;
close(FILE);
chop($str); chop($str); chop($str); chop($str);
syswrite STDOUT, "temperature.value $str\n";
undef $str;
}else{
syswrite STDOUT, "Cannot read /sys/bus/platform/devices/coretemp.0/temp1_input\n";
exit -1;
}
}
exit 0;
__END__