Dashboards¶
AKKO embarque une couche de dashboarding first-party pour que
chaque métrique émise par la plateforme ait une visualisation curée
out-of-the-box. Le déploiement vit dans le sub-chart akko-observability
et tourne dans le même namespace akko que le reste de la plateforme.
La couche est exposée sur https://metrics.akko-ai.com
(ou la valeur de global.functionalAliases.metrics dans vos overrides) —
gardée par oauth2-proxy + SSO Keycloak.
L'iframe Overview du cockpit embarque le dashboard cluster-overview
directement depuis cet endpoint, donc le chart bootstrap un projet +
une datasource + des dashboards par défaut à chaque helm upgrade.
Ce qui est livré par défaut¶
Le Job post-install charge tous les fichiers JSON du dossier
helm/akko/charts/akko-observability/dashboards/*.json dans le projet
akko. Douze dashboards :
| Nom | Histoire | Ce qu'il montre |
|---|---|---|
cluster-overview |
Santé plateforme (Overview cockpit) | Pods prêts, ingress 2xx, restarts, mémoire nœud |
aden-slo |
Service IA ADEN | Latence query p50/p95, taux de succès, tokens LLM |
storage-layer |
Stockage objets | Stats volume server |
trino |
Vaisseau-amiral fédération | Queries actives, échecs/min, latence p50/p95, CPU/mem |
audit-trail |
DORA / NIS2 / RGPD | Décisions OPA, queries Trino par user, activité de login, ADEN |
litellm |
Gateway IA | Requests/sec, tokens/5min, erreurs/min, latence p95, modèles |
pipelines |
Orchestration | Statut runs, durée tâches p95, heartbeat scheduler, top pipelines en échec |
platform-slo |
Résumé top-level | Pods prêts, ingress 2xx, 5xx par service, latence p95 par service |
trino-slo |
SLO fédération | Succès, queries en queue, p99, marge mémoire, queries par catalogue |
mlflow |
Suivi ML | Runs/h, modèles enregistrés, versions, taux HTTP tracking, CPU/mem pod |
jupyterhub |
Pods IDE | Users actifs, notebooks en route, spawn p95, mémoire par pod |
trino-ai-plugin |
Internes plugin | Requests/erreurs HTTP IA, cache hit rate, circuit breaker, latence par fonction |
Chaque panel retombe sur vector(0) quand sa métrique sous-jacente est
absente — un déploiement inactif affiche une ligne de base propre
plutôt que "No data".
Ajouter votre propre dashboard¶
Posez un fichier JSON à côté des autres. Le Job de bootstrap le ramassera
automatiquement au prochain helm upgrade.
{
"kind": "Dashboard",
"metadata": { "name": "mon-equipe", "project": "akko" },
"spec": {
"display": { "name": "Mon équipe — KPIs" },
"duration": "1h",
"refreshInterval": "30s",
"panels": {
"rps": {
"kind": "Panel",
"spec": {
"display": { "name": "Requêtes / sec" },
"plugin": { "kind": "TimeSeriesChart", "spec": {} },
"queries": [{
"kind": "TimeSeriesQuery",
"spec": { "plugin": { "kind": "PrometheusTimeSeriesQuery", "spec": {
"datasource": { "kind": "PrometheusDatasource", "name": "prometheus" },
"query": "sum(rate(http_requests_total{namespace=\"mon-equipe\"}[5m]))"
} } }
}]
}
}
},
"layouts": [{ "kind": "Grid", "spec": { "items": [
{ "x": 0, "y": 0, "width": 24, "height": 8, "content": { "$ref": "#/spec/panels/rps" } }
] } }]
}
}
La datasource prometheus par défaut est déjà câblée (mode HTTPProxy),
donc tout nouveau dashboard peut simplement référencer
{"name": "prometheus", "kind": "PrometheusDatasource"}.
Smoke test¶
Pour vérifier que le bootstrap a réussi sans ouvrir un navigateur :
kubectl -n akko exec deploy/akko-akko-cockpit -- \
curl -s http://akko-dashboards:8080/api/v1/projects/akko/dashboards \
| jq -r '.[].metadata.name' | sort
Sortie attendue (un nom par ligne, ordre indifférent) :
aden-slo
audit-trail
cluster-overview
jupyterhub
litellm
mlflow
pipelines
platform-slo
storage-layer
trino
trino-ai-plugin
trino-slo
Si le compte est inférieur à 12, les logs du Job de bootstrap
(kubectl -n akko logs job/akko-dashboards-bootstrap) montrent
quel fichier a échoué au POST.
Pourquoi la couche est swappable¶
La plateforme ne dépend pas d'un engine de dashboarding spécifique. Le seul contrat est :
- L'engine parle PromQL nativement.
- Il expose une API REST pour poster un JSON de dashboard.
- Il supporte une iframe publique derrière oauth2-proxy.
Ce contrat est satisfait par plusieurs projets de dashboarding Apache 2.0 / MIT, donc l'engine peut être remplacé sans réécrire aucun JSON de dashboard ni déplacer aucune métrique. Les 12 dashboards ci-dessus sont le contrat sur lequel la plateforme s'engage ; le binaire qui les rend est un détail d'implémentation.
Liens¶
- Cockpit — l'onglet Overview embarque
cluster-overview - Stack monitoring — backend de métriques compatible Prometheus