diff --git a/docs/20_Checks/check_eol.md b/docs/20_Checks/check_eol.md new file mode 100644 index 0000000000000000000000000000000000000000..9c2173683357f7d7a970ad87bedae7d9035d0d6b --- /dev/null +++ b/docs/20_Checks/check_eol.md @@ -0,0 +1,174 @@ +## 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: + + # -------------------------------------------- + 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. diff --git a/docs/config.json b/docs/config.json index 6b291ff32f0459c84d495a5b57703ae3774a70c5..ba82dcfb17750957f69ada1a8f3b1daac5358c1e 100644 --- a/docs/config.json +++ b/docs/config.json @@ -3,7 +3,7 @@ "author": "Axel Hahn", "tagline": "Icinga checks written in Bash", "ignore": { - "files": ["20_Checks/zz_template_check_.md"], + "files": ["zz_template_check_.md"], "folders": ["99_Not_Ready"] }, "html": {