diff --git a/docs/tests.md b/docs/tests.md new file mode 100644 index 0000000..ab7caba --- /dev/null +++ b/docs/tests.md @@ -0,0 +1,55 @@ +# tests + +## logs from loki + +```python +# loki-get-last-to-sensor.py +import sys, os, requests, datetime, time, json + +url = os.environ.get("LOKI_ADDRESS") + +if not url: + print(json.dumps({"state": "error", "log_message": "LOKI_ADDRESS is not set or empty"})) + sys.exit(1) + +query = os.environ.get("LOKI_QUERY") +if not query: + print(json.dumps({"state": "error", "log_message": "LOKI_ADDRESS is not set or empty"})) + sys.exit(1) + + +end = int(time.time()) * 1_000_000_000 +start = (int(time.time()) - 24*60*60) * 1_000_000_000 + + +params = { + "query": query, + "limit": 1, + "direction": "backward", + "start": str(start), + "end": str(end), +} + +resp = requests.get(url, params=params) +data = resp.json() + +try: + ns = int(data["data"]["result"][0]["values"][0][0]) + ts = ns / 1_000_000_000 + dt = datetime.datetime.fromtimestamp(ts).strftime("%Y-%m-%d %H:%M:%S") + + print(json.dumps({ + "state": dt, + })) + +except Exception: + print(json.dumps({"state": "unknown"})) +``` + +```yaml +# example of the sensor +name: git_limbosolutions_com_last_pbs_backup +command: > + LOKI_ADDRESS=${LOKI_ADDRESS} LOKI_QUERY="{job=\"git-limbosolutions-com/pbs-backup\"} |= \"INFO: Finished Backup\"" python3 /config/scripts/loki-get-last-to-sensor.py +value_template: "{{ value }}" +```