Icinga / Nagios Plugins

GraphDash Module for Icinga 2

This Icingaweb2 module adds a new host Graph Dashboard to the Icinga Web GUI that puts together the most important performance graphs on a single page. This allows for quick visual health checks of a host without the need to click through numerous pnp graphs. The selection and order of graphs to be shown are freely configurable via Web GUI. Each class of devices (servers, routers, ...) can have a it's own set of graphs that are inherited and may be overriden at any level. Released under MIT Open Source License.

Installation: Create a subdirectory ../icingaweb2/modules/graphdash and extract the contents there. Then enable GraphDash in the module configuration of the Icinga GUI.

1.12.2017: After upgrading to Icinga 2.8 there have been reports of GraphDash failing with not showing any graphs. This can be resolved permanently by upgrading to the latest GIT Master versions of Icingaweb2 and Director and re-reploying all objects once.

Download GEOTEK GraphDash V.1.0

PNP Default Template for Icinga 2

This is an enhanced Default Template for pnp4nagios and IcingaWeb2 that completely replaces the rather basic default template that comes with pnp4nagios. This template was made because because I was fed up from insane measurement units such as 10mGB or 10Mms, the unappealing, oldfashioned and inconsistent graph colors and the amount of time it took to apply and manage changes across numerous templates in order to keep them consistent. While it seems impossible to solve all rrdgraphe issues completely, it is believed to be an improvement and should work sufficiently with most Nagios Check Commands out of the box.


  • Modern looking graphs that matches the Icingaweb2 color scheme
  • Global graph attributes can be very easily changed
  • Avoids display of weird Units such as 2222.5mGB or 0.10kms (well, at least mostly)
  • Makes all graps show consistent measurement units so that througput is always shown in GB/s for example, no matter if scripts exports RRD data in KB/s, B/s or any other UOM
  • Allow graphs to be shown in such a way, that it is immediately apparent from the overwiew window if something is wrong or not (hostalive4 for example)
  • Correct or add UOMs (Units of measurement, such as MB) for checks with broken or missing UOM in performance data
  • Change the name of unclear graph data to something more comprehensible, possibly in your native language
  • Change behaviour of specific graphs without the need to create and manage multiple templates
  • All changes for specific graphs are easily managed in one place (this file)
  • Modifications may be done based either on the Icinga2 Service Name or on the Check Command Name. In contrast, the pnpnagios
  • template system allows to use only the Check Command Name
  • Easily reorder graphs, so that the most important graph is shown first and displayed in the Icingaweb2 overview page
  • Easily suppress graphs that need not be shown
  • Allows to add comments to a graph
  • Combine multiple data points into graphs, freely override graph style (line / area / gradient) and color

Download GEOTEK Default Template V.1.1.1
Download GEOTEK Default Template V.1.2


Perl script for Icinga / Nagios to monitor temperature, disk and SMART status of all hard disks in QNAP NAS boxes via SNMP. Disk temperatures are returned as performance data. Should work on most (if not any) QNAP boxes that support SNMP. Based on Michael Geigers check_qnap_hdd with some bugfixes and improvements:

  • Corrected Perl Dependencies
  • Allows to specify SNMP community via -C parameter
  • Improved SMART Notification: SMART Status "Normal" is misleading as it indicates a predictive failure warning. The script returns a "Warning" condition instead of "Critical" in this case
  • Vertical alignment of visual HDD status looks nicer
  • Add support for newer Qnap models - e.g. TS-879 Pro
  • Don't get confused by emty drive slots (previous version returned UNKNOWN result)

Download check_qnap_hdd V.1.2


Perl script for Icinga / Nagios to monitor logical volume status on QNAP NAS boxes via SNMP. Returns used space of all volumes as performance data and allows setting usage percentage limits. Based on Michael Geigers check_qnap_volumes with changed behavior, bug fixes and improvements:

  • Corrected Perl Dependencies
  • Allows to specify SNMP community via -C parameter
  • Changed behavior: Performance data now shows the used space versus total space which is more intuitive
  • Changed behavior: Changed behavior: Warning and critical levels are now referring to used percentage instead of free percentage
  • Renamed to check_qnap_vol due to changed behavior
  • Removed "QNAP" from output. Shortens line and possibly allows to use with other NAS makes (if they use the NAS MIB)
  • Made output more informative like so:
    "Volumes OK - [Mirror Disk Volume: Drive 1 2]: 331GB (84%) of 393GB used, 62GB free"
  • Putting each volume on a new line makes output more readable with multiple volumes
  • Handle zero volume sizes correctly (caused div by zero error before) and give hint to possible assignment as iSCSI target

Download check_qnap_vol V.1.3


Icinga / Nagios check Plugin to test FTP speed by writing and reading a test file and measuring the time taken. Performance Data is supplied for Read and Write Speed in MBytes/s. Warning and Critical limits can be set for Write Speed. Test file size can be specified in order to adjust the tradeoff between network load and test accuracy. Instead of reading the written test file immediately after writing (which would give inaccurate results due to disk cashing) we are always reading the file written during the previous test interval. This is not intended as an accurate speed test but allows to judge performance variations over time and set performance limits for backup space repositories that must have a minimum throughput in order to allow backup jobs to finish in a given time window.


check_ftp_speed.php -H <host> -u <username> -p <password> -f <test file path> -s <test file size (kBytes)> -w <warning (Write MBytes/s)> -c <critical (Write MBytes/s)>

Download: check_ftp_speed V.1.0

Icinga2 on OpenSuse Leap 42.3

Icinga2 may show erratic behaviour including spurious false alerts and failing checks when running on OpenSuse Leap 42.2 or 42.3. Some checks show error messages similar to:

   Exception occured while checking '<host>': Error: Function call 'fork' failed with error code 11, 'Resource temporarily unavailable'

This error message usually indicates a shortage on memory or process resources but increasing ulimit values in /etc/security/limits.conf will not help. Reason for this behaviour is the new systemd attribute taskmax that has been added to Linux kernel 4.3 (Leap 42.2 uses Kernel 4.4). It limits the maximum number of tasks to 512 on all units. Depending on the total number of hosts and services that Icinga2 is checking, this task limit can cause Icinga2 to fail, especially under heavy load or shortly after start. You can view the effective limits with the command:

  systemctl status icinga2 | grep Tasks

The solution is simple: Edit file /etc/systemd/system/multi-user.target.wants/icinga2.service and add under [Service] section:


Execute systemctl daemon-reload and restart Icinga2 to activate the new setting.