Table of Contents
Check EOL
Script: check_eol
check_eol is a plugin for Icinga/ Nagios. It detects the end of life of an OS or a product.
You get a status “ok”, “warning” or “critical” based on the limits.
The status is “unknown” if a product or the eol date was not detected.
It is customizable / extendable to detect other products that are not included in the delivered basic config.
Standalone installation
From this repository ypu need next to this script:
-
inc_pluginfunctions
shared function for all IML checks written in bash -
./check_eol-data/*
end of life data for several products -
./check_eol-versiondetect/*
scripts to detect a version per product
Syntax
./check_eol
______________________________________________________________________
CHECK EOL :: v1.5
(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3
______________________________________________________________________
Check and of support of an OS or a product.
The dates are defined in the files check_eol-*.cfg
For detailed information see docs/20_Checks/check_eol.md
USAGE
$ check_eol [-c CRITICAL] [-w WARING] PRODUCT VERSION
PARAMETERS
PRODUCT set a product; known product keys are listed below
centos
debian
mariadb
mysql
node
php
postgres
ruby
ubuntu
VERSION set a version.
Autodetection:
There is a special handling vor version "detect".
You can set "os" as product to detect the (linux) distribution.
See examples below.
OPTIONS
-c set critical limit; default 90
-w set warning limit; default 365
EXAMPLES
check_eol php 8.1
check_eol -w 100 -c 30 php 8.1
check_eol os detect
check_eol php detect
Parameters
PRODUCT set a product; known product keys are listed below VERSION set a version.
Autodetection: There is a special handling vor version “detect”. You can set “os” as product to detect the (linux) distribution. See examples below.
Options
-c set critical limit; default 90 -w set warning limit; default 365
Examples
check_eol php 7.4
Show end of life for given php version 7.4
check_eol -w 100 -c 30 php 7.4
Add custom critical and warning limits
check_eol os detect
Show end of life for current linux os. The distribution and the major version will be detected.
check_eol php detect
Show the end of life for the detected php version
Extend/ customize
The check is build to be customizable. You can add
- add your own end of life dates
- write a version detection for other products
The related files are in 2 subdirectories with check_eol prefix:
> ls -1 check_eol-data/ check_eol-versiondetect/
check_eol-data/:
databases.cfg
os.cfg
program-languages.cfg
check_eol-versiondetect/:
autodetect-mysqlany*
autodetect-os*
detect-mariadb*
detect-mysql*
detect-node*
detect-php*
detect-postgres*
detect-ruby*
End of life dates
The dates are defined in the files check_eol-.cfg*. Those contain lines with parsed information that must start at the begin of line:
-
[Key]:[version]:[Date as YYYY-MM-DD]:[COMMENT]
- Key: name of the product in lowercase, i.e. “php”, “centos”
- Version: version number, i.e. a major version i.e. “12” for Node or “7.4” for PHP
- Date as YYYY-MM-DD
- Comment: this is optional
-
[Key]:METADATA for a product (can be multiline)
- This type is completely optional. You can use it to show general (version indepenendent) product infos. It will be shown as additional text for each version of a product
Al other lines, like empty lines, lines starting with special characters are ignored. I use the hash to mark comments.
Snippet:
# --------------------------------------------
centos:The CentOS Project
centos:website https://www.centos.org/
# --------------------------------------------
centos:6:2020-11-30
centos:7:2024-06-30
centos:8:2029-05-31
Example output:
$ check_eol centos 7
OK [centos 7] ends on 2024-06-30 ... 1586 days left
The CentOS Project
website https://www.centos.org/
Limit Info: warn below 365 days; critical below 90 days
Files
- check_eol-data/os.cfg - contains eol dates for debian, centos, ubuntu
- check_eol-data/check_eol-databases.cfg - Mariadb, PostgreSql
- check_eol-data/check_eol-program-languages.cfg - Php, NodeJS
You can add your custom products and dates - it just must match check_eol-.cfg*. You should use a custom file name that does not conflict with delivered files.
Suggestion: check_eol-data/custom-[my category].cfg
Version detection
If you use check_eol [product] [version]
with an already known version in your monitoring check then the search for an eol date is done directly in the *cfg files (see above).
If you wan to let detect the version use the keyword detect next to a product i.e. check_eol php detect
.
What happens is is uses a detection for the version number. Therefor it calls a script named check_eol-versiondetect/detect-[PRODUCT] - in our example for php ist is check_eol-versiondetect/detect-php.
The scripts check_eol-versiondetect/detect-[PRODUCT] must return just a major version - or major and minor version without any other text.
You can add your own scripts for other non existing products. The only rule is: it must output the version only. Your [PRODUCT] and the returned version will be scanned in check_eol-.cfg* to perform the eol check.