- Pas de stack dédiée : une instance Prometheus/Grafana existe déjà sur ce serveur pour les 5 autres projets. En déployer une seconde aurait dupliqué de la RAM sur une machine à 3.7 Go partagée, sans bénéfice - même raisonnement que pour Caddy en Phase 2. - Scrape job tripoli_edge (172.17.0.1:9000, même passerelle docker0 que Caddy) ajouté à la config Prometheus existante. - Règles d'alerte : TripoliEdgeDown (up == 0), HostDiskAlmostFull (< 10% d'espace libre sur / - au niveau de la machine, pas seulement de ce projet, puisqu'il n'y a qu'un disque pour tout le monde). - Sonde blackbox externe ajoutée pour https://tripoli.cloud/healthz. - Dashboard Grafana versionné (uid tripoli-cloud-edge), importé via l'API (POST /api/dashboards/db) pour rester reproductible, pas construit à la main dans l'UI. - Vérifié : tous les targets Prometheus up (dont tripoli_edge et la sonde tripoli.cloud), les deux règles d'alerte chargées et évaluées, les requêtes du dashboard retournent de vraies valeurs. - Limite assumée : les alertes se déclenchent dans Prometheus mais ne sont pas encore routées par email (pas d'Alertmanager, pas de policy de notification Grafana dédiée) - documenté comme prochain pas, pas fait pour éviter de modifier la politique de notification globale de l'instance partagée sans plus de tests. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
102 lines
3.1 KiB
JSON
102 lines
3.1 KiB
JSON
{
|
|
"title": "Tripoli Cloud - tripoli-edge",
|
|
"uid": "tripoli-cloud-edge",
|
|
"tags": ["tripoli-cloud"],
|
|
"timezone": "browser",
|
|
"schemaVersion": 39,
|
|
"version": 1,
|
|
"time": { "from": "now-6h", "to": "now" },
|
|
"refresh": "30s",
|
|
"panels": [
|
|
{
|
|
"id": 1,
|
|
"title": "tripoli-edge up",
|
|
"type": "stat",
|
|
"gridPos": { "h": 4, "w": 4, "x": 0, "y": 0 },
|
|
"datasource": { "type": "prometheus", "uid": "cfxoej9jr3ncwb" },
|
|
"targets": [
|
|
{ "expr": "up{job=\"tripoli_edge\"}", "refId": "A" }
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"mappings": [
|
|
{ "type": "value", "options": { "0": { "text": "DOWN", "color": "red" }, "1": { "text": "UP", "color": "green" } } }
|
|
],
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "red", "value": null }, { "color": "green", "value": 1 }] }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": 2,
|
|
"title": "Requêtes en cours (in-flight)",
|
|
"type": "stat",
|
|
"gridPos": { "h": 4, "w": 4, "x": 4, "y": 0 },
|
|
"datasource": { "type": "prometheus", "uid": "cfxoej9jr3ncwb" },
|
|
"targets": [
|
|
{ "expr": "tripoli_edge_in_flight_requests", "refId": "A" }
|
|
]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"title": "Latence moyenne (ms)",
|
|
"type": "stat",
|
|
"gridPos": { "h": 4, "w": 4, "x": 8, "y": 0 },
|
|
"datasource": { "type": "prometheus", "uid": "cfxoej9jr3ncwb" },
|
|
"targets": [
|
|
{ "expr": "tripoli_edge_request_duration_ms_avg", "refId": "A" }
|
|
]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"title": "Espace disque libre sur / (hôte partagé)",
|
|
"type": "gauge",
|
|
"gridPos": { "h": 4, "w": 4, "x": 12, "y": 0 },
|
|
"datasource": { "type": "prometheus", "uid": "cfxoej9jr3ncwb" },
|
|
"targets": [
|
|
{
|
|
"expr": "100 * node_filesystem_avail_bytes{mountpoint=\"/\",fstype!=\"tmpfs\"} / node_filesystem_size_bytes{mountpoint=\"/\",fstype!=\"tmpfs\"}",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "percent",
|
|
"min": 0,
|
|
"max": 100,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "color": "red", "value": null },
|
|
{ "color": "orange", "value": 10 },
|
|
{ "color": "green", "value": 25 }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": 5,
|
|
"title": "Requêtes par classe de statut (par seconde)",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 4 },
|
|
"datasource": { "type": "prometheus", "uid": "cfxoej9jr3ncwb" },
|
|
"targets": [
|
|
{
|
|
"expr": "rate(tripoli_edge_responses_total[5m])",
|
|
"legendFormat": "{{class}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 6,
|
|
"title": "Requêtes totales (par seconde)",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 4 },
|
|
"datasource": { "type": "prometheus", "uid": "cfxoej9jr3ncwb" },
|
|
"targets": [
|
|
{ "expr": "rate(tripoli_edge_requests_total[5m])", "legendFormat": "req/s", "refId": "A" }
|
|
]
|
|
}
|
|
]
|
|
}
|