Skip to content
Snippets Groups Projects
Commit f58ead5f authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

small things

parent 24cc9b88
No related branches found
No related tags found
1 merge request!606199 checkmailq remove
# IML Checks for Icinga / Nagios
[Home](readme.md)
---
## 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
``$ check_eol [-c CRITICAL] [-w WARNING] PRODUCT VERSION``
#### 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
* version detection for other products
#### 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.
......@@ -105,7 +105,7 @@ function checkDrive(){
if [ $? -eq 0 ]; then
status=`grep -i "$sLabel" $tmpfile | cut -f 2 -d ":"`
sOut="$sOut ${status}"
echo $status | egrep -i "$sOK" >>$tmpfile
echo $status | grep -Ei "$sOK" >>$tmpfile
if [ $? -ne 0 ]; then
iErrors=$iErrors+1
ph.setStatus "critical"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment