mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-26 23:24:27 +02:00
enh(linux/local): memory mode - add memory available (#3240)
This commit is contained in:
parent
974bd6a25e
commit
a5a5e7902c
@ -29,13 +29,16 @@ sub custom_memory_output {
|
|||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
return sprintf(
|
return sprintf(
|
||||||
'Ram total: %s %s used (-%s): %s %s (%.2f%%) free: %s %s (%.2f%%)',
|
'Ram total: %s %s used (-%s): %s %s (%.2f%%) free: %s %s (%.2f%%) available: %s %s (%.2f%%)',
|
||||||
$self->{perfdata}->change_bytes(value => $self->{result_values}->{total}),
|
$self->{perfdata}->change_bytes(value => $self->{result_values}->{total}),
|
||||||
$self->{result_values}->{used_desc},
|
$self->{result_values}->{used_desc},
|
||||||
$self->{perfdata}->change_bytes(value => $self->{result_values}->{used}),
|
$self->{perfdata}->change_bytes(value => $self->{result_values}->{used}),
|
||||||
$self->{result_values}->{prct_used},
|
$self->{result_values}->{prct_used},
|
||||||
$self->{perfdata}->change_bytes(value => $self->{result_values}->{free}),
|
$self->{perfdata}->change_bytes(value => $self->{result_values}->{free}),
|
||||||
$self->{result_values}->{prct_free}
|
$self->{result_values}->{prct_free},
|
||||||
|
$self->{perfdata}->change_bytes(value => $self->{result_values}->{available}),
|
||||||
|
$self->{result_values}->{prct_available},
|
||||||
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +65,7 @@ sub set_counters {
|
|||||||
|
|
||||||
$self->{maps_counters}->{memory} = [
|
$self->{maps_counters}->{memory} = [
|
||||||
{ label => 'memory-usage', nlabel => 'memory.usage.bytes', set => {
|
{ label => 'memory-usage', nlabel => 'memory.usage.bytes', set => {
|
||||||
key_values => [ { name => 'used' }, { name => 'free' }, { name => 'prct_used' }, { name => 'prct_free' }, { name => 'total' }, { name => 'used_desc' } ],
|
key_values => [ { name => 'used' }, { name => 'free' }, { name => 'prct_used' }, { name => 'prct_free' }, { name => 'total' }, { name => 'used_desc' }, { name => 'available' }, { name => 'prct_available' } ],
|
||||||
closure_custom_output => $self->can('custom_memory_output'),
|
closure_custom_output => $self->can('custom_memory_output'),
|
||||||
perfdatas => [
|
perfdatas => [
|
||||||
{ template => '%d', min => 0, max => 'total', unit => 'B' }
|
{ template => '%d', min => 0, max => 'total', unit => 'B' }
|
||||||
@ -70,7 +73,7 @@ sub set_counters {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ label => 'memory-usage-free', nlabel => 'memory.free.bytes', display_ok => 0, set => {
|
{ label => 'memory-usage-free', nlabel => 'memory.free.bytes', display_ok => 0, set => {
|
||||||
key_values => [ { name => 'free' }, { name => 'used' }, { name => 'prct_used' }, { name => 'prct_free' }, { name => 'total' }, { name => 'used_desc' } ],
|
key_values => [ { name => 'free' }, { name => 'used' }, { name => 'prct_used' }, { name => 'prct_free' }, { name => 'total' }, { name => 'used_desc' }, { name => 'available' }, { name => 'prct_available' } ],
|
||||||
closure_custom_output => $self->can('custom_memory_output'),
|
closure_custom_output => $self->can('custom_memory_output'),
|
||||||
perfdatas => [
|
perfdatas => [
|
||||||
{ template => '%d', min => 0, max => 'total', unit => 'B' }
|
{ template => '%d', min => 0, max => 'total', unit => 'B' }
|
||||||
@ -78,7 +81,23 @@ sub set_counters {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ label => 'memory-usage-prct', nlabel => 'memory.usage.percentage', display_ok => 0, set => {
|
{ label => 'memory-usage-prct', nlabel => 'memory.usage.percentage', display_ok => 0, set => {
|
||||||
key_values => [ { name => 'prct_used' }, { name => 'used' }, { name => 'free' }, { name => 'prct_free' }, { name => 'total' }, { name => 'used_desc' } ],
|
key_values => [ { name => 'prct_used' }, { name => 'used' }, { name => 'free' }, { name => 'prct_free' }, { name => 'total' }, { name => 'used_desc' }, { name => 'available' }, { name => 'prct_available' } ],
|
||||||
|
closure_custom_output => $self->can('custom_memory_output'),
|
||||||
|
perfdatas => [
|
||||||
|
{ template => '%.2f', min => 0, max => 100, unit => '%' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ label => 'memory-available', nlabel => 'memory.available.bytes', display_ok => 0, set => {
|
||||||
|
key_values => [ { name => 'available' }, { name => 'used' }, { name => 'free' }, { name => 'prct_used' }, { name => 'prct_free' }, { name => 'total' }, { name => 'used_desc' }, { name => 'prct_available' } ],
|
||||||
|
closure_custom_output => $self->can('custom_memory_output'),
|
||||||
|
perfdatas => [
|
||||||
|
{ template => '%d', min => 0, max => 'total', unit => 'B' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ label => 'memory-available-prct', nlabel => 'memory.available.percentage', display_ok => 0, set => {
|
||||||
|
key_values => [ { name => 'prct_available' }, { name => 'prct_used' }, { name => 'used' }, { name => 'free' }, { name => 'prct_free' }, { name => 'total' }, { name => 'used_desc' }, { name => 'available' } ],
|
||||||
closure_custom_output => $self->can('custom_memory_output'),
|
closure_custom_output => $self->can('custom_memory_output'),
|
||||||
perfdatas => [
|
perfdatas => [
|
||||||
{ template => '%.2f', min => 0, max => 100, unit => '%' }
|
{ template => '%.2f', min => 0, max => 100, unit => '%' }
|
||||||
@ -176,6 +195,7 @@ sub manage_selection {
|
|||||||
|
|
||||||
# Buffer can be missing. In Openvz container for example.
|
# Buffer can be missing. In Openvz container for example.
|
||||||
my $buffer_used = 0;
|
my $buffer_used = 0;
|
||||||
|
my $available = 0;
|
||||||
my ($cached_used, $free, $total_size, $slab_used, $swap_total, $swap_free);
|
my ($cached_used, $free, $total_size, $slab_used, $swap_total, $swap_free);
|
||||||
foreach (split(/\n/, $stdout)) {
|
foreach (split(/\n/, $stdout)) {
|
||||||
if (/^MemTotal:\s+(\d+)/i) {
|
if (/^MemTotal:\s+(\d+)/i) {
|
||||||
@ -192,6 +212,8 @@ sub manage_selection {
|
|||||||
$swap_total = $1 * 1024;
|
$swap_total = $1 * 1024;
|
||||||
} elsif (/^SwapFree:\s+(\d+)/i) {
|
} elsif (/^SwapFree:\s+(\d+)/i) {
|
||||||
$swap_free = $1 * 1024;
|
$swap_free = $1 * 1024;
|
||||||
|
} elsif (/^MemAvailable:\s+(\d+)/i) {
|
||||||
|
$available = $1 * 1024;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,6 +240,8 @@ sub manage_selection {
|
|||||||
prct_used => $nobuf_used * 100 / $total_size,
|
prct_used => $nobuf_used * 100 / $total_size,
|
||||||
prct_free => 100 - ($nobuf_used * 100 / $total_size),
|
prct_free => 100 - ($nobuf_used * 100 / $total_size),
|
||||||
used_desc => $used_desc,
|
used_desc => $used_desc,
|
||||||
|
available => $available,
|
||||||
|
prct_available => $available * 100 / $total_size,
|
||||||
|
|
||||||
buffer => $buffer_used,
|
buffer => $buffer_used,
|
||||||
cache => $cached_used,
|
cache => $cached_used,
|
||||||
@ -256,9 +280,11 @@ Check swap also.
|
|||||||
|
|
||||||
Thresholds.
|
Thresholds.
|
||||||
Can be: 'memory-usage' (B), 'memory-usage-free' (B), 'memory-usage-prct' (%),
|
Can be: 'memory-usage' (B), 'memory-usage-free' (B), 'memory-usage-prct' (%),
|
||||||
|
'memory-available' (B), 'memory-available-prct' (%),
|
||||||
'swap' (B), 'swap-free' (B), 'swap-prct' (%),
|
'swap' (B), 'swap-free' (B), 'swap-prct' (%),
|
||||||
'buffer' (B), 'cached' (B), 'slab' (B).
|
'buffer' (B), 'cached' (B), 'slab' (B).
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user