NewsBlur-viq/utils/grafana_backup.py
2024-04-24 09:50:42 -04:00

40 lines
1.2 KiB
Python

import json
import requests
with open("/srv/secrets-newsblur/keys/grafana_api_key", "r") as file:
GRAFANA_API_KEY = file.read()[:-1]
settings = {
"GRAFANA_URL": "https://metrics.newsblur.com",
"VERIFY_SSL": True,
"GRAFANA_API_KEY": GRAFANA_API_KEY,
}
if not settings["GRAFANA_API_KEY"]:
print("API Key Required. \n Please add a Grafana API Key to `/srv/secrets-newsblur/keys/grafana_api_key`")
headers = {"Authorization": f"Bearer {settings['GRAFANA_API_KEY']}"}
def list_dashboards():
url = f"{settings['GRAFANA_URL']}/api/search?query=%"
res = requests.get(url, headers=headers, verify=True)
return res.json()
def get_dashboard(uid):
url = f"{settings['GRAFANA_URL']}/api/dashboards/uid/{uid}"
res = requests.get(url, headers=headers, verify=True)
return res.json()
dashboards = [dash for dash in list_dashboards() if dash["type"] == "dash-db"]
dashboard_uids = [dash["uid"] for dash in dashboards]
for uid in dashboard_uids:
dashboard_data = get_dashboard(uid)
dashboard_name = dashboard_data["meta"]["slug"] + "_dashboard.json"
with open(f"./docker/grafana/dashboards/{dashboard_name}", "w") as f:
json.dump(dashboard_data["dashboard"], f, indent=4)