#!/usr/bin/python3 import hmac import json import os import pprint import random import socket import time import requests hostname = socket.gethostbyaddr(socket.gethostname())[0] def report_loadavg(): now = time.time() load = os.getloadavg() with open("config.json") as fh: client_config = json.load(fh) baseurl = client_config["server"] while True: report = [] for i, period in enumerate(("1m", "5m", "15m")): node = hostname timestamp = time.time() msg = (node + " " + str(timestamp)).encode("UTF-8") digest = hmac.new(client_config["key"].encode("UTF-8"), msg, "SHA256").hexdigest() report.append( { "description": { "hostname": hostname, "measure": "loadavg", "unit": "processes", "period": period, }, "data": [ [ now, load[i] ] ], "auth": { "node": node, "timestamp": timestamp, "hmac": digest, } }, ) pprint.pp(report) r = requests.post(baseurl + "report", json=report) print(r) if r.status_code != 409: return time.sleep(0.5 + random.random()) report_loadavg()