You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.6 KiB
Django/Jinja
53 lines
1.6 KiB
Django/Jinja
#!/usr/bin/env python3
|
|
import requests
|
|
|
|
|
|
access_token = '{{ hetzner_authentication_ansible_vault }}'
|
|
|
|
node_exporter_txt_dir = '/var/lib/prometheus/node-exporter'
|
|
metrics_file = node_exporter_txt_dir + "/hetzner_metrics.prom"
|
|
|
|
query= {'per_page': '1000'}
|
|
headers = {'Authorization': 'Bearer ' + access_token}
|
|
|
|
try:
|
|
response_volumes = requests.get("https://api.hetzner.cloud/v1/volumes", headers=headers, params=query)
|
|
response_servers = requests.get("https://api.hetzner.cloud/v1/servers", headers=headers, params=query)
|
|
except requests.exceptions.RequestException as e: # This is the correct syntax
|
|
f = open(metrics_file, "w")
|
|
f.write("\n")
|
|
f.close()
|
|
raise SystemExit(e)
|
|
|
|
|
|
if response_volumes.ok and response_servers.ok:
|
|
|
|
|
|
volume_json = response_volumes.json()["volumes"]
|
|
unattached_volume_count = 0
|
|
for x in range(len(volume_json)):
|
|
if volume_json[x]["server"] == None:
|
|
unattached_volume_count+=1
|
|
|
|
locked_servers_count = 0
|
|
servers_json = response_servers.json()["servers"]
|
|
for x in range(len(servers_json)):
|
|
if servers_json[x]["locked"] == "true":
|
|
locked_servers_count+=1
|
|
|
|
ratelimit_limit = response_servers.headers['ratelimit-limit']
|
|
ratelimit_remaining = response_servers.headers['ratelimit-remaining']
|
|
|
|
|
|
f = open(metrics_file, "w")
|
|
f.write(
|
|
"hetzner_api_ratelimit_remaining " + str(ratelimit_remaining) + "\n"
|
|
+ "hetzner_api_ratelimit_limit " + str(ratelimit_limit) + "\n"
|
|
+ "hetzner_api_unattached_volumes " + str(unattached_volume_count) + "\n"
|
|
+ "hetzner_api_locked_servers " + str(locked_servers_count) + "\n"
|
|
)
|
|
f.close()
|
|
else:
|
|
f = open(metrics_file, "w")
|
|
f.write("\n")
|
|
f.close() |