#!/usr/bin/python3 import re import subprocess import time import ltsdb_record p = subprocess.run(["psql", "-c", "select version()", "-A", "-t", "-X", "-q",], stdout=subprocess.PIPE, universal_newlines=True) # This works only for PostgreSQL 10.x and above. I don't expect to encounter # older versions any more. m = re.match(r"^PostgreSQL (\d+).(\d+) ", p.stdout) if m: version = int(m.group(1)) + int(m.group(2)) / 100 report0 = [] report0.append({ "measure": "postgresql_version", "unit": "version", "value": version}) now = time.time() report = [ { "description": { "hostname": ltsdb_record.node, "measure": r["measure"], "unit": r["unit"] }, "data": [ [now, r["value"]] ] } for r in report0 ] success = ltsdb_record.record_observations(report) exit(1 - success)