Table of Contents
Check_requirements
Script: check_requirements
check_requirements is a plugin to run different check to show the ability to run an application. You can these checks
- Check if a process exists
- Check an open udp or tcp port (local or on given host/ ip)
- Ping a target system (new in v1.3)
You can insert a label to create multiple blocks.
Requirements
- Linux GNU tools
-
ps
-
top
-
ping
-
Standalone installation
From this repository you need next to this script:
-
inc_pluginfunctions
shared function for all IML checks written in bash
Syntax
______________________________________________________________________
CHECK_REQUIREMENTS
v1.4
(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3
https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_requirements.html
______________________________________________________________________
Check if a list requirements regarding processes and network
connections do exist.
The check returns OK if all given requirements match.
SYNTAX:
check_requirements [-h] [PARAMETERS]
OPTIONS:
-h|--help show this help.
-v|--verbose show more data: processes and port numbers from
/etc/services; add it as first param
PARAMETERS:
-c|--connect TYPE TARGET PORT
check if connect to a server to a given port
is reachable
TYPE string one of tcp|udp
TARGET string target host
PORT int port number
-i|--ping TARGET ping a target system
-l|--label STRING add label to divide the output in multiple sections
-p|--process STRING check if a process with given regex exists in the
output of 'ps aux'
-t|--tcp PORT check if connect on local tcp port is reachable;
This is a shortcut for '-c tcp localhost PORT'
The parameters can be repeated multiple times. Checks will be executed in
the given order.
EXAMPLES
check_requirements -p httpd -p mysqld -t 22 -t 80 -t 443 -t 3306
Check if
- a process httpd and a process mysqld exist
- localhost listens to ports 22, 80, 443 and 3306
check_requirements -l "webservice" -p httpd -t 80 -t 443 -l "database" -p mysqld -t 3306
Use output with multiple sections
Parameters
(none)
Examples
3 checks
Check a locally rtunning webservice as process and 2 ports: check_requirements -p nginx -t 443 -t 80
OK: 3 Requirement checks - errors: 0
STATUS TYPE RESULT
OK process nginx (2 x)
OK connection tcp to localhost on port 443
OK connection tcp to localhost on port 80
Verbose mode
The verbose mode can be activated with -v
. The checks are execeuted parameter by parameter. The debug begins where you add -v
- so the best option is to add it at the beginning.
This is the same list of checks again that you can compare both outputs: check_requirements -v -p nginx -t 443 -t 80
OK: 3 Requirement checks - errors: 0
STATUS TYPE RESULT
OK process nginx (2 x)
> root 1211 0.0 0.0 16468 3436 ? Ss 13:34 0:00 nginx: master process /usr/bin/nginx
> http 1212 0.0 0.0 16476 5188 ? S 13:34 0:00 nginx: worker process
OK connection tcp to localhost on port 443
> https 443/tcp
OK connection tcp to localhost on port 80
> http 80/tcp
> www 80/tcp
> www-http 80/tcp
Labels
The -l <TEXT>
parameter adds a label. With it you can visually group some checks.
When executing this: /check_requirements -l "webservice" -p nginx -t 443 -t 80 -l "network" -c tcp www.example.com 443
then we get 2 sections with a table of executed checks inside:
OK: 4 Requirement checks - errors: 0
========== webservice
STATUS TYPE RESULT
OK process nginx (2 x)
OK connection tcp to localhost on port 443
OK connection tcp to localhost on port 80
========== network
STATUS TYPE RESULT
OK connection tcp to www.example.com on port 443