mirror of
https://github.com/webmin/webmin.git
synced 2025-07-20 16:48:46 +00:00
51 lines
1.1 KiB
Perl
Executable File
51 lines
1.1 KiB
Perl
Executable File
# 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 ) : ( );
|
|
}
|
|
|