fix: Traefik routing OpenRemote/Ditto + QuantumLeap config (2026-05-08)
This commit is contained in:
140
create_dashboard_docker.py
Normal file
140
create_dashboard_docker.py
Normal file
@@ -0,0 +1,140 @@
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
import requests
|
||||
|
||||
# UID de la datasource Prometheus (smart-city-prometheus-brokers)
|
||||
# À récupérer via l'API Grafana
|
||||
try:
|
||||
resp = requests.get('https://grafana.digitribe.fr/api/datasources',
|
||||
auth=('admin', 'Digitribe972'), verify=False)
|
||||
ds_uid = None
|
||||
if resp.ok:
|
||||
for ds in resp.json():
|
||||
if 'prometheus' in ds['type'].lower() and 'broker' in ds['name'].lower():
|
||||
ds_uid = ds['uid']
|
||||
print(f"Datasource Prometheus trouvée: {ds['name']} (UID: {ds_uid})")
|
||||
break
|
||||
except:
|
||||
pass
|
||||
|
||||
if not ds_uid:
|
||||
ds_uid = 'f9ddd651-33ec-4dad-a950-e1375a964315' # Fallback Prometheus Brokers
|
||||
print(f"Utilisation UID par défaut: {ds_uid}")
|
||||
|
||||
dashboard = {
|
||||
"annotations": {"list": []},
|
||||
"editable": True,
|
||||
"fiscalYearStartMonth": 0,
|
||||
"graphTooltip": 1,
|
||||
"id": None,
|
||||
"links": [],
|
||||
"panels": [
|
||||
# CPU Usage
|
||||
{
|
||||
"title": "CPU Usage (Docker Containers)",
|
||||
"type": "timeseries",
|
||||
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
|
||||
"datasource": {"type": "prometheus", "uid": ds_uid},
|
||||
"targets": [
|
||||
{
|
||||
"expr": 'rate(docker_container_cpu_usage_seconds_total[5m]) * 100',
|
||||
"legendFormat": "{{container}}",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "percent"
|
||||
}
|
||||
}
|
||||
},
|
||||
# Memory Usage
|
||||
{
|
||||
"title": "Memory Usage (Docker Containers)",
|
||||
"type": "timeseries",
|
||||
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
|
||||
"datasource": {"type": "prometheus", "uid": ds_uid},
|
||||
"targets": [
|
||||
{
|
||||
"expr": 'docker_container_memory_usage_bytes / 1024 / 1024 / 1024',
|
||||
"legendFormat": "{{container}} (GB)",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "decbytes"
|
||||
}
|
||||
}
|
||||
},
|
||||
# Network Traffic (RX)
|
||||
{
|
||||
"title": "Network Receive (Docker Containers)",
|
||||
"type": "timeseries",
|
||||
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16},
|
||||
"datasource": {"type": "prometheus", "uid": ds_uid},
|
||||
"targets": [
|
||||
{
|
||||
"expr": 'rate(docker_container_network_receive_bytes_total[5m]) * 8',
|
||||
"legendFormat": "{{container}} RX",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "bps"
|
||||
}
|
||||
}
|
||||
},
|
||||
# Network Traffic (TX)
|
||||
{
|
||||
"title": "Network Transmit (Docker Containers)",
|
||||
"type": "timeseries",
|
||||
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16},
|
||||
"datasource": {"type": "prometheus", "uid": ds_uid},
|
||||
"targets": [
|
||||
{
|
||||
"expr": 'rate(docker_container_network_transmit_bytes_total[5m]) * 8',
|
||||
"legendFormat": "{{container}} TX",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "bps"
|
||||
}
|
||||
}
|
||||
},
|
||||
# Container Status
|
||||
{
|
||||
"title": "Container Status (1=Running, 0=Stopped)",
|
||||
"type": "state-timeline",
|
||||
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 32},
|
||||
"datasource": {"type": "prometheus", "uid": ds_uid},
|
||||
"targets": [
|
||||
{
|
||||
"expr": 'docker_container_status',
|
||||
"legendFormat": "{{container}}",
|
||||
"refId": "A"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"schemaVersion": 38,
|
||||
"style": "dark",
|
||||
"tags": ["docker", "containers", "metrics", "prometheus"],
|
||||
"templating": {"list": []},
|
||||
"time": {"from": "now-1h", "to": "now"},
|
||||
"title": "Smart City - Docker Containers Metrics",
|
||||
"uid": "smartcity-docker-metrics",
|
||||
"version": 1
|
||||
}
|
||||
|
||||
# Sauvegarder localement
|
||||
with open('/home/eric/smart-city-digital-twin-martinique/grafana-dashboard-docker-metrics.json', 'w') as f:
|
||||
json.dump(dashboard, f, indent=2)
|
||||
|
||||
print("✅ Dashboard Docker Metrics généré")
|
||||
print(f" Fichier: grafana-dashboard-docker-metrics.json")
|
||||
print(f" UID: {dashboard['uid']}")
|
||||
print(f" Datasource Prometheus: {ds_uid}")
|
||||
Reference in New Issue
Block a user