Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CTOR 1176: Enhance FreeBSD storage - Add default ZFS support + tests #5296

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"dependencies": [
"libsnmp-perl",
"libdatetime-perl"
"libdatetime-perl",
"libnet-ntp-perl"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,15 @@
"snmp_standard/mode/loadaverage.pm",
"snmp_standard/mode/listdiskspath.pm",
"snmp_standard/mode/listinterfaces.pm",
"snmp_standard/mode/resources/",
"snmp_standard/mode/listprocesses.pm",
"snmp_standard/mode/resources/",
"snmp_standard/mode/listprocesses.pm",
"snmp_standard/mode/liststorages.pm",
"snmp_standard/mode/processcount.pm",
"snmp_standard/mode/storage.pm",
"snmp_standard/mode/swap.pm",
"snmp_standard/mode/tcpcon.pm",
"snmp_standard/mode/uptime.pm",
"snmp_standard/mode/ntp.pm",
"os/freebsd/snmp/"
]
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"dependencies": [
"perl(SNMP)",
"perl(DateTime)"
"perl(DateTime)",
"perl(Net::NTP)"
]
}
131 changes: 131 additions & 0 deletions src/os/freebsd/snmp/mode/storage.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#
# Copyright 2024 Centreon (http://www.centreon.com/)
#
# Centreon is a full-fledged industry-strength solution that meets
# the needs in IT infrastructure and application monitoring for
# service performance.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

package os::freebsd::snmp::mode::storage;

use base qw(snmp_standard::mode::storage);

use strict;
use warnings;

sub default_storage_type {
my ($self, %options) = @_;

return '^(hrStorageFixedDisk|hrStorageNetworkDisk|hrFSBerkeleyFFS|hrFSOther)$';
}

1;

__END__

=head1 MODE

Check storage system.

=over 8

=item B<--warning-usage>

Warning threshold.

=item B<--critical-usage>

Critical threshold.

=item B<--warning-access>

Warning threshold.

=item B<--critical-access>

Critical threshold.
Check if storage is readOnly: --critical-access=readOnly

=item B<--add-access>

Check storage access (readOnly, readWrite).

=item B<--units>

Units of thresholds (default: '%') ('%', 'B').

=item B<--free>

Thresholds are on free space left.

=item B<--storage>

Set the storage (number expected) example: 1, 2,... (empty means 'check all storage').

=item B<--name>

Allows to use storage name with option --storage instead of storage OID index.

=item B<--regexp>

Allows to use regexp to filter storage (with option --name).

=item B<--regexp-insensitive>

Allows to use regexp non case-sensitive (with --regexp).

=item B<--path-best-match>

Allows to select best path mount point (with --name).

=item B<--reload-cache-time>

Time in minutes before reloading cache file (default: 180).

=item B<--oid-filter>

Choose OID used to filter storage (default: hrStorageDescr) (values: hrStorageDescr, hrFSMountPoint).

=item B<--oid-display>

Choose OID used to display storage (default: hrStorageDescr) (values: hrStorageDescr, hrFSMountPoint).

=item B<--display-transform-src> B<--display-transform-dst>

Modify the storage name displayed by using a regular expression.

Example: adding --display-transform-src='dev' --display-transform-dst='run' will replace all occurrences of 'dev' with 'run'

=item B<--show-cache>

Display cache storage data.

=item B<--space-reservation>

Some filesystem has space reserved (like ext4 for root).
The value is in percent of total (default: none) (results like 'df' command).

=item B<--filter-duplicate>

Filter duplicate storages (in used size and total size).

=item B<--filter-storage-type>

Filter storage types with a regexp (default: '^(hrStorageFixedDisk|hrStorageNetworkDisk|hrFSBerkeleyFFS|hrFSOther)$').
'hrFSOther' is needed when the default file system is ZFS.

=back

=cut
2 changes: 1 addition & 1 deletion src/os/freebsd/snmp/plugin.pm
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ sub new {
'list-storages' => 'snmp_standard::mode::liststorages',
'memory' => 'os::freebsd::snmp::mode::memory',
'processcount' => 'snmp_standard::mode::processcount',
'storage' => 'snmp_standard::mode::storage',
'storage' => 'os::freebsd::snmp::mode::storage',
'swap' => 'snmp_standard::mode::swap',
'time' => 'snmp_standard::mode::ntp',
'tcpcon' => 'snmp_standard::mode::tcpcon',
Expand Down
49 changes: 49 additions & 0 deletions tests/os/freebsd/snmp/cpu-detailed.robot
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
*** Settings ***
Documentation Check cpu table

Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource

Test Timeout 120s


*** Variables ***
${CMD} ${CENTREON_PLUGINS} --plugin=os::freebsd::snmp::plugin


*** Test Cases ***
cpu-detailed ${tc}
[Tags] os freebsd cpu
${command} Catenate
... ${CMD}
... --mode=cpu-detailed
... --hostname=${HOSTNAME}
... --snmp-version=${SNMPVERSION}
... --snmp-port=${SNMPPORT}
... --snmp-community=os/linux/snmp/linux
... --snmp-timeout=1
... ${extra_options}

Ctn Run Command And Check Result As Strings ${command} ${expected_result}

Examples: tc extra_options expected_result --
... 1 --critical-guest OK: CPU Usage: user : Buffer creation, nice : Buffer creation, system : Buffer creation, idle : Buffer creation, wait : Buffer creation, kernel : Buffer creation, interrupt : Buffer creation, softirq : Buffer creation, steal : Buffer creation, guest : Buffer creation, guestnice : Buffer creation
... 2 --warning-nice OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 3 --warning-system OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 4 --warning-idle OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 5 --warning-wait OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 6 --warning-kernel OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 7 --warning-interrupt OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 8 --warning-softirq OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 9 --warning-steal OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 10 --warning-guest OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 11 --warning-guestnice OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 12 --critical-guestnice OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 13 --critical-user='' OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 14 --critical-nice OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 15 --critical-system OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 16 --critical-idle OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 17 --critical-wait OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 18 --critical-kernel OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 19 --critical-interrupt OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 20 --critical-softirq OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
... 21 --critical-steal OK: CPU Usage: user : counter not moved, nice : counter not moved, system : counter not moved, idle : counter not moved, wait : counter not moved, kernel : counter not moved, interrupt : counter not moved, softirq : counter not moved, steal : counter not moved, guest : counter not moved, guestnice : counter not moved
38 changes: 38 additions & 0 deletions tests/os/freebsd/snmp/cpu.robot
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
*** Settings ***
Documentation Check cpu table

Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource

Test Timeout 120s


*** Variables ***
${CMD} ${CENTREON_PLUGINS} --plugin=os::freebsd::snmp::plugin


*** Test Cases ***
cpu ${tc}
[Tags] os freebsd
${command} Catenate
... ${CMD}
... --mode=cpu
... --hostname=${HOSTNAME}
... --snmp-version=${SNMPVERSION}
... --snmp-port=${SNMPPORT}
... --snmp-community=os/linux/snmp/linux
... --snmp-timeout=1
... ${extra_options}

Ctn Run Command And Check Result As Strings ${command} ${expected_result}

Examples: tc extra_options expected_result --
... 1 --use-ucd='0' OK: 2 CPU(s) average usage is 6.00 % | 'total_cpu_avg'=6.00%;;;0;100 'cpu_0'=6.00%;;;0;100 'cpu_1'=6.00%;;;0;100
... 2 --warning-average OK: 2 CPU(s) average usage is 6.00 % | 'total_cpu_avg'=6.00%;;;0;100 'cpu_0'=6.00%;;;0;100 'cpu_1'=6.00%;;;0;100
... 3 --critical-average OK: 2 CPU(s) average usage is 6.00 % | 'total_cpu_avg'=6.00%;;;0;100 'cpu_0'=6.00%;;;0;100 'cpu_1'=6.00%;;;0;100
... 4 --warning-core OK: 2 CPU(s) average usage is 6.00 % | 'total_cpu_avg'=6.00%;;;0;100 'cpu_0'=6.00%;;;0;100 'cpu_1'=6.00%;;;0;100
... 5 --critical-core OK: 2 CPU(s) average usage is 6.00 % | 'total_cpu_avg'=6.00%;;;0;100 'cpu_0'=6.00%;;;0;100 'cpu_1'=6.00%;;;0;100
... 6 --verbose OK: 2 CPU(s) average usage is 6.00 % | 'total_cpu_avg'=6.00%;;;0;100 'cpu_0'=6.00%;;;0;100 'cpu_1'=6.00%;;;0;100 CPU '0' usage : 6.00 % CPU '1' usage : 6.00 %
... 7 --warning-average='0' WARNING: 2 CPU(s) average usage is 6.00 % | 'total_cpu_avg'=6.00%;0:0;;0;100 'cpu_0'=6.00%;;;0;100 'cpu_1'=6.00%;;;0;100
... 8 --critical-average='0' CRITICAL: 2 CPU(s) average usage is 6.00 % | 'total_cpu_avg'=6.00%;;0:0;0;100 'cpu_0'=6.00%;;;0;100 'cpu_1'=6.00%;;;0;100
... 9 --warning-core='0' WARNING: CPU '0' usage : 6.00 % - CPU '1' usage : 6.00 % | 'total_cpu_avg'=6.00%;;;0;100 'cpu_0'=6.00%;0:0;;0;100 'cpu_1'=6.00%;0:0;;0;100
... 10 --critical-core='0' CRITICAL: CPU '0' usage : 6.00 % - CPU '1' usage : 6.00 % | 'total_cpu_avg'=6.00%;;;0;100 'cpu_0'=6.00%;;0:0;0;100 'cpu_1'=6.00%;;0:0;0;100
Loading
Loading