From 449c2020980c037615cc6a485c590bfdf0ae7b22 Mon Sep 17 00:00:00 2001 From: James Campbell Date: Tue, 29 Oct 2024 01:36:04 -0400 Subject: [PATCH] Add agent version --- gentoo/{pgmon-0.0.1.ebuild => pgmon-0.1.0.ebuild} | 0 pgmon.py | 8 +++++++- pgmon_templates.yaml | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) rename gentoo/{pgmon-0.0.1.ebuild => pgmon-0.1.0.ebuild} (100%) diff --git a/gentoo/pgmon-0.0.1.ebuild b/gentoo/pgmon-0.1.0.ebuild similarity index 100% rename from gentoo/pgmon-0.0.1.ebuild rename to gentoo/pgmon-0.1.0.ebuild diff --git a/pgmon.py b/pgmon.py index 4a64a2c..4152af0 100755 --- a/pgmon.py +++ b/pgmon.py @@ -17,6 +17,8 @@ from http.server import BaseHTTPRequestHandler, HTTPServer from http.server import ThreadingHTTPServer from urllib.parse import urlparse, parse_qs +VERSION = '0.1.0' + # Configuration config = {} @@ -201,6 +203,10 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler): name = parsed_path.path.strip('/') parsed_query = parse_qs(parsed_path.query) + if name == 'agent_version': + self._reply(200, f"{VERSION}") + return + # Note: Parse_qs returns the values as a list. Since we always expect # single values, just grab the first from each. args = {key: values[0] for key, values in parsed_query.items()} @@ -210,7 +216,7 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler): metric = config['metrics'][name] except KeyError: log.error(f"Unknown metric: {name}") - self.wfile.write(bytes('Unknown metric', 'utf-8')) + self._reply(404, 'Unknown metric') return # Get the dbname diff --git a/pgmon_templates.yaml b/pgmon_templates.yaml index 9f35470..0d9afa9 100644 --- a/pgmon_templates.yaml +++ b/pgmon_templates.yaml @@ -11,6 +11,21 @@ zabbix_export: groups: - name: 'My Templates' items: + - uuid: 763920af8da84db8a9a2667d9653cb21 + name: 'PostgreSQL Agent Version' + key: 'web.page.get[localhost,/agent_version,{$AGENT_PORT}]' + delay: 1h + history: 90d + value_type: TEXT + description: 'PostgreSQL monitoring agent version number' + preprocessing: + - type: REGEX + parameters: + - '\n\s?\n([\s\S]*)' + - \1 + tags: + - tag: Application + value: PostgreSQL - uuid: 8706eccb7edc4fa394f552fc31f401a9 name: 'Max Frozen XID Age' key: 'web.page.get[localhost,/max_frozen_age,{$AGENT_PORT}]'