mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-27 07:34:35 +02:00
feat(freebsd-snmp): add storage mode with default ZFS support (#5296)
Refs: CTOR-1176
This commit is contained in:
parent
54c92eecca
commit
0ddcaf9d77
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"libsnmp-perl",
|
"libsnmp-perl",
|
||||||
"libdatetime-perl"
|
"libdatetime-perl",
|
||||||
|
"libnet-ntp-perl"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -14,14 +14,15 @@
|
|||||||
"snmp_standard/mode/loadaverage.pm",
|
"snmp_standard/mode/loadaverage.pm",
|
||||||
"snmp_standard/mode/listdiskspath.pm",
|
"snmp_standard/mode/listdiskspath.pm",
|
||||||
"snmp_standard/mode/listinterfaces.pm",
|
"snmp_standard/mode/listinterfaces.pm",
|
||||||
"snmp_standard/mode/resources/",
|
"snmp_standard/mode/resources/",
|
||||||
"snmp_standard/mode/listprocesses.pm",
|
"snmp_standard/mode/listprocesses.pm",
|
||||||
"snmp_standard/mode/liststorages.pm",
|
"snmp_standard/mode/liststorages.pm",
|
||||||
"snmp_standard/mode/processcount.pm",
|
"snmp_standard/mode/processcount.pm",
|
||||||
"snmp_standard/mode/storage.pm",
|
"snmp_standard/mode/storage.pm",
|
||||||
"snmp_standard/mode/swap.pm",
|
"snmp_standard/mode/swap.pm",
|
||||||
"snmp_standard/mode/tcpcon.pm",
|
"snmp_standard/mode/tcpcon.pm",
|
||||||
"snmp_standard/mode/uptime.pm",
|
"snmp_standard/mode/uptime.pm",
|
||||||
|
"snmp_standard/mode/ntp.pm",
|
||||||
"os/freebsd/snmp/"
|
"os/freebsd/snmp/"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"perl(SNMP)",
|
"perl(SNMP)",
|
||||||
"perl(DateTime)"
|
"perl(DateTime)",
|
||||||
|
"perl(Net::NTP)"
|
||||||
]
|
]
|
||||||
}
|
}
|
132
src/os/freebsd/snmp/mode/storage.pm
Normal file
132
src/os/freebsd/snmp/mode/storage.pm
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
#
|
||||||
|
# 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 C<readOnly>: C<--critical-access=readOnly>
|
||||||
|
|
||||||
|
=item B<--add-access>
|
||||||
|
|
||||||
|
Check storage access (C<readOnly>, C<readWrite>).
|
||||||
|
|
||||||
|
=item B<--units>
|
||||||
|
|
||||||
|
Units of thresholds (default: '%') ('%', 'B').
|
||||||
|
|
||||||
|
=item B<--free>
|
||||||
|
|
||||||
|
Thresholds are on free space left.
|
||||||
|
|
||||||
|
=item B<--storage>
|
||||||
|
|
||||||
|
Define the storage filter on IDs (OID indexes, e.g.: 1,2,...). If empty, all storage systems will be monitored.
|
||||||
|
To filter on storage names, see C<--name>.
|
||||||
|
|
||||||
|
=item B<--name>
|
||||||
|
|
||||||
|
Allows to use storage name with option C<--storage> instead of storage OID index.
|
||||||
|
|
||||||
|
=item B<--regexp>
|
||||||
|
|
||||||
|
Allows to use regexp to filter storage (with option C<--name>).
|
||||||
|
|
||||||
|
=item B<--regexp-insensitive>
|
||||||
|
|
||||||
|
Allows to use regexp non case-sensitive (with C<--regexp>).
|
||||||
|
|
||||||
|
=item B<--path-best-match>
|
||||||
|
|
||||||
|
Allows to select best path mount point (with C<--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: C<hrStorageDescr>) (values: C<hrStorageDescr>, C<hrFSMountPoint>).
|
||||||
|
|
||||||
|
=item B<--oid-display>
|
||||||
|
|
||||||
|
Choose OID used to display storage (default: C<hrStorageDescr>) (values: C<hrStorageDescr>, C<hrFSMountPoint>).
|
||||||
|
|
||||||
|
=item B<--display-transform-src> B<--display-transform-dst>
|
||||||
|
|
||||||
|
Modify the storage name displayed by using a regular expression.
|
||||||
|
|
||||||
|
Example: adding C<--display-transform-src='dev' --display-transform-dst='run'> will replace all occurrences of C<dev> with C<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: C<'^(hrStorageFixedDisk|hrStorageNetworkDisk|hrFSBerkeleyFFS|hrFSOther)$'>).
|
||||||
|
C<hrFSOther> is needed when the default file system is ZFS.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=cut
|
@ -44,7 +44,7 @@ sub new {
|
|||||||
'list-storages' => 'snmp_standard::mode::liststorages',
|
'list-storages' => 'snmp_standard::mode::liststorages',
|
||||||
'memory' => 'os::freebsd::snmp::mode::memory',
|
'memory' => 'os::freebsd::snmp::mode::memory',
|
||||||
'processcount' => 'snmp_standard::mode::processcount',
|
'processcount' => 'snmp_standard::mode::processcount',
|
||||||
'storage' => 'snmp_standard::mode::storage',
|
'storage' => 'os::freebsd::snmp::mode::storage',
|
||||||
'swap' => 'snmp_standard::mode::swap',
|
'swap' => 'snmp_standard::mode::swap',
|
||||||
'time' => 'snmp_standard::mode::ntp',
|
'time' => 'snmp_standard::mode::ntp',
|
||||||
'tcpcon' => 'snmp_standard::mode::tcpcon',
|
'tcpcon' => 'snmp_standard::mode::tcpcon',
|
||||||
@ -60,7 +60,7 @@ __END__
|
|||||||
|
|
||||||
=head1 PLUGIN DESCRIPTION
|
=head1 PLUGIN DESCRIPTION
|
||||||
|
|
||||||
Check Freebsd operating systems in SNMP.
|
Check FreeBSD operating systems in SNMP.
|
||||||
Some modes ('cpu', 'load, 'swap', 'memory') needs 'bsnmp-ucd'.
|
Some modes (C<cpu>, C<load>, C<swap>, C<memory>) need C<bsnmp-ucd>.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
64
tests/os/freebsd/snmp/freebsd.snmpwalk
Normal file
64
tests/os/freebsd/snmp/freebsd.snmpwalk
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
.1.3.6.1.2.1.25.2.3.1.2.1 = OID: .1.3.6.1.2.1.25.2.1.2
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.2 = OID: .1.3.6.1.2.1.25.2.1.2
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.3 = OID: .1.3.6.1.2.1.25.2.1.3
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.6 = OID: .1.3.6.1.2.1.25.2.1.1
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.7 = OID: .1.3.6.1.2.1.25.2.1.1
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.8 = OID: .1.3.6.1.2.1.25.2.1.1
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.9 = OID: .1.3.6.1.2.1.25.2.1.1
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.10 = OID: .1.3.6.1.2.1.25.2.1.3
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.31 = OID: .1.3.6.1.2.1.25.2.1.4
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.33 = OID: .1.3.6.1.2.1.25.2.1.10
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.2.34 = OID: .1.3.6.1.2.1.25.2.1.4
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.1 = STRING: Physical memory
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.2 = STRING: Real memory
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.3 = STRING: Virtual memory
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.6 = STRING: Memory buffers
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.7 = STRING: Cached memory
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.8 = STRING: Shared virtual memory
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.9 = STRING: Shared real memory
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.10 = STRING: Swap space
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.31 = STRING: /
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.33 = STRING: /dev
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.3.34 = STRING: /boot/efi
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.1 = INTEGER: 4096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.2 = INTEGER: 4096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.3 = INTEGER: 4096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.6 = INTEGER: 1024
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.7 = INTEGER: 4096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.8 = INTEGER: 4096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.9 = INTEGER: 4096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.10 = INTEGER: 4096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.31 = INTEGER: 4096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.33 = INTEGER: 512
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.4.34 = INTEGER: 512
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.1 = INTEGER: 241144
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.2 = INTEGER: 13053
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.3 = INTEGER: 134610087
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.6 = INTEGER: 107088
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.7 = INTEGER: 164113
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.8 = INTEGER: 27008
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.9 = INTEGER: 6541
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.10 = INTEGER: 0
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.31 = INTEGER: 2527523
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.33 = INTEGER: 2
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.5.34 = INTEGER: 65528
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.1 = INTEGER: 230842
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.2 = INTEGER: 12140
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.3 = INTEGER: 134587035
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.6 = INTEGER: 101096
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.7 = INTEGER: 164113
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.8 = INTEGER: 6711
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.9 = INTEGER: 5668
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.10 = INTEGER: 0
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.31 = INTEGER: 1106944
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.33 = INTEGER: 0
|
||||||
|
.1.3.6.1.2.1.25.2.3.1.6.34 = INTEGER: 1294
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.2.1 = STRING: "/"
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.2.3 = STRING: "/dev"
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.2.4 = STRING: "/boot/efi"
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.5.1 = INTEGER: 1
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.5.3 = INTEGER: 1
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.5.4 = INTEGER: 1
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.7.1 = INTEGER: 31
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.7.3 = INTEGER: 33
|
||||||
|
.1.3.6.1.2.1.25.3.8.1.7.4 = INTEGER: 34
|
34
tests/os/freebsd/snmp/storage.robot
Normal file
34
tests/os/freebsd/snmp/storage.robot
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
*** Settings ***
|
||||||
|
Documentation Check storage table
|
||||||
|
|
||||||
|
Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource
|
||||||
|
|
||||||
|
Test Timeout 120s
|
||||||
|
|
||||||
|
|
||||||
|
*** Variables ***
|
||||||
|
${CMD} ${CENTREON_PLUGINS} --plugin=os::freebsd::snmp::plugin
|
||||||
|
|
||||||
|
|
||||||
|
*** Test Cases ***
|
||||||
|
storage ${tc}
|
||||||
|
[Tags] os freebsd
|
||||||
|
${command} Catenate
|
||||||
|
... ${CMD}
|
||||||
|
... --mode=storage
|
||||||
|
... --hostname=${HOSTNAME}
|
||||||
|
... --snmp-version=${SNMPVERSION}
|
||||||
|
... --snmp-port=${SNMPPORT}
|
||||||
|
... --snmp-community=os/freebsd/snmp/freebsd
|
||||||
|
... --snmp-version=2c
|
||||||
|
... --snmp-timeout=1
|
||||||
|
... ${extra_options}
|
||||||
|
|
||||||
|
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||||
|
|
||||||
|
Examples: tc extra_options expected_result --
|
||||||
|
... 1 ${EMPTY} OK: All storages are ok | 'count'=3;;;0; 'used_/'=4534042624B;;;0;10352734208 'used_/dev'=0B;;;0;1024 'used_/boot/efi'=662528B;;;0;33550336
|
||||||
|
... 2 --verbose OK: All storages are ok | 'count'=3;;;0; 'used_/'=4534042624B;;;0;10352734208 'used_/dev'=0B;;;0;1024 'used_/boot/efi'=662528B;;;0;33550336 Storage '/' Usage Total: 9.64 GB Used: 4.22 GB (43.80%) Free: 5.42 GB (56.20%) Storage '/dev' Usage Total: 1.00 KB Used: 0.00 B (0.00%) Free: 1.00 KB (100.00%) Storage '/boot/efi' Usage Total: 32.00 MB Used: 647.00 KB (1.97%) Free: 31.36 MB (98.03%)
|
||||||
|
... 3 --warning-usage=30 WARNING: Storage '/' Usage Total: 9.64 GB Used: 4.22 GB (43.80%) Free: 5.42 GB (56.20%) | 'count'=3;;;0; 'used_/'=4534042624B;0:3105820262;;0;10352734208 'used_/dev'=0B;0:307;;0;1024 'used_/boot/efi'=662528B;0:10065100;;0;33550336
|
||||||
|
... 4 --critical-usage=30 CRITICAL: Storage '/' Usage Total: 9.64 GB Used: 4.22 GB (43.80%) Free: 5.42 GB (56.20%) | 'count'=3;;;0; 'used_/'=4534042624B;;0:3105820262;0;10352734208 'used_/dev'=0B;;0:307;0;1024 'used_/boot/efi'=662528B;;0:10065100;0;33550336
|
||||||
|
... 5 --name --storage='/' OK: Storage '/' Usage Total: 9.64 GB Used: 4.22 GB (43.80%) Free: 5.42 GB (56.20%) | 'count'=1;;;0; 'used'=4534042624B;;;0;10352734208
|
@ -46,10 +46,12 @@ dns-resolve-time
|
|||||||
env
|
env
|
||||||
ESX
|
ESX
|
||||||
eth
|
eth
|
||||||
|
ext4
|
||||||
fanspeed
|
fanspeed
|
||||||
FCCapacity
|
FCCapacity
|
||||||
Fortigate
|
Fortigate
|
||||||
Fortinet
|
Fortinet
|
||||||
|
FreeBSD
|
||||||
frsevent
|
frsevent
|
||||||
HashiCorp
|
HashiCorp
|
||||||
hashicorpvault
|
hashicorpvault
|
||||||
@ -177,3 +179,4 @@ WLAN
|
|||||||
WLC
|
WLC
|
||||||
WSMAN
|
WSMAN
|
||||||
XPath
|
XPath
|
||||||
|
ZFS
|
Loading…
x
Reference in New Issue
Block a user