Current File : //usr/share/webmin/status/load-monitor.pl |
# load-monitor.pl
# Check if the system load exceeds some level
sub get_load_status
{
local @u = &uptime_output();
if (!@u) {
return { 'up' => -1 }
}
elsif ($u[$_[0]->{'time'}] >= $_[0]->{'max'}) {
return { 'up' => 0,
'value' => $u[$_[0]->{'time'}] };
}
else {
return { 'up' => 1,
'desc' => "Load is $u[$_[0]->{'time'}]",
'value' => $u[$_[0]->{'time'}] };
}
}
sub show_load_dialog
{
print &ui_table_row($text{'load_time'},
&ui_radio("time", int($_[0]->{'time'}),
[ [ 0, $text{'load_1'} ],
[ 1, $text{'load_5'} ],
[ 2, $text{'load_15'} ] ]));
print &ui_table_row($text{'load_max'},
&ui_textbox("max", $_[0]->{'max'}, 6));
}
sub parse_load_dialog
{
&has_command("uptime") || &error($text{'load_ecmd'});
scalar(&uptime_output()) || &error($text{'load_efmt'});
$in{'max'} =~ /^[0-9\.]+$/ || &error($text{'load_emax'});
$_[0]->{'time'} = $in{'time'};
$_[0]->{'max'} = $in{'max'};
}
sub uptime_output
{
&clean_environment();
local $out = &backquote_command("uptime 2>&1");
&reset_environment();
return $out =~ /average(s)?:\s+([0-9\.]+),?\s+([0-9\.]+),?\s+([0-9\.]+)/i ?
( $2, $3, $4 ) : ( );
}