## check EOL ### Introduction **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. ### Syntax ```txt ./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: ```txt # -------------------------------------------- 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: ```txt $ 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.