Aller au contenu principal

Observabilité

STOA inclut une stack d'observabilité intégrée avec Prometheus pour les métriques, Grafana pour les tableaux de bord et Loki pour l'agrégation des logs.

Vue d'Ensemble de la Stack

ComposantObjectifAccès
PrometheusCollecte de métriques et alertesInterne (en cluster)
GrafanaTableaux de bord et visualisationhttps://grafana.<YOUR_DOMAIN>
LokiAgrégation et recherche de logsVia Grafana

Métriques

API du Plan de Contrôle

Le backend FastAPI expose les métriques Prometheus à /metrics :

MétriqueTypeDescription
http_requests_totalCounterTotal des requêtes HTTP par méthode, chemin, statut
http_request_duration_secondsHistogramDistribution de la latence des requêtes
db_query_duration_secondsHistogramLatence des requêtes base de données
kafka_events_published_totalCounterÉvénements publiés sur Kafka

MCP Gateway

MétriqueTypeDescription
mcp_tool_calls_totalCounterInvocations d'outils par nom, tenant, statut
mcp_tool_call_duration_secondsHistogramLatence des appels d'outils
opa_policy_evaluations_totalCounterVérifications de politiques OPA par résultat
mcp_active_connectionsGaugeConnexions SSE actives

Kafka / Redpanda

MétriqueTypeDescription
kafka_consumer_lagGaugeLag du consommateur par topic/partition
kafka_messages_in_totalCounterMessages produits par topic

Tableaux de Bord Grafana

Vue d'Ensemble de la Plateforme

Le tableau de bord principal affiche :

  • Taux de requêtes et taux d'erreur sur tous les services
  • Percentiles de latence (p50, p95, p99)
  • Utilisateurs actifs et sessions
  • Utilisation du pool de connexions base de données

Tableau de Bord MCP Gateway

  • Taux d'appels d'outils par tenant et nom d'outil
  • Ratio d'autorisation/refus des politiques OPA
  • Nombre de connexions SSE
  • Débit du pipeline de métering

Tableau de Bord Tenant

Vue par tenant montrant :

  • Volume d'appels API
  • Activité des abonnements
  • Répartition des erreurs par API
  • Utilisation des limites de débit

Agrégation des Logs

Interroger les Logs

Accédez aux logs via la vue Explore de Grafana avec Loki :

# Tous les logs d'erreur des 5 dernières minutes
{job=~".+"} |= "level=error"

# Logs de l'API du Plan de Contrôle pour un tenant spécifique
{app="control-plane-api"} |= "tenant=acme"

# Appels d'outils MCP Gateway
{app="mcp-gateway"} |= "tool.call"

# Requêtes lentes (>1s)
{app="control-plane-api"} | json | duration > 1s

Format des Logs

Tous les services STOA journalisent en format JSON structuré :

{
"timestamp": "2026-02-04T10:30:00Z",
"level": "INFO",
"service": "control-plane-api",
"message": "API published",
"tenant": "acme",
"api": "petstore",
"version": "1.0.0",
"trace_id": "abc123"
}

Définissez LOG_FORMAT=text pour une sortie lisible par l'humain en développement local.

Alertes

Règles d'Alerte Prometheus

STOA est livré avec des règles d'alerte par défaut :

AlerteConditionSévérité
HighErrorRateTaux d'erreur > 5% pendant 5 minutesCritique
HighLatencyLatence p99 > 2s pendant 5 minutesAvertissement
DatabaseConnectionExhaustedPool de connexions > 90%Critique
KafkaConsumerLagLag > 10000 pendant 10 minutesAvertissement
MCPGatewayDownAucun pod sain pendant 1 minuteCritique
VaultSealedStatut scellé de Vault détectéCritique

Destinations des Alertes

Configurez le routage des alertes dans alertmanager.yaml :

  • Slack : Notifications dans le canal pour les alertes d'équipe
  • PagerDuty : Escalade d'astreinte pour les alertes critiques
  • Email : Résumés périodiques pour les alertes non critiques

Runbooks

STOA inclut des runbooks opérationnels organisés par sévérité :

Critique

  • Gateway Hors Service — Gateway inaccessible
  • Connexion Base de Données — Problèmes de connectivité PostgreSQL
  • Vault Scellé — Vault nécessite un déverrouillage
  • Restauration Vault — Reprise après sinistre Vault

Haute Priorité

  • Expiration de Certificat — Certificat TLS approchant l'expiration
  • Latence Élevée Gateway — Dégradation du temps de réponse
  • Lag Kafka — Consommateur prenant du retard

Priorité Moyenne

  • Rollback d'API — Revenir à un déploiement d'API défectueux
  • Échec Adaptateur Gateway — Instance gateway inaccessible ou dégradée

Endpoints de Santé

Tous les services exposent des endpoints de contrôle de santé :

EndpointObjectif
/health/readySonde de préparation — toutes les dépendances accessibles
/health/liveSonde de vivacité — processus actif
/health/startupSonde de démarrage — initialisation complète
curl ${STOA_API_URL}/health/ready
# {"status": "ok"}