mirror of
https://github.com/opinkerfi/nagios-plugins.git
synced 2026-02-13 02:20:57 +01:00
Compare commits
19 Commits
plugin_che
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ffbdd754d4 | ||
|
|
0440124d3a | ||
|
|
36582886c9 | ||
|
|
21c7874418 | ||
|
|
6b12d2414a | ||
|
|
ac1f45311e | ||
|
|
be3ea24fd8 | ||
|
|
1f9e1444cc | ||
|
|
bdb3233198 | ||
|
|
f22a7d8fb8 | ||
|
|
6c12036e30 | ||
|
|
8aed467ab0 | ||
|
|
df42d6ee6d | ||
|
|
223331510b | ||
|
|
ea93f8126f | ||
|
|
3ad7f64f55 | ||
|
|
e48179add8 | ||
|
|
56960140fe | ||
|
|
9eda5324d5 |
349
check_service.sh/check_service.sh
Normal file
349
check_service.sh/check_service.sh
Normal file
@@ -0,0 +1,349 @@
|
||||
#!/usr/bin/env bash
|
||||
set -o pipefail
|
||||
|
||||
# Author: Jon Schipp
|
||||
# 2015-03-09 [Pascal Hegy] - Add sudo for linux
|
||||
# 2015-03-09 [Pascal Hegy] - Change USER variable to USERNAME to avoid the use and confusion with the USER env variable
|
||||
# 2017-08-30 [Roberto Leibman] - Reordered checks to make sure dead and inactive get checked first
|
||||
# 2018-04-25 [Robin Gierse] - Update check via systemctl for Linux with grep to produce better output for systemctl
|
||||
# 2019-03-15 [nem / liberodark] - Add support for check all failed services in linux
|
||||
|
||||
########
|
||||
# Examples:
|
||||
|
||||
# 1.) List services for osx
|
||||
# $ ./check_service.sh -l -o osx
|
||||
#
|
||||
# 2.) Check status of SSH service on a linux machine
|
||||
# $ ./check_service.sh -o linux -s sshd
|
||||
|
||||
# 3.) Manually select service management tool and service
|
||||
# $ ./check_service.sh -o linux -t "service rsyslog status"
|
||||
# Exemple for check all failed services
|
||||
# $ ./check_service.sh -o linux -t "systemctl list-units --state=failed"
|
||||
|
||||
# Nagios Exit Codes
|
||||
OK=0
|
||||
WARNING=1
|
||||
CRITICAL=2
|
||||
UNKNOWN=3
|
||||
|
||||
# Weather or not we can trust the exit code from the service management tool.
|
||||
# Defaults to 0, put to 1 for systemd. Otherwise we must rely on parsing the
|
||||
# output from the service management tool.
|
||||
TRUST_EXIT_CODE=0
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<EOF
|
||||
|
||||
Check status of system services for Linux, FreeBSD, OSX, and AIX.
|
||||
|
||||
Options:
|
||||
-s <service> Specify service name
|
||||
-l List services
|
||||
-o <os> OS type, "linux/osx/freebsd/aix"
|
||||
-u <user> User if you need to ``sudo -u'' for launchctl (def: nagios, linux and osx only)
|
||||
-t <tool> Manually specify service management tool (def: autodetect) with status and service
|
||||
e.g. ``-t "service nagios status"''
|
||||
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
argcheck() {
|
||||
# if less than n argument
|
||||
if [ $ARGC -lt $1 ]; then
|
||||
echo "Missing arguments! Use \`\`-h'' for help."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
os_check() {
|
||||
if [ "$OS" == null ]; then
|
||||
unamestr=$(uname)
|
||||
if [[ $unamestr == 'Linux' ]]; then
|
||||
OS='linux'
|
||||
elif [[ $unamestr == 'FreeBSD' ]]; then
|
||||
OS='freebsd'
|
||||
elif [[ $unamestr == 'Darwin' ]]; then
|
||||
OS='osx'
|
||||
else
|
||||
echo "OS not recognized, Use \`-o\` and specify the OS as an argument"
|
||||
exit 3
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
determine_service_tool() {
|
||||
if [[ $OS == linux ]]; then
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
SERVICETOOL="systemctl status $SERVICE | grep -i Active"
|
||||
LISTTOOL="systemctl"
|
||||
if [ $USERNAME ]; then
|
||||
SERVICETOOL="sudo -u $USERNAME systemctl status $SERVICE"
|
||||
LISTTOOL="sudo -u $USERNAME systemctl"
|
||||
fi
|
||||
TRUST_EXIT_CODE=1
|
||||
elif command -v service >/dev/null 2>&1; then
|
||||
SERVICETOOL="service $SERVICE status"
|
||||
LISTTOOL="service --status-all"
|
||||
if [ $USERNAME ]; then
|
||||
SERVICETOOL="sudo -u $USERNAME service $SERVICE status"
|
||||
LISTTOOL="sudo -u $USERNAME service --status-all"
|
||||
fi
|
||||
elif command -v initctl >/dev/null 2>&1; then
|
||||
SERVICETOOL="status $SERVICE"
|
||||
LISTTOOL="initctl list"
|
||||
if [ $USERNAME ]; then
|
||||
SERVICETOOL="sudo -u $USERNAME status $SERVICE"
|
||||
LISTTOOL="sudo -u $USERNAME initctl list"
|
||||
fi
|
||||
elif command -v chkconfig >/dev/null 2>&1; then
|
||||
SERVICETOOL=chkconfig
|
||||
LISTTOOL="chkconfig --list"
|
||||
if [ $USERNAME ]; then
|
||||
SERVICETOOL="sudo -u $USERNAME chkconfig"
|
||||
LISTTOOL="sudo -u $USERNAME chkconfig --list"
|
||||
fi
|
||||
elif [ -f /etc/init.d/$SERVICE ] || [ -d /etc/init.d ]; then
|
||||
SERVICETOOL="/etc/init.d/$SERVICE status | tail -1"
|
||||
LISTTOOL="ls -1 /etc/init.d/"
|
||||
if [ $USERNAME ]; then
|
||||
SERVICETOOL="sudo -u $USERNAME /etc/init.d/$SERVICE status | tail -1"
|
||||
LISTTOOL="sudo -u $USERNAME ls -1 /etc/init.d/"
|
||||
fi
|
||||
else
|
||||
echo "Unable to determine the system's service tool!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $OS == freebsd ]]; then
|
||||
if command -v service >/dev/null 2>&1; then
|
||||
SERVICETOOL="service $SERVICE status"
|
||||
LISTTOOL="service -l"
|
||||
elif [ -f /etc/rc.d/$SERVICE ] || [ -d /etc/rc.d ]; then
|
||||
SERVICETOOL="/etc/rc.d/$SERVICE status"
|
||||
LISTTOOL="ls -1 /etc/rc.d/"
|
||||
else
|
||||
echo "Unable to determine the system's service tool!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $OS == osx ]]; then
|
||||
if [ -f /usr/sbin/serveradmin >/dev/null 2>&1 ] && serveradmin list | grep "$SERVICE" 2>&1 >/dev/null; then
|
||||
SERVICETOOL="serveradmin status $SERVICE"
|
||||
LISTTOOL="serveradmin list"
|
||||
elif [ -f /Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin >/dev/null 2>&1 ] && \
|
||||
/Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin list | \
|
||||
grep "$SERVICE" 2>&1 >/dev/null; then
|
||||
SERVICETOOL="/Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin status $SERVICE"
|
||||
LISTTOOL="/Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin list"
|
||||
elif command -v launchctl >/dev/null 2>&1; then
|
||||
SERVICETOOL="launchctl list | grep -v ^- | grep $SERVICE || echo $SERVICE not running! "
|
||||
LISTTOOL="launchctl list"
|
||||
if [ $USERNAME ]; then
|
||||
SERVICETOOL="sudo -u $USERNAME launchctl list | grep -v ^- | grep $SERVICE || echo $SERVICE not running! "
|
||||
LISTTOOL="sudo -u $USERNAME launchctl list"
|
||||
fi
|
||||
elif command -v service >/dev/null 2>&1; then
|
||||
SERVICETOOL="service --test-if-configured-on $SERVICE"
|
||||
LISTTOOL="service list"
|
||||
else
|
||||
echo "Unable to determine the system's service tool!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $OS == aix ]]; then
|
||||
if command -v lssrc >/dev/null 2>&1; then
|
||||
SERVICETOOL="lssrc -s $SERVICE | grep -v Subsystem"
|
||||
LISTTOOL="lssrc -a"
|
||||
else
|
||||
echo "Unable to determine the system's service tool!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
ARGC=$#
|
||||
LIST=0
|
||||
MANUAL=0
|
||||
OS=null
|
||||
SERVICETOOL=null
|
||||
LISTTOOL=null
|
||||
SERVICE=".*"
|
||||
#USERNAME=nagios
|
||||
|
||||
argcheck 1
|
||||
|
||||
while getopts "hls:o:t:u:" OPTION
|
||||
do
|
||||
case $OPTION in
|
||||
h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
l)
|
||||
LIST=1
|
||||
;;
|
||||
s)
|
||||
SERVICE="$OPTARG"
|
||||
;;
|
||||
o)
|
||||
if [[ "$OPTARG" == linux ]]; then
|
||||
OS="$OPTARG"
|
||||
elif [[ "$OPTARG" == osx ]]; then
|
||||
OS="$OPTARG"
|
||||
elif [[ "$OPTARG" == freebsd ]]; then
|
||||
OS="$OPTARG"
|
||||
elif [[ "$OPTARG" == aix ]]; then
|
||||
OS="$OPTARG"
|
||||
else
|
||||
echo "Unknown type!"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
t)
|
||||
MANUAL=1
|
||||
MANUALSERVICETOOL="$OPTARG"
|
||||
;;
|
||||
u)
|
||||
USERNAME="$OPTARG"
|
||||
;;
|
||||
\?)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
os_check
|
||||
|
||||
if [ $MANUAL -eq 1 ]; then
|
||||
SERVICETOOL=$MANUALSERVICETOOL
|
||||
else
|
||||
determine_service_tool
|
||||
fi
|
||||
|
||||
# -l conflicts with -t
|
||||
if [ $MANUAL -eq 1 ] && [ $LIST -eq 1 ]; then
|
||||
echo "Options conflict: \`\`-t'' and \`\`-l''"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ $LIST -eq 1 ]; then
|
||||
if [[ $LISTTOOL != null ]]; then
|
||||
$LISTTOOL
|
||||
exit 0
|
||||
else
|
||||
echo "OS not specified! Use \`\`-o''"
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check the status of a service
|
||||
STATUS_MSG=$(eval "$SERVICETOOL" 2>&1)
|
||||
EXIT_CODE=$?
|
||||
|
||||
## Exit code from the service tool - if it's non-zero, we should
|
||||
## probably return CRITICAL. (though, in some cases UNKNOWN would
|
||||
## probably be more appropriate)
|
||||
[ $EXIT_CODE -ne 0 ] && echo "$STATUS_MSG" && exit $CRITICAL
|
||||
|
||||
## For systemd and most systems, $EXIT_CODE can be trusted - if it's 0, the service is running.
|
||||
## Ref https://github.com/jonschipp/nagios-plugins/issues/15
|
||||
[ $TRUST_EXIT_CODE -eq 1 ] && [ $EXIT_CODE -eq 0 ] && echo "$STATUS_MSG" && exit $OK
|
||||
|
||||
case $STATUS_MSG in
|
||||
|
||||
*stop*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*STOPPED*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*not*running*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*NOT*running*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*NOT*RUNNING*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
#*inactive*)
|
||||
# echo "$STATUS_MSG"
|
||||
# exit $CRITICAL
|
||||
# ;;
|
||||
*dead*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*running*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $OK
|
||||
;;
|
||||
*RUNNING*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $OK
|
||||
;;
|
||||
*SUCCESS*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $OK
|
||||
;;
|
||||
*[eE]rr*)
|
||||
echo "Error in command: $STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*[fF]ailed*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*[eE]nable*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $OK
|
||||
;;
|
||||
*[dD]isable*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*[cC]annot*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*[aA]ctive*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $OK
|
||||
;;
|
||||
*Subsystem*not*on*file)
|
||||
echo "$STATUS_MSG"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
[1-9][1-9]*)
|
||||
echo "$SERVICE running: $STATUS_MSG"
|
||||
exit $OK
|
||||
;;
|
||||
"")
|
||||
echo "$SERVICE is not running: no output from service command"
|
||||
exit $CRITICAL
|
||||
;;
|
||||
*)
|
||||
echo "Unknown status: $STATUS_MSG"
|
||||
echo "Is there a typo in the command or service configuration?: $STATUS_MSG"
|
||||
exit $UNKNOWN
|
||||
;;
|
||||
*0\ loaded*)
|
||||
echo "$STATUS_MSG"
|
||||
exit $OK
|
||||
;;
|
||||
esac
|
||||
|
||||
48
check_service.sh/nagios-plugins-check_service.spec
Normal file
48
check_service.sh/nagios-plugins-check_service.spec
Normal file
@@ -0,0 +1,48 @@
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: A Nagios plugin to check services on Linux servers
|
||||
Name: nagios-plugins-check_service
|
||||
Version: 0
|
||||
Release: 1%{?dist}
|
||||
License: GPLv2+
|
||||
Group: Applications/System
|
||||
URL: https://github.com/jonschipp/nagios-plugins/blob/master/check_service.sh
|
||||
Source0: http://opensource.ok.is/trac/browser/nagios-plugins/check_service/releases/nagios-plugins-check_service-%{version}.tar.gz
|
||||
Requires: nrpe
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
Packager: Gardar Thorsteinsson <gardar@ok.is>
|
||||
BuildArch: noarch
|
||||
|
||||
%description
|
||||
Check status of system services for Linux, FreeBSD, OSX, and AIX.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
perl -pi -e "s|/usr/lib/|%{_libdir}/|g" nrpe.d/check_service.cfg
|
||||
perl -pi -e "s|/usr/lib64/|%{_libdir}/|g" nrpe.d/check_service.cfg
|
||||
|
||||
%build
|
||||
|
||||
|
||||
%install
|
||||
rm -rf %{buildroot}
|
||||
install -D -p -m 0755 check_service.sh %{buildroot}%{_libdir}/nagios/plugins/check_service.sh
|
||||
install -D -p -m 0755 nrpe.d/check_service.cfg %{buildroot}/etc/nrpe.d/check_service.cfg
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%post
|
||||
/sbin/service nrpe reload
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
#%doc README LICENSE
|
||||
%{_libdir}/nagios/plugins/*
|
||||
/etc/nrpe.d/check_service.cfg
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Apr 21 2020 <gardar@ok.is> 0.1-1
|
||||
- Initial packaging
|
||||
|
||||
1
check_service.sh/nrpe.d/check_service.cfg
Normal file
1
check_service.sh/nrpe.d/check_service.cfg
Normal file
@@ -0,0 +1 @@
|
||||
command[check_service]=/usr/lib/nagios/plugins/check_service.sh
|
||||
63
check_snmp/check_snmp_cpfw.pl
Normal file → Executable file
63
check_snmp/check_snmp_cpfw.pl
Normal file → Executable file
@@ -5,6 +5,9 @@
|
||||
# Author : Patrick Proy (patrick at proy.org)
|
||||
# Help : http://nagios.manubulon.com
|
||||
# Licence : GPL - http://www.fsf.org/licenses/gpl.txt
|
||||
# Patch 1.2.1c
|
||||
# Author : monitoreo.osi@uchile.cl
|
||||
# Desc: warn/crit threshold to conns/seg check
|
||||
# TODO :
|
||||
# - check sync method
|
||||
#################################################################
|
||||
@@ -19,6 +22,7 @@ use Getopt::Long;
|
||||
# Nagios specific
|
||||
|
||||
use lib "/usr/local/nagios/libexec";
|
||||
#use lib "/usr/lib/nagios/plugins"; # use in ubugtu
|
||||
use utils qw(%ERRORS $TIMEOUT);
|
||||
#my $TIMEOUT = 15;
|
||||
#my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
|
||||
@@ -26,11 +30,12 @@ use utils qw(%ERRORS $TIMEOUT);
|
||||
########### SNMP Datas ###########
|
||||
|
||||
###### FW data
|
||||
my $policy_state = "1.3.6.1.4.1.2620.1.1.1.0"; # "Installed"
|
||||
my $policy_state = "1.3.6.1.4.1.2620.1.1.1.0"; # Installed
|
||||
my $policy_name = "1.3.6.1.4.1.2620.1.1.2.0"; # Installed policy name
|
||||
my $connections = "1.3.6.1.4.1.2620.1.1.25.3.0"; # number of connections
|
||||
#my $connections_peak = "1.3.6.1.4.1.2620.1.1.25.4.0"; # peak number of connections
|
||||
my @fw_checks = ($policy_state,$policy_name,$connections);
|
||||
my $connections = "1.3.6.1.4.1.2620.1.1.25.3.0"; # Number of connections
|
||||
my $connectionsSR = "1.3.6.1.4.1.2620.1.1.26.11.6.0" ; # FwConnectionsStatConnectionRate aka connx/seg
|
||||
my $connectionsPeak = "1.3.6.1.4.1.2620.1.1.25.4.0"; # Peak number of connections
|
||||
my @fw_checks = ($policy_state,$policy_name,$connections,$connectionsSR,$connectionsPeak);
|
||||
|
||||
###### SVN data
|
||||
my $svn_status = "1.3.6.1.4.1.2620.1.6.102.0"; # "OK" svn status
|
||||
@@ -42,8 +47,8 @@ my @svn_checks_oid = ($svn_status);
|
||||
|
||||
my $ha_active = "1.3.6.1.4.1.2620.1.5.5.0"; # "yes"
|
||||
my $ha_state = "1.3.6.1.4.1.2620.1.5.6.0"; # "active" / "standby"
|
||||
my $ha_block_state = "1.3.6.1.4.1.2620.1.5.7.0"; #"OK" : ha blocking state
|
||||
my $ha_status = "1.3.6.1.4.1.2620.1.5.102.0"; # "OK" : ha status
|
||||
my $ha_block_state = "1.3.6.1.4.1.2620.1.5.7.0"; # "OK" : ha blocking state
|
||||
|
||||
my %ha_checks =( $ha_active,"yes",$ha_state,"active",$ha_block_state,"OK",$ha_status,"OK");
|
||||
my %ha_checks_stand =( $ha_active,"yes",$ha_state,"standby",$ha_block_state,"OK",$ha_status,"OK");
|
||||
@@ -51,7 +56,6 @@ my %ha_checks_n =( $ha_active,"HA active",$ha_state,"HA state",$ha_block_state,
|
||||
my @ha_checks_oid =( $ha_active,$ha_state,$ha_block_state,$ha_status);
|
||||
|
||||
my $ha_mode = "1.3.6.1.4.1.2620.1.5.11.0"; # "Sync only"/"High Availability (Active Up)" : ha Working mode
|
||||
|
||||
my $ha_tables = "1.3.6.1.4.1.2620.1.5.13.1"; # ha status table
|
||||
my $ha_tables_index = ".1";
|
||||
my $ha_tables_name = ".2";
|
||||
@@ -73,7 +77,7 @@ my @mgmt_checks_oid = ($mgmt_status,$mgmt_alive);
|
||||
|
||||
#################################### Globals ##############################""
|
||||
|
||||
my $Version='1.2.1';
|
||||
my $Version='1.2.1b';
|
||||
|
||||
my $o_host = undef; # hostname
|
||||
my $o_community = undef; # community
|
||||
@@ -85,12 +89,15 @@ my $o_version= undef; # print version
|
||||
my $o_timeout= 5; # Default 5s Timeout
|
||||
my $o_warn= undef; # Warning for connections
|
||||
my $o_crit= undef; # Crit for connections
|
||||
my $o_warnSR= undef; # Warning for connectionsSR
|
||||
my $o_critSR= undef; # Crit for connectionsSR
|
||||
my $o_svn= undef; # Check for SVN status
|
||||
my $o_fw= undef; # Check for FW status
|
||||
my $o_ha= undef; # Check for HA status
|
||||
my $o_mgmt= undef; # Check for management status
|
||||
my $o_policy= undef; # Check for policy name
|
||||
my $o_conn= undef; # Check for connexions
|
||||
my $o_connSR= undef; # Check for connexionsSR
|
||||
my $o_perf= undef; # Performance data output
|
||||
|
||||
# SNMPv3 specific
|
||||
@@ -106,7 +113,7 @@ my $o_privpass= undef; # priv password
|
||||
sub p_version { print "check_snmp_cpfw version : $Version\n"; }
|
||||
|
||||
sub print_usage {
|
||||
print "Usage: $0 [-v] -H <host> -C <snmp_community> [-2] | (-l login -x passwd [-X pass -L <authp>,<privp>]) [-s] [-w [-p=pol_name] [-c=warn,crit]] [-m] [-a [standby] ] [-f] [-p <port>] [-t <timeout>] [-V]\n";
|
||||
print "Usage: $0 [-v] -H <host> -C <snmp_community> [-2] | (-l login -x passwd [-X pass -L <authp>,<privp>]) [-s] [-w [-p=pol_name] [-c=warn,crit]] [-r=warn,crit]] [-m] [-a [standby] ] [-f] [-p <port>] [-t <timeout>] [-V]\n";
|
||||
}
|
||||
|
||||
sub isnnum { # Return true if arg is not a number
|
||||
@@ -117,7 +124,7 @@ sub isnnum { # Return true if arg is not a number
|
||||
|
||||
sub help {
|
||||
print "\nSNMP Checkpoint FW-1 Monitor for Nagios version ",$Version,"\n";
|
||||
print "GPL Licence, (c)2004-2007 - Patrick Proy\n\n";
|
||||
print "GPL Licence, (c)2004-2020 - Patrick Proy\n\n";
|
||||
print_usage();
|
||||
print <<EOT;
|
||||
-v, --verbose
|
||||
@@ -157,6 +164,8 @@ sub help {
|
||||
SNMP port (Default 161)
|
||||
-t, --timeout=INTEGER
|
||||
timeout for SNMP (Default: Nagios default)
|
||||
-r, --connexionsSR=WARN,CRIT
|
||||
check warn and critical number of connexionsSR (must have -w)
|
||||
-V, --version
|
||||
prints version number
|
||||
EOT
|
||||
@@ -186,6 +195,7 @@ sub check_options {
|
||||
'm' => \$o_mgmt, 'mgmt' => \$o_mgmt,
|
||||
'p:s' => \$o_policy, 'policy:s' => \$o_policy,
|
||||
'c:s' => \$o_conn, 'connexions:s' => \$o_conn,
|
||||
'r:s' => \$o_connSR, 'rate:s' => \$o_connSR,
|
||||
'f' => \$o_perf, 'perfparse' => \$o_perf
|
||||
);
|
||||
if (defined ($o_help) ) { help(); exit $ERRORS{"UNKNOWN"}};
|
||||
@@ -218,6 +228,18 @@ sub check_options {
|
||||
if ($o_warn >= $o_crit)
|
||||
{ print "warning <= critical ! \n";print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||
}
|
||||
if ( defined($o_connSR)) {
|
||||
if ( ! defined($o_fw))
|
||||
{ print "Cannot check connexionsSR without checking fw\n"; print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||
my @warncritSR=split(/,/ , $o_connSR);
|
||||
if ( $#warncritSR != 1 )
|
||||
{ print "Put warn,crit levels with -c option\n";print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||
($o_warnSR,$o_critSR)=@warncritSR;
|
||||
if ( isnnum($o_warnSR) || isnnum($o_critSR) )
|
||||
{ print "Numeric values for warning and critical in -r options\n";print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||
if ($o_warnSR >= $o_critSR)
|
||||
{ print "warning <= critical ! \n";print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||
}
|
||||
if ( defined($o_policy)) {
|
||||
if (! defined($o_fw))
|
||||
{ print "Cannot check policy name without checking fw\n"; print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||
@@ -230,7 +252,6 @@ sub check_options {
|
||||
{ print "Must select a product to check !\n";print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||
if (defined ($o_ha) && ($o_ha ne "") && ($o_ha ne "standby"))
|
||||
{ print "-a option comes with 'standby' or nothing !\n";print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||
|
||||
}
|
||||
|
||||
########## MAIN #######
|
||||
@@ -380,6 +401,8 @@ if (defined ($o_mgmt)) {
|
||||
my $fw_state=0;
|
||||
my $fw_print="";
|
||||
my $perf_conn=undef;
|
||||
my $perf_connSR=undef;
|
||||
my $perf_connPeak=undef;
|
||||
|
||||
if (defined ($o_fw)) {
|
||||
|
||||
@@ -392,6 +415,8 @@ if (defined ($o_fw)) {
|
||||
verb("State : $$resultat{$policy_state}");
|
||||
verb("Name : $$resultat{$policy_name}");
|
||||
verb("connections : $$resultat{$connections}");
|
||||
verb("connectionsSR : $$resultat{$connectionsSR}");
|
||||
verb("connectionsPeak : $$resultat{$connectionsPeak}");
|
||||
|
||||
if ($$resultat{$policy_state} ne "Installed") {
|
||||
$fw_state=2;
|
||||
@@ -417,6 +442,22 @@ if (defined ($o_fw)) {
|
||||
}
|
||||
}
|
||||
$perf_conn=$$resultat{$connections};
|
||||
$perf_connSR=$$resultat{$connectionsSR};
|
||||
$perf_connPeak=$$resultat{$connectionsPeak};
|
||||
}
|
||||
if (defined($o_connSR)) {
|
||||
if ($$resultat{$connectionsSR} > $o_critSR) {
|
||||
$fw_state=3;
|
||||
$fw_print .= "Conn/seg : ".$$resultat{$connectionsSR}." > ".$o_critSR." ";
|
||||
} else {
|
||||
if ($$resultat{$connectionsSR} > $o_warnSR) {
|
||||
if ($fw_state!=3) {$fw_state=1;}
|
||||
$fw_print .= "Conn/seg : ".$$resultat{$connectionsSR}." > ".$o_warnSR." ";
|
||||
}
|
||||
}
|
||||
$perf_conn=$$resultat{$connections};
|
||||
$perf_connSR=$$resultat{$connectionsSR};
|
||||
$perf_connPeak=$$resultat{$connectionsPeak};
|
||||
}
|
||||
} else {
|
||||
$fw_print .= "cannot find oids";
|
||||
@@ -548,6 +589,8 @@ if (($ha_state_n+$svn_state+$fw_state+$mgmt_state) == 0 ) {
|
||||
|
||||
if (defined($o_perf) && defined ($perf_conn)) {
|
||||
$f_print .= " | fw_connexions=" . $perf_conn;
|
||||
$f_print .= " | fw_connexionsSR=" . $perf_connSR;
|
||||
$f_print .= " | fw_connexionsPeak=" . $perf_connPeak;
|
||||
}
|
||||
|
||||
print "$f_print\n";
|
||||
|
||||
15
check_xroad_token/check_xroad_token.sh
Normal file
15
check_xroad_token/check_xroad_token.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
xroad_list_tokens=$(signer-console list-tokens)
|
||||
|
||||
if [[ $xroad_list_tokens == "Token: 0 (OK, writable, available, active)" ]]
|
||||
then
|
||||
echo "OK - $xroad_list_tokens"
|
||||
exit 0
|
||||
elif [[ $xroad_list_tokens != "Token: 0 (OK, writable, available, active)" ]]
|
||||
then
|
||||
echo "Critical - $xroad_list_tokens"
|
||||
exit 2
|
||||
else
|
||||
echo "Unknown - $xroad_list_tokens"
|
||||
exit 3
|
||||
fi
|
||||
52
check_xroad_token/nagios-okplugin-check_xroad_token.spec
Normal file
52
check_xroad_token/nagios-okplugin-check_xroad_token.spec
Normal file
@@ -0,0 +1,52 @@
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: A Nagios plugin to check status of XROAD soft-token
|
||||
Name: nagios-okplugin-check_xroad_token
|
||||
Version: 1.2
|
||||
Release: 1%{?dist}
|
||||
License: GPLv2+
|
||||
Group: Applications/System
|
||||
URL: https://github.com/opinkerfi/nagios-plugins/issues
|
||||
Source0: http://opensource.ok.is/trac/browser/nagios-plugins/check_xroad_token/releases/nagios-okplugin-check_xroad_token-%{version}.tar.gz
|
||||
Requires: nagios-nrpe
|
||||
Requires: xroad-signer
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
Packager: Gardar Thorsteinsson <gardar@ok.is>
|
||||
|
||||
|
||||
%description
|
||||
A Nagios plugin to check status of XROAD soft-token
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
#perl -pi -e "s|/usr/lib64|%{_libdir}|g" nrpe.d/check_xroad_token.cfg
|
||||
|
||||
%build
|
||||
|
||||
|
||||
%install
|
||||
rm -rf %{buildroot}
|
||||
install -D -p -m 0755 check_xroad_token.sh %{buildroot}%{_libdir}/nagios/plugins/check_xroad_token.sh
|
||||
install -D -p -m 0755 nrpe.d/check_xroad_token.cfg %{buildroot}/etc/nrpe.d/check_xroad_token.cfg
|
||||
install -D -p -m 0644 sudoers.d/check_xroad_token %{buildroot}/etc/sudoers.d/check_xroad_token
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
#%doc README LICENSE
|
||||
%{_libdir}/nagios/plugins/*
|
||||
/etc/nrpe.d/check_xroad_token.cfg
|
||||
/etc/sudoers.d/check_xroad_token
|
||||
|
||||
%post
|
||||
restorecon -v %{_libdir}/nagios/plugins/check_xroad_token.sh /etc/nrpe.d/check_xroad_token.cfg /etc/sudoers.d/check_xroad_token
|
||||
|
||||
%changelog
|
||||
* Mon Sep 14 2020 Your Name <you@example.com> 1.2-1
|
||||
- new package built with tito
|
||||
|
||||
* Fri Sep 11 2020 Gardar Thorsteinsson <gardart@gmail.com> 1.0.1-1
|
||||
- Initial packaging
|
||||
2
check_xroad_token/nrpe.d/check_xroad_token.cfg
Normal file
2
check_xroad_token/nrpe.d/check_xroad_token.cfg
Normal file
@@ -0,0 +1,2 @@
|
||||
# xroad plugin to check for tokens
|
||||
command[check_xroad_token]=sudo -u xroad /usr/lib64/nagios/plugins/check_xroad_token.sh
|
||||
9
check_xroad_token/readme.md
Normal file
9
check_xroad_token/readme.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Required steps to use this check
|
||||
|
||||
```shell
|
||||
# On RHEL/Centos
|
||||
sudo semanage permissive -a nrpe_t
|
||||
sudo setsebool -P nagios_run_sudo 1
|
||||
sudo yum install nagios-okplugin-check_xroad_token -y
|
||||
sudo systemctl restart nrpe
|
||||
```
|
||||
2
check_xroad_token/sudoers.d/check_xroad_token
Normal file
2
check_xroad_token/sudoers.d/check_xroad_token
Normal file
@@ -0,0 +1,2 @@
|
||||
Defaults:nrpe !requiretty
|
||||
nrpe ALL = (xroad) NOPASSWD: /usr/bin/signer-console list-tokens, /usr/lib64/nagios/plugins/check_xroad_token.sh
|
||||
1
rel-eng/packages/nagios-okplugin-check_xroad_token
Normal file
1
rel-eng/packages/nagios-okplugin-check_xroad_token
Normal file
@@ -0,0 +1 @@
|
||||
1.2-1 check_xroad_token/
|
||||
@@ -3,6 +3,7 @@
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-7-x86_64
|
||||
srpm_disttag = .el7
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel7/x86_64/
|
||||
|
||||
# RHEL 7 Test
|
||||
@@ -10,6 +11,7 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel7/x86_64/
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-7-x86_64
|
||||
srpm_disttag = .el7
|
||||
builder.test = 1
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel7/x86_64/
|
||||
|
||||
@@ -19,12 +21,14 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel7/x8
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-6-x86_64
|
||||
srpm_disttag = .el6
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel6/x86_64/
|
||||
|
||||
[production-el6-i386]
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-6-i386
|
||||
srpm_disttag = .el6
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel6/i386/
|
||||
|
||||
|
||||
@@ -34,6 +38,7 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel6/i386/
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-5-x86_64
|
||||
srpm_disttag = .el5
|
||||
createrepo_command = createrepo -s sha1 .
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel5/x86_64/
|
||||
|
||||
@@ -42,6 +47,7 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel5/x86_64/
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-5-i386
|
||||
srpm_disttag = .el5
|
||||
createrepo_command = createrepo -s sha1 .
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel5/i386/
|
||||
|
||||
@@ -50,6 +56,7 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel5/i386/
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-6-x86_64
|
||||
srpm_disttag = .el6
|
||||
builder.test = 1
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel6/x86_64/
|
||||
|
||||
@@ -58,6 +65,7 @@ releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-6-i386
|
||||
builder.test = 1
|
||||
srpm_disttag = .el6
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel6/i386/
|
||||
|
||||
|
||||
@@ -66,6 +74,7 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel6/i3
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-5-x86_64
|
||||
srpm_disttag = .el5
|
||||
builder.test = 1
|
||||
createrepo_command = createrepo -s sha1 .
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel5/x86_64/
|
||||
@@ -75,6 +84,7 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel5/x8
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = epel-5-i386
|
||||
srpm_disttag = .el5
|
||||
builder.test = 1
|
||||
createrepo_command = createrepo -s sha1 .
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel5/i386/
|
||||
@@ -86,6 +96,7 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel5/i3
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = fedora-20-x86_64
|
||||
srpm_disttag = .fc20
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/fedora20/x86_64/
|
||||
|
||||
# Fedora FC20
|
||||
@@ -93,6 +104,7 @@ rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/fedora20/x86_64/
|
||||
releaser = tito.release.YumRepoReleaser
|
||||
builder = tito.builder.MockBuilder
|
||||
builder.mock = fedora-20-x86_64
|
||||
srpm_disttag = .fc20
|
||||
builder.test = 1
|
||||
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/fedora20/x86_64/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user