check_aruba_ap
Check Aruba APs plugin for Icinga (via SNMP).
Note: Test on :
- Virtual Controler (Instant Mode) version 8.10.0.6 and AP-515 / AP-575 (firmware version 8.10.0.6) (use
--snmp-profile instant_node
, default) - A7010 Controler version 8.10.0.6 LSR and APs 535, 515, 375 & 345 (use
--snmp-profile a7010
)
Installation
Using pip
python3 -m pip install 'check_aruba_ap@git+https://github.com/brenard/check_aruba_ap'
Note: Since Debian 12 Bookworm, you have to add the --break-system-packages
parameter.
Using pip with a virtualenv
sudo apt install python3-venv
python3 -m venv /usr/local/share/check_aruba_ap
/usr/local/share/check_aruba_ap/bin/python3 -m pip install \
'check_aruba_ap@git+https://github.com/brenard/check_aruba_ap'
mkdir -p /usr/local/lib/nagios/plugins
ln -s /usr/local/share/check_aruba_ap/bin/check_aruba_ap* /usr/local/lib/nagios/plugins
Using pipx
sudo \
PIPX_HOME=/usr/local/share/pipx-nagios-plugins \
PIPX_BIN_DIR=/usr/local/lib/nagios/plugins \
python3 -m pipx install \
'check_aruba_ap@git+https://github.com/brenard/check_aruba_ap'
Note: the pipx
package is available since Debian 11 Bulleyes (via backports) and Debian 12 Bookworm.
Upgrade
Using pip
python3 -m pip uninstall check_aruba_ap
python3 -m pip install -U 'check_aruba_ap@git+https://github.com/brenard/check_aruba_ap'
Using pip with a virtualenv
/usr/local/share/check_aruba_ap/bin/python3 -m pip uninstall \
'check_aruba_ap'
/usr/local/share/check_aruba_ap/bin/python3 -m pip install \
'check_aruba_ap@git+https://github.com/brenard/check_aruba_ap'
Using pipx
sudo \
PIPX_HOME=/usr/local/share/pipx-nagios-plugins \
PIPX_BIN_DIR=/usr/local/lib/nagios/plugins \
python3 -m pipx uninstall check_aruba_ap
sudo \
PIPX_HOME=/usr/local/share/pipx-nagios-plugins \
PIPX_BIN_DIR=/usr/local/lib/nagios/plugins \
python3 -m pipx install \
'check_aruba_ap@git+https://github.com/brenard/check_aruba_ap'
Usage
check_aruba_aps
usage: check_aruba_aps [-h] -H HOSTNAME [-cw WARNING_CPU_THRESHOLD]
[-cc CRITICAL_CPU_THRESHOLD] [-mc WARNING_MEMORY_THRESHOLD]
[-mw CRITICAL_MEMORY_THRESHOLD]
[--snmp-profile {instant_node,a7010}] [-C SNMP_COMMUNITY]
[-V SNMP_VERSION] [-p SNMP_REMOTE_PORT]
[--snmp-local-port SNMP_LOCAL_PORT]
[--snmp-security-level {no_auth_or_privacy,auth_without_privacy,auth_with_privacy}]
[-U SNMP_AUTH_USERNAME] [-P SNMP_AUTH_PASSWORD]
[--snmp-auth-protocol {DEFAULT,MD5,SHA}]
[--snmp-priv-protocol {DEFAULT,DES,AES}]
[--snmp-priv-password SNMP_PRIV_PASSWORD] [-t SNMP_TIMEOUT]
[-v] [-d] [-l LOG_FILE] [-c]
Icinga plugin to check all Aruba APs state via SNMP on the controller
options:
-h, --help show this help message and exit
-H HOSTNAME, --hostname HOSTNAME
Aruba SNMP hostname (IP address required for the current
elected virtual controller)
-cw WARNING_CPU_THRESHOLD, --warning-cpu-threshold WARNING_CPU_THRESHOLD
Warning AP CPU usage threshold (default: 80%)
-cc CRITICAL_CPU_THRESHOLD, --critical-cpu-threshold CRITICAL_CPU_THRESHOLD
Critical AP CPU usage threshold (default: 95%)
-mc WARNING_MEMORY_THRESHOLD, --warning-memory-threshold WARNING_MEMORY_THRESHOLD
Warning AP memory threshold (default: 80%)
-mw CRITICAL_MEMORY_THRESHOLD, --critical-memory-threshold CRITICAL_MEMORY_THRESHOLD
Critical AP memory threshold (default: 95%)
SNMP options:
--snmp-profile {instant_node,a7010}
SNMP profile (default: instant_node)
-C SNMP_COMMUNITY, --snmp-community SNMP_COMMUNITY
SNMP community (default: public)
-V SNMP_VERSION, --snmp-version SNMP_VERSION
SNMP version (default: 1)
-p SNMP_REMOTE_PORT, --snmp-remote-port SNMP_REMOTE_PORT
SNMP remote port (default: 161)
--snmp-local-port SNMP_LOCAL_PORT
SNMP local port
--snmp-security-level {no_auth_or_privacy,auth_without_privacy,auth_with_privacy}
SNMP v3 security level (default: 'no_auth_or_privacy')
-U SNMP_AUTH_USERNAME, --snmp-auth-username SNMP_AUTH_USERNAME
SNMP v3 authentication username
-P SNMP_AUTH_PASSWORD, --snmp-auth-password SNMP_AUTH_PASSWORD
SNMP v3 authentication password
--snmp-auth-protocol {DEFAULT,MD5,SHA}
SNMP v3 authentication protocol (default: 'DEFAULT')
--snmp-priv-protocol {DEFAULT,DES,AES}
SNMP v3 privacy protocol (default: 'DEFAULT')
--snmp-priv-password SNMP_PRIV_PASSWORD
SNMP v3 privacy password
-t SNMP_TIMEOUT, --snmp-timeout SNMP_TIMEOUT
SNMP timeout (default: 5)
Logging options:
-v, --verbose Enable verbose mode
-d, --debug Enable debug mode
-l LOG_FILE, --log-file LOG_FILE
Log file path
-c, --console Always log on console (even if log file is configured)
check_aruba_ap
usage: check_aruba_ap [-h] -H HOSTNAME [-cw WARNING_CPU_THRESHOLD]
[-cc CRITICAL_CPU_THRESHOLD] [-mc WARNING_MEMORY_THRESHOLD]
[-mw CRITICAL_MEMORY_THRESHOLD]
[--snmp-profile {instant_node,a7010}] [-C SNMP_COMMUNITY]
[-V SNMP_VERSION] [-p SNMP_REMOTE_PORT]
[--snmp-local-port SNMP_LOCAL_PORT]
[--snmp-security-level {no_auth_or_privacy,auth_without_privacy,auth_with_privacy}]
[-U SNMP_AUTH_USERNAME] [-P SNMP_AUTH_PASSWORD]
[--snmp-auth-protocol {DEFAULT,MD5,SHA}]
[--snmp-priv-protocol {DEFAULT,DES,AES}]
[--snmp-priv-password SNMP_PRIV_PASSWORD] [-t SNMP_TIMEOUT]
[-v] [-d] [-l LOG_FILE] [-c] [-A AP_ADDRESS]
[-rc WARNING_RADIO_USAGE_THRESHOLD]
[-rw CRITICAL_RADIO_USAGE_THRESHOLD]
Icinga plugin to check one Aruba AP state via SNMP
options:
-h, --help show this help message and exit
-H HOSTNAME, --hostname HOSTNAME
Aruba SNMP hostname (IP address required for the current
elected virtual controller)
-cw WARNING_CPU_THRESHOLD, --warning-cpu-threshold WARNING_CPU_THRESHOLD
Warning AP CPU usage threshold (default: 80%)
-cc CRITICAL_CPU_THRESHOLD, --critical-cpu-threshold CRITICAL_CPU_THRESHOLD
Critical AP CPU usage threshold (default: 95%)
-mc WARNING_MEMORY_THRESHOLD, --warning-memory-threshold WARNING_MEMORY_THRESHOLD
Warning AP memory threshold (default: 80%)
-mw CRITICAL_MEMORY_THRESHOLD, --critical-memory-threshold CRITICAL_MEMORY_THRESHOLD
Critical AP memory threshold (default: 95%)
-A AP_ADDRESS, --ap-address AP_ADDRESS
If the SNMP host is a controler, the AP IP address have to
be provided using this parameter
-rc WARNING_RADIO_USAGE_THRESHOLD, --warning-radio-usage-threshold WARNING_RADIO_USAGE_THRESHOLD
Warning AP radio interface usage threshold (default: 80%)
-rw CRITICAL_RADIO_USAGE_THRESHOLD, --critical-radio-usage-threshold CRITICAL_RADIO_USAGE_THRESHOLD
Critical AP radio interface usage threshold (default: 95%)
SNMP options:
--snmp-profile {instant_node,a7010}
SNMP profile (default: instant_node)
-C SNMP_COMMUNITY, --snmp-community SNMP_COMMUNITY
SNMP community (default: public)
-V SNMP_VERSION, --snmp-version SNMP_VERSION
SNMP version (default: 1)
-p SNMP_REMOTE_PORT, --snmp-remote-port SNMP_REMOTE_PORT
SNMP remote port (default: 161)
--snmp-local-port SNMP_LOCAL_PORT
SNMP local port
--snmp-security-level {no_auth_or_privacy,auth_without_privacy,auth_with_privacy}
SNMP v3 security level (default: 'no_auth_or_privacy')
-U SNMP_AUTH_USERNAME, --snmp-auth-username SNMP_AUTH_USERNAME
SNMP v3 authentication username
-P SNMP_AUTH_PASSWORD, --snmp-auth-password SNMP_AUTH_PASSWORD
SNMP v3 authentication password
--snmp-auth-protocol {DEFAULT,MD5,SHA}
SNMP v3 authentication protocol (default: 'DEFAULT')
--snmp-priv-protocol {DEFAULT,DES,AES}
SNMP v3 privacy protocol (default: 'DEFAULT')
--snmp-priv-password SNMP_PRIV_PASSWORD
SNMP v3 privacy password
-t SNMP_TIMEOUT, --snmp-timeout SNMP_TIMEOUT
SNMP timeout (default: 5)
Logging options:
-v, --verbose Enable verbose mode
-d, --debug Enable debug mode
-l LOG_FILE, --log-file LOG_FILE
Log file path
-c, --console Always log on console (even if log file is configured)
Icinga2 configuration
Check commands declarations
object CheckCommand "check_aruba_aps" {
command = [ "/usr/local/bin/check_aruba_aps" ]
arguments += {
"--hostname" = {
description = "Aruba controller hostname or IP address"
required = true
value = "$address$"
}
"--snmp-community" = {
description = "SNMP community"
required = false
value = "$snmp_community$"
}
"--snmp-version" = {
description = "SNMP version"
required = false
value = "$snmp_version$"
}
"--snmp-timeout" = {
description = "SNMP timeout"
required = false
value = "$snmp_timeout$"
}
"--warning-cpu-threshold" = {
description = "Warning CPU threshold"
required = false
value = "$aruba_ap_warning_cpu_threshold$"
}
"--critical-cpu-threshold" = {
description = "Critical CPU threshold"
required = false
value = "$aruba_ap_critical_cpu_threshold$"
}
"--warning-memory-threshold" = {
description = "Warning memory threshold"
required = false
value = "$aruba_ap_warning_memory_threshold$"
}
"--critical-memory-threshold" = {
description = "Critical memory threshold"
required = false
value = "$aruba_ap_critical_memory_threshold$"
}
}
}
object CheckCommand "check_aruba_ap" {
command = [ "/usr/local/bin/check_aruba_ap" ]
arguments += {
"--hostname" = {
description = "Aruba AP hostname or IP address (IP address required for the current elected virtual controller)"
required = true
value = "$address$"
}
"--snmp-community" = {
description = "SNMP community"
required = false
value = "$snmp_community$"
}
"--snmp-version" = {
description = "SNMP version"
required = false
value = "$snmp_version$"
}
"--snmp-timeout" = {
description = "SNMP timeout"
required = false
value = "$snmp_timeout$"
}
"--warning-cpu-threshold" = {
description = "Warning CPU threshold"
required = false
value = "$aruba_ap_warning_cpu_threshold$"
}
"--critical-cpu-threshold" = {
description = "Critical CPU threshold"
required = false
value = "$aruba_ap_critical_cpu_threshold$"
}
"--warning-memory-threshold" = {
description = "Warning memory threshold"
required = false
value = "$aruba_ap_warning_memory_threshold$"
}
"--critical-memory-threshold" = {
description = "Critical memory threshold"
required = false
value = "$aruba_ap_critical_memory_threshold$"
}
"--warning-radio-usage-threshold" = {
description = "Warning radio usage threshold"
required = false
value = "$aruba_ap_warning_radio_usage_threshold$"
}
"--critical-radio-usage-threshold" = {
description = "Critical radio usage threshold"
required = false
value = "$aruba_ap_critical_radio_usage_threshold$"
}
}
}
Copyright
Copyright (c) 2023 Benjamin Renard
License
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.