check_spacewalk_currency

A Nagios/Icinga plugin for checking patch currency of hosts managed by Spacewalk, Red Hat Satellite 5.x or SUSE Manager

check_spacewalk_currency

check_spacewalk_currency is a Nagios / Icinga plugin for checking patch currency of hosts managed by Spacewalk, Red Hat Satellite 5.x or SUSE Manager.

The script checks the patch currency of one or multiple systems. The following information are gathered by accesing Spacewalk, Red Hat Satellite 5.x or SUSE Manager:

  • Outstanding package update counter per category:
    • critical
    • important
    • moderate
    • low
    • enhancement
    • bug fix
  • system currency score

To gather these information a valid username / password combination to your management system is required. The login credentials are prompted when running the script. To automate this you have two options:

Setting shell variables

The following shell variables are used:

  • SATELLITE_LOGIN - a username
  • SATELLITE_PASSWORD - the appropriate password

You might also want to set the HISTFILE variable (depending on your shell) to hide the command including the password in the history:

$ HISTFILE="" SATELLITE_LOGIN=mylogin SATELLITE_PASSWORD=mypass ./check_spacewalk_currency.py -S giertz.stankowic.loc

Using an authfile

A better possibility is to create a authfile with permisions 0600. Just enter the username in the first line and the password in the second line and hand the path to the script:

$ ./check_spacewalk_currency.py -a myauthfile -S giertz.stankowic.loc

Requirements

The plugin requires Python 2.6 or newer - it also requires the xmlrpclic module which is shipped with rhnlib. A minimum Spacewalk version of 1.4 is required - the script checks the API version and aborts if you are using a historic version of Spacewalk.

Usage

By default, the script checks a particular system or multiple systems for outstanding bug fixes and critical updates (combining critical, important and also moderate patch metrics). It is possible to control this behaviour by specifying additional parameters (see below). The script also support performance data for data visualization.

The following parameters can be specified:

Parameter Description
-d / --debug enable debugging outputs (default: no)
-h / --help shows help and quits
-P / --show-perfdata enables performance data (default: no)
-a / --authfile defines an auth file to use instead of shell variables
-s / --server defines the server to use (default: localhost)
-S / --system defines one or multiple system(s) to check
-A / --all-systems checks all registered systems - USE WITH CAUTION (default: no)
-t / --total-warning defines total package update warning threshold (default: empty)
-T / --total-critical defines total package update critical threshold (default: empty)
-i / --important-warning defines security package (critical, important and moderate security fixes) update warning threshold (default: 10)
-I / --important-critical defines security package (critical, important and moderate security fixes) update warning threshold (default: 20)
-b / --bugs-warning defines bug package update warning threshold (default: 25)
-B / --bugs-critical defines bug package update warning threshold (default: 50)
-y / --generic-statistics checks for inactive and outdated system statistic metrics (default :no)
-u / --outdated-warning defines outdated systems warning percentage threshold (default: 50)
-U / --outdated-critical defines outdated systems critical percentage threshold (default: 80)
-n / --inactive-warning defines inactive systems warning percentage threshold (default: 10)
-N / --inactive-critical defines inactive systems critical percentage threshold (default: 50)
--version prints programm version and quits

Examples

The following example checks a single system on the local Spacewalk server:

$ ./check_spacewalk_currency.py -S giertz.stankowic.loc
Username: admin
Password:
OK: critical updates okay (0), bug fixes okay (0) for giertz.stankowic.loc

Checking multiple systems on a remote Spacewalk server, authentication using authfile:

$ ./check_spacewalk_currency.py -s st-spacewalk02.stankowic.loc -a spacewalk.auth -S giertz.stankowic.loc -S shittyrobots.test.loc
OK: giertz.stankowic.loc critical updates okay (0)critical updates okay (0), shittyrobots.test.loc bug fixes okay (0)shittyrobots.test.loc bug fixes okay (0)

Checking a single host on a local Spacewalk installation, also checking total updates, enabling performance data:

$ ./check_spacewalk_currency.py -S giertz.stankowic.loc -t 20 -T 40 -P
Username: admin
Password:
OK: total updates okay (0), critical updates okay (0), bug fixes okay (0) for giertz.stankowic.loc | 'crit_pkgs'=0;10;20;; 'imp_pkgs'=0;10;20;; 'mod_pkgs'=0;10;20;; 'low_pkgs'=0;;;; 'enh_pkgs'=0;;;; 'bug_pkgs'=0;25;50;; 'score'=0;;;;

When specifying multiple systems along with performance data, the metric names will get prefix according to the particular host:

$ ./check_spacewalk_currency.py -S giertz.stankowic.loc -S shittyrobots.test.loc -a spacewalk.auth -P
OK: shittyrobots.test.loc critical updates okay (0)giertz.stankowic.loc critical updates okay (0), shittyrobots.test.loc bug fixes okay (0)giertz.stankowic.loc bug fixes okay (0) | 'shittyrobots.test.loc_crit_pkgs'=0;10;20;; 'shittyrobots.test.loc_imp_pkgs'=0;10;20;; 'shittyrobots.test.loc_mod_pkgs'=0;10;20;; 'shittyrobots.test.loc_low_pkgs'=0;;;; 'shittyrobots.test.loc_enh_pkgs'=0;;;; 'shittyrobots.test.loc_bug_pkgs'=0;25;50;; 'shittyrobots.test.loc_score'=0;;;;'giertz.stankowic.loc_crit_pkgs'=0;10;20;; 'giertz.stankowic.loc_imp_pkgs'=0;10;20;; 'giertz.stankowic.loc_mod_pkgs'=0;10;20;; 'giertz.stankowic.loc_low_pkgs'=0;;;; 'giertz.stankowic.loc_enh_pkgs'=0;;;; 'giertz.stankowic.loc_bug_pkgs'=0;25;50;; 'giertz.stankowic.loc_score'=0;;;;

Checking generic statistics of a Spacewalk system:

$ ./check_spacewalk_currency.py -a spacewalk.auth -y -P
OK: outdated systems okay (0), inactive systems okay (0) | 'sys_total'=9;;;; 'sys_outdated'=9;5;8;; 'sys_inact'=0;1;5;;