Check icinga-topflap-services¶
Overview¶
Detects fast-flapping Icinga services by counting state changes per service within a configurable lookback interval. Queries the Icinga DB event history and alerts when any service exceeds the configured number of state changes.
Important Notes:
- Requires Icinga DB with the Icinga Web 2 module
- The Icinga Web 2 user needs at least the "icingadb > General Module Access" permission
-
Instead of specifying URL, username and password on the command line, you can create and specify an INI file:
text [icingaweb2] url = http://localhost/icingaweb2/icingadb/history?limit=250 username = alice password = linuxfabrik
Data Collection:
- Fetches data from the Icinga DB event history via the Icinga Web 2 REST API using HTTP Basic authentication
- Groups events by host and service, then counts state changes per service within the lookback window
- Uses a temporary SQLite database to store and aggregate event data per check run (dropped and recreated each run)
- Credentials can be provided via command-line parameters or a password INI file (command-line takes precedence)
Fact Sheet¶
| Fact | Value |
|---|---|
| Check Plugin Download | https://github.com/Linuxfabrik/monitoring-plugins/tree/main/check-plugins/icinga-topflap-services |
| Nagios/Icinga Check Name | check_icinga_topflap_services |
| Check Interval Recommendation | Every 5 minutes |
| Can be called without parameters | Yes (if --pwfile exists at the default path) |
| Runs on | Cross-platform |
| Compiled for Windows | No (runs with Python interpreter) |
| Requirements | Icinga DB, read access to /icingaweb2/icingadb/history |
Help¶
usage: icinga-topflap-services [-h] [-V] [--always-ok] [-c CRIT] [--insecure]
[--lookback LOOKBACK] [--no-proxy]
[--password PASSWORD] [--proxy PROXY]
[--pwfile PWFILE] [--timeout TIMEOUT]
[--url URL] [--username USERNAME] [-w WARN]
Detects fast-flapping Icinga services by counting state changes per service
within a configurable lookback interval. Queries the Icinga DB event history
and alerts when any service exceeds the configured number of state changes.
options:
-h, --help show this help message and exit
-V, --version show program's version number and exit
--always-ok Always returns OK.
-c, --critical CRIT CRIT threshold for the number of state changes per
service within the lookback period. Supports Nagios
ranges. Default: 19
--insecure This option explicitly allows insecure SSL connections.
--lookback LOOKBACK State changes are counted within this window. Time
window in seconds to look back over, ending at the
moment of the run. Only what falls within it is
counted, so what is reported is how often something
happened lately rather than a total that keeps growing
for as long as the source is kept. Example:
`--lookback=7200`. Default: 14400 (seconds)
--no-proxy Do not use a proxy, not even one the environment names.
Overrides `--proxy`.
--password PASSWORD Icinga Web 2 password. Takes precedence over the value
in `--pwfile`.
--proxy PROXY Proxy to reach the target through. The scheme defaults
to `http` when omitted. Overrides the proxy the
environment names (`http_proxy`, `https_proxy`,
`all_proxy`) together with the exceptions it lists in
`no_proxy`, and is itself overridden by `--no-proxy`.
Without either parameter the environment applies.
Credentials belong into the environment variable rather
than here, because a command-line argument is visible
to every user on the host. Example:
`--proxy=http://proxy.example.com:3128`.
--pwfile PWFILE Path to a password file containing "url", "user" and
"password" for Icinga Web 2. Example: `--pwfile
/var/spool/icinga2/.icingaweb`. Default:
/var/spool/icinga2/.icingaweb
--timeout TIMEOUT Network timeout in seconds. Default: 8 (seconds)
--url URL Icinga DB event history URL including filter
parameters. Takes precedence over the value in
`--pwfile`. Example: `--url
https://icinga/icingaweb2/icingadb/history?limit=250`.
--username USERNAME Icinga Web 2 username. Takes precedence over the value
in `--pwfile`.
-w, --warning WARN WARN threshold for the number of state changes per
service within the lookback period. Supports Nagios
ranges. Default: 7
Documentation:
https://linuxfabrik.github.io/monitoring-plugins/check-plugins/icinga-topflap-services/
Usage Examples¶
./icinga-topflap-services \
--username=alice \
--password=linuxfabrik \
--url='https://icinga/icingaweb2/icingadb/history?limit=250' \
--lookback=86400
Output:
There are warnings. (lookback=1D warn=7 crit=19)
Host ! Service ! Cnt ! State
----------------+-------------------------+-----+-----------
srv-mon01 ! Swap Usage ! 12 ! [WARNING]
srv-analytics01 ! Load ! 10 ! [WARNING]
srv-analytics01 ! CPU Usage ! 8 ! [WARNING]
srv-vcs01 ! Swap Usage ! 6 ! [OK]
srv-cloud02 ! Apache httpd Status ! 4 ! [OK]
srv-repo01 ! Journald Usage ! 2 ! [OK]
srv-cloud01 ! Nextcloud Stats ! 2 ! [OK]
States¶
- OK if no service exceeds the warning threshold for state changes within the lookback period.
- WARN if any service has >=
--warning(default: 7) state changes. - CRIT if any service has >=
--critical(default: 19) state changes. - UNKNOWN on missing credentials, unreadable password file, or invalid command-line arguments.
--always-oksuppresses all alerts and always returns OK.
Perfdata / Metrics¶
There is no perfdata.
Credits, License¶
- Authors: Linuxfabrik GmbH, Zurich
- License: The Unlicense, see LICENSE file.