Skip to content
Snippets Groups Projects
Select Git revision
  • 6627bf5a82f8c8d8cc948f1cd08456476f5d40cb
  • master default protected
  • simple-task/7248-eol-check-add-node-22
  • 6877_check_iml_deployment
4 results

check_eol.md

Blame
  • 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
    ______________________________________________________________________
    
    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.