diff --git a/clients/record_os_version b/clients/record_os_version new file mode 100755 index 0000000..d1f8206 --- /dev/null +++ b/clients/record_os_version @@ -0,0 +1,43 @@ +#!/usr/bin/python3 +import re +import subprocess +import time + +import ltsdb_record + +p = subprocess.run(["/usr/bin/lsb_release", "-ir"], capture_output=True, text=True) +for ln in p.stdout.split("\n")[:-1]: + m = re.match(r"(.*?)\s*:\s+(.*)", ln) + if m: + if m.group(1) == "Distributor ID": + distributor = m.group(2).lower() + elif m.group(1) == "Release": + release = m.group(2) +if distributor == "ubuntu": + # special rule for ubuntu. The format is year.month, so we convert the + # months into fractional years + m = re.match(r"(\d+)\.(\d+)", release) + release = int(m.group(1)) + (int(m.group(2)) - 1) / 12 +else: + # for everybody else we assume its a fp number + release = float(release) + +report0 = [] +report0.append({ "measure": "os_version_" + distributor, "unit": "version", "value": release}) +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) diff --git a/dashboard.py b/dashboard.py index f071f5a..840be2d 100644 --- a/dashboard.py +++ b/dashboard.py @@ -171,7 +171,7 @@ class TimeSeries(Widget): min_step = 25 steps = ("s", "m", "h", "D", "10D", "M", "Y") step_i = 0 - while True: + while step_i < len(steps): t0 = tickmarks[-1]["t"] x0 = tickmarks[-1]["x"] d0 = datetime.datetime.fromtimestamp(t0)