Skip to content

Commit

Permalink
Add python-version
Browse files Browse the repository at this point in the history
  • Loading branch information
markuslf committed Oct 27, 2023
1 parent 23c2c3f commit ef50f93
Show file tree
Hide file tree
Showing 9 changed files with 843 additions and 0 deletions.
Empty file.
96 changes: 96 additions & 0 deletions check-plugins/python-version/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
Check python-version
====================

Overview
--------

This plugin lets you track if Python is End-of-Life (EOL). To compare against the current/installed version of Python, the check has to run on the Python server itself.

This check plugin alerts n days before or after the EOL date is reached. Optionally, it can also alert on available major, minor or patch releases (each independently).


Fact Sheet
----------

.. csv-table::
:widths: 30, 70

"Check Plugin Download", "https://github.com/Linuxfabrik/monitoring-plugins/tree/main/check-plugins/python-version"
"Check Interval Recommendation", "Once a day"
"Can be called without parameters", "Yes"
"Compiled for", "Linux, Windows"
"Uses SQLite DBs", "``$TEMP/linuxfabrik-lib-version.db``"


Help
----

.. code-block:: text
usage: python-version [-h] [-V] [--always-ok] [--check-major] [--check-minor]
[--check-patch] [--offset-eol OFFSET_EOL] [--path PATH]
Tracks if Python is EOL.
options:
-h, --help show this help message and exit
-V, --version show program's version number and exit
--always-ok Always returns OK.
--check-major Alert me when there is a new major release available,
even if the current version of my product is not EOL.
Example: Notify when I run v26 (not yet EOL) and v27
is available. Default: False
--check-minor Alert me when there is a new major.minor release
available, even if the current version of my product
is not EOL. Example: Notify when I run v26.2 (not yet
EOL) and v26.3 is available. Default: False
--check-patch Alert me when there is a new major.minor.patch release
available, even if the current version of my product
is not EOL. Example: Notify when I run v26.2.7 (not
yet EOL) and v26.2.8 is available. Default: False
--offset-eol OFFSET_EOL
Alert me n days before ("-30") or after an EOL date
("30" or "+30"). Default: -30 days
--path PATH Local path to your Python binary. Default:
/usr/bin/python3
Usage Examples
--------------

.. code-block:: bash
./python-version --offset-eol=-30
Output:

.. code-block:: text
Python v3.11.4 (EOL 2027-10-24 -30d, minor 3.12.0 available, patch 3.11.6 available)
States
------

* WARN if software is EOL
* Optional: WARN when new major version is available
* Optional: WARN when new minor version is available
* Optional: WARN when new patch version is available


Perfdata / Metrics
------------------

.. csv-table::
:widths: 25, 15, 60
:header-rows: 1

Name, Type, Description
python-version, Number, Installed Python version as float. "3.11.4" becomes "3.114".


Credits, License
----------------

* Authors: `Linuxfabrik GmbH, Zurich <https://www.linuxfabrik.ch>`_
* License: The Unlicense, see `LICENSE file <https://unlicense.org/>`_.
97 changes: 97 additions & 0 deletions check-plugins/python-version/grafana/python-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
apiVersion: grizzly.grafana.com/v1alpha1
kind: Dashboard
metadata:
folder: linuxfabrik-monitoring-plugins
name: python-version
spec:
schemaVersion: 2023041201
tags:
- Linuxfabrik
- Grizzly
- static
time:
from: now-90d
to: now
timepicker:
hidden: false
refresh_intervals:
- 1m
timezone: browser
title: Python Version
uid: linuxfabrik-monitoring-plugins-python-version
editable: true
liveNow: true
refresh: 1m
templating:
list:
- hide: 2
label: Command
name: command
query: cmd-check-python-version
type: constant
- label: Hostname
name: hostname
query: SHOW TAG VALUES FROM "cmd-check-python-version" WITH KEY = "hostname"
refresh: 2
sort: 1
type: query

panels:

- title: Python Version
type: timeseries
gridPos:
h: 8
w: 12
x: 0
y: 0
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
lineInterpolation: smooth
showPoints: always
spanNulls: true
decimals: 3
unit: none
options:
legend:
calcs:
- min
- max
displayMode: table
placement: bottom
showLegend: true
tooltip:
mode: multi
sort: none

targets:

- alias: python-version
refId: python-version
groupBy:
- params:
- $interval
type: time
measurement: /^$command$/
resultFormat: time_series
select:
- - params:
- value
type: field
- params: []
type: mean
tags:
- key: hostname
operator: '=~'
value: /^$hostname$/
- condition: AND
key: service
operator: '='
value: Python Version
- condition: AND
key: metric
operator: '='
value: python-version
Loading

0 comments on commit ef50f93

Please sign in to comment.