Stack de supervision¶
Métriques, journaux, tableaux de bord et alertes.
| URL Dashboards | https://metrics.akko.local |
| URL Prometheus | https://prometheus.akko.local |
| Authentification | Keycloak SSO (Dashboards) |
| Sous-charts Helm | monitoring (kube-prometheus-stack), loki (logs layer Stack) |
Aperçu¶
AKKO inclut une stack d'observabilité complète qui fournit la collecte de métriques, l'agrégation de journaux, la visualisation et l'alerte. Les cinq services de supervision démarrent avec le profil principal -- aucun drapeau supplémentaire n'est nécessaire.
grafana.akko.local
|
Traefik (TLS)
|
Dashboards (:3000)
/ | \
Prometheus logs layer Alertmanager
(:9090) (:3100) (:9093)
| |
cibles de log shipper
collecte (:9080)
| |
+-------+---+ Journaux des
| | | conteneurs
object storage JHub ... Docker
Composants¶
Prometheus¶
Moteur de collecte de métriques. Collecte les cibles toutes les 15 secondes et évalue les règles d'alerte toutes les 15 secondes.
| Paramètre | Valeur |
|---|---|
| URL | https://prometheus.akko.local |
| Port interne | 9090 |
| Fichier de configuration | monitoring/prometheus/prometheus.yml |
| Règles d'alerte | monitoring/prometheus/rules/akko-alerts.yml |
| Intervalle de collecte | 15s |
Cibles de collecte actives :
| Job | Cible | Chemin des métriques |
|---|---|---|
prometheus |
localhost:9090 |
/metrics |
alertmanager |
akko-alertmanager:9093 |
/metrics |
minio |
akko-minio:9000 |
/minio/v2/metrics/cluster |
jupyterhub |
akko-jupyterhub:8000 |
/hub/metrics |
Métriques Trino et Airflow
Les cibles de collecte Trino et Airflow sont actuellement désactivées car leurs points d'accès de santé renvoient du JSON, pas du format Prometheus. Pour les activer :
- Trino : Déployez JMX Exporter comme agent Java dans l'image Trino (port 9483)
- Airflow : Déployez un sidecar
statsd_exporterou installezapache-airflow-providers-statsd
Dashboards¶
Plateforme de visualisation et de tableaux de bord. Pré-configurée avec trois sources de données et quatre tableaux de bord.
| Paramètre | Valeur |
|---|---|
| URL | https://metrics.akko.local |
| Port interne | 3000 |
| Authentification | Keycloak SSO |
| Configuration des sources de données | monitoring/grafana/provisioning/datasources/datasource.yml |
| Configuration des tableaux de bord | monitoring/grafana/provisioning/dashboards/dashboards.yml |
Sources de données pré-configurées :
| Source de données | Type | URL | Par défaut |
|---|---|---|---|
| Prometheus | prometheus |
http://akko-prometheus-server:9090 |
Oui |
| logs layer | loki |
http://akko-loki:3100 |
Non |
| Alertmanager | alertmanager |
http://akko-alertmanager:9093 |
Non |
Tableaux de bord pré-construits :
| Tableau de bord | Fichier | Description |
|---|---|---|
| AKKO Overview | akko-overview.json |
Santé de la plateforme et utilisation des ressources |
| AKKO object storage | akko-minio.json |
Métriques de stockage object storage (objets, bande passante) |
| AKKO Trino | akko-trino.json |
Métriques de requêtes Trino (nécessite JMX Exporter) |
| AKKO JupyterHub | akko-jupyterhub.json |
Métriques utilisateurs et spawner JupyterHub |
logs layer¶
Moteur d'agrégation de journaux. Reçoit les journaux de log shipper et les rend interrogeables via Dashboards en utilisant LogQL.
| Paramètre | Valeur |
|---|---|
| Port interne | 3100 |
| Fichier de configuration | monitoring/loki/loki-config.yml |
| Lignes max par requête | 1000 |
log shipper¶
Agent de collecte de journaux. Collecte les journaux des conteneurs Docker et les transmet à logs layer avec des labels pour le nom du service, l'ID du conteneur et d'autres métadonnées.
| Paramètre | Valeur |
|---|---|
| Port interne | 9080 |
| Fichier de configuration | monitoring/promtail/promtail-config.yml |
| Source | Journaux des conteneurs Docker |
Alertmanager¶
Moteur de routage et de notification d'alertes. Reçoit les alertes de Prometheus et les route en fonction de la sévérité.
| Paramètre | Valeur |
|---|---|
| Port interne | 9093 |
| Fichier de configuration | monitoring/alertmanager/alertmanager.yml |
| Récepteur par défaut | Journalisation uniquement (stdout) |
Règles d'alerte¶
AKKO est livré avec des règles d'alerte pré-configurées dans monitoring/prometheus/rules/akko-alerts.yml :
| Alerte | Sévérité | Condition | Durée |
|---|---|---|---|
| ServiceDown | Critique | up == 0 |
2 min |
| HighLatency | Avertissement | Temps de réponse > 2s | 5 min |
| HighMemoryUsage | Avertissement | Mémoire conteneur > 90% de la limite | 2 min |
| HighCPUUsage | Avertissement | CPU conteneur > 80% | 5 min |
| DiskSpaceRunningLow | Avertissement | Système de fichiers > 85% utilisé | 5 min |
| PostgresConnectionsHigh | Avertissement | Connexions > 80% du max | 5 min |
| StorageBucketEmpty | Info | Le bucket contient 0 objet | 10 min |
Le routage des alertes est configuré avec un groupement basé sur la sévérité :
- Alertes critiques : délai de groupement de 5 secondes, intervalle de répétition de 15 minutes
- Toutes les autres alertes : délai de groupement de 10 secondes, intervalle de répétition d'1 heure
- Inhibition : une alerte critique supprime les avertissements pour le même service
Accéder à Dashboards¶
- Ouvrez
https://metrics.akko.local - Connectez-vous avec Keycloak SSO (par ex.
aliceavec le rôle administrateur) - Naviguez vers Dashboards dans la barre latérale gauche pour consulter les tableaux de bord pré-construits
- Utilisez Explore pour interroger directement les métriques Prometheus ou les journaux logs layer
Interroger les journaux dans Dashboards¶
Pour consulter les journaux d'un service AKKO spécifique :
- Allez dans Explore (icône boussole dans la barre latérale gauche)
- Sélectionnez la source de données logs layer
- Utilisez une requête LogQL :
Filtrer par niveau de log :
Interroger les métriques¶
Sélectionnez la source de données Prometheus dans Explore et utilisez PromQL :
# Disponibilité des services (1 = en ligne, 0 = hors ligne)
up
# Utilisateurs actifs JupyterHub
jupyterhub_running_servers
# Requêtes par seconde object storage
rate(minio_http_requests_total[5m])
Ajouter des alertes personnalisées¶
Créez un nouveau fichier YAML dans monitoring/prometheus/rules/ :
groups:
- name: my-custom-alerts
rules:
- alert: SlowTrinoQueries
expr: trino_query_execution_time_seconds > 30
for: 5m
labels:
severity: warning
annotations:
summary: "Slow Trino queries detected"
description: "Queries taking longer than 30 seconds for 5+ minutes."
Prometheus charge automatiquement tous les fichiers *.yml du répertoire de règles.
Ajouter des tableaux de bord personnalisés¶
Placez les fichiers JSON de tableaux de bord dans monitoring/grafana/dashboards/. Le système de provisionnement de Dashboards détecte les nouveaux fichiers et les charge automatiquement.
Pour exporter un tableau de bord existant :
- Ouvrez le tableau de bord dans Dashboards
- Cliquez sur l'icône Share (barre supérieure)
- Sélectionnez Export > Save to file
- Placez le fichier JSON dans
monitoring/grafana/dashboards/
Configurer les notifications¶
La configuration par défaut d'Alertmanager utilise un récepteur de journalisation uniquement (les alertes apparaissent dans stdout). Pour activer de vraies notifications, éditez monitoring/alertmanager/alertmanager.yml :
Après modification, redémarrez Alertmanager :
Référence des fichiers de configuration¶
| Fichier | Fonction |
|---|---|
monitoring/prometheus/prometheus.yml |
Cibles de collecte Prometheus et configuration globale |
monitoring/prometheus/rules/akko-alerts.yml |
Définitions des règles d'alerte |
monitoring/grafana/provisioning/datasources/datasource.yml |
Auto-provisionnement des sources de données Dashboards |
monitoring/grafana/provisioning/dashboards/dashboards.yml |
Configuration du provisionnement des tableaux de bord Dashboards |
monitoring/grafana/dashboards/*.json |
Définitions des tableaux de bord Dashboards pré-construits |
monitoring/loki/loki-config.yml |
Configuration du stockage et de la rétention logs layer |
monitoring/promtail/promtail-config.yml |
Configuration de la collecte de journaux log shipper |
monitoring/alertmanager/alertmanager.yml |
Configuration du routage des alertes et des notifications |