Add latest version metric

* Add a special handler for latest version info

* Add initial latest version items/triggers to the Zabbix template
This commit is contained in:
James Campbell 2025-06-03 01:58:44 -04:00
parent 39a6a9d23e
commit 180fa31d14
Signed by: james
GPG Key ID: 2287C33A40DC906A
2 changed files with 77 additions and 0 deletions

View File

@ -699,6 +699,18 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
if metric_name == "agent_version":
self._reply(200, VERSION)
return
elif metric_name == "latest_version_info":
try:
get_latest_version()
self._reply(
200,
json.dumps(
{"latest": latest_version, "supported": 1 if release_supported else 0}
),
)
except LatestVersionCheckError as e:
log.error("Failed to retrieve latest version information: {}".format(e))
self._reply(503, "Failed to retrieve latest version info")
# Note: parse_qs returns the values as a list. Since we always expect
# single values, just grab the first from each.

View File

@ -11,6 +11,39 @@ zabbix_export:
groups:
- name: 'My Templates'
items:
- uuid: de1fa757395440118026f4c7a7c4ebbe
name: 'PostgreSQL latest supported version'
type: DEPENDENT
key: pgmon.release.latest
delay: '0'
preprocessing:
- type: JSONPATH
parameters:
- $.latest
master_item:
key: 'pgmon[latest_version_info]'
tags:
- tag: Application
value: PostgreSQL
- uuid: e1a003317bc043908ee0803704a6e1d0
name: 'PostgreSQL release support status'
type: DEPENDENT
key: pgmon.release.supported
delay: '0'
preprocessing:
- type: JSONPATH
parameters:
- $.supported
master_item:
key: 'pgmon[latest_version_info]'
tags:
- tag: Application
value: PostgreSQL
triggers:
- uuid: 88eac74402d64e7cb853e8cb505b1939
expression: 'last(/PostgreSQL by pgmon/pgmon.release.supported)<>1'
name: 'PostgreSQL major release is lo longer supported'
priority: INFO
- uuid: 763920af8da84db8a9a2667d9653cb21
name: 'PostgreSQL Agent Version'
type: HTTP_AGENT
@ -24,6 +57,19 @@ zabbix_export:
tags:
- tag: Application
value: PostgreSQL
- uuid: d890e395fbbc4f2bacbd50e7321fcb9f
name: 'PostgreSQL latest version info'
type: HTTP_AGENT
key: 'pgmon[latest_version_info]'
delay: 12h
history: '0'
value_type: TEXT
trends: '0'
description: 'Information about the latest PostgreSQL version in the current series'
url: 'http://localhost:{$AGENT_PORT}/version'
tags:
- tag: Application
value: PostgreSQL
- uuid: 8706eccb7edc4fa394f552fc31f401a9
name: 'Max Frozen XID Age'
type: HTTP_AGENT
@ -1017,3 +1063,22 @@ zabbix_export:
- type: STRING
name: reference
value: XSCMZ
triggers:
- uuid: 94ce93c828aa46b4bd4f3732fc7090c6
expression: 'last(/PostgreSQL by pgmon/pgmon.release.latest) - last(/PostgreSQL by pgmon/pgmon[version]) >= 1'
name: 'PostgreSQL is at least 1 version behind'
priority: INFO
dependencies:
- name: 'PostgreSQL is at least 2 version behind'
expression: 'last(/PostgreSQL by pgmon/pgmon.release.latest) - last(/PostgreSQL by pgmon/pgmon[version]) >= 2'
- uuid: 2701bcd1223c4ee787f3eca30288e6c6
expression: 'last(/PostgreSQL by pgmon/pgmon.release.latest) - last(/PostgreSQL by pgmon/pgmon[version]) >= 2'
name: 'PostgreSQL is at least 2 version behind'
priority: INFO
dependencies:
- name: 'PostgreSQL is at least 3 version behind'
expression: 'last(/PostgreSQL by pgmon/pgmon.release.latest) - last(/PostgreSQL by pgmon/pgmon[version]) >= 3'
- uuid: 3c9adbe8b6f84b3788c6a3e513075df5
expression: 'last(/PostgreSQL by pgmon/pgmon.release.latest) - last(/PostgreSQL by pgmon/pgmon[version]) >= 3'
name: 'PostgreSQL is at least 3 version behind'
priority: INFO