Branchez-le sur la stack que vous exploitez déjà.
Métriques, traces, logs structurés et flux d'audit — sur des endpoints ouverts et standards. Pointez votre Prometheus, votre collecteur OTLP et votre SIEM sur Pulse. Il expose ; vous scrapez. Jamais de phone-home.
Sur votre périmètre
Pulse n'ouvre jamais de connexion sortante vers un service d'observabilité tiers. Chaque signal est exposé sur un endpoint dans votre réseau ; vos collecteurs se connectent, et vous décidez de ce qui sort de votre egress. Pas de destination OTLP embarquée, pas de vendor lock-in, pas de télémétrie qui nous revient.
Quatre signaux, formats standards
Tout ce que vous instrumenteriez vous-même — déjà émis.
Chaque signal parle le format que vos outils ingèrent déjà. Aucun adaptateur à écrire, aucun agent propriétaire à installer.
Metrics
GET /metricsDébit du moteur, lag consommateur, réplication Raft, JVM, agents & MCP tools — au format Prometheus text.
→ Prometheus · Grafana · VictoriaMetrics
Traces
OTLP · W3C contextSpans sur le webhook, le consensus et les chemins MCP, plus auto-instrumentation HTTP / Postgres / JDBC. Exportez où vous voulez.
→ Tempo · Jaeger · Datadog APM
Logs structurés
stdout · correlation-taggedLes lignes SLF4J / Logback portent les IDs de trace et de span quand l'agent OTel est attaché — expédiez-les avec l'agent que vous utilisez déjà.
→ Loki · Vector · Fluent Bit · Filebeat
Flux d'audit
GET /api/audit/streamUn flux SSE long-lived de chaque ligne d'audit — qui a fait quoi, quand — avec bearer tokens et reconnect sans trous.
→ Splunk · Elastic SIEM · Wazuh · Chronicle
Les endpoints, pour de vrai
Scrapez-le, tracez-le, streamez-le.
Les appels qu'un opérateur passe vraiment. Copiez-les sur un Pulse qui tourne.
# Pointez votre Prometheus scrape_config dessus — ou curl direct curl http://pulse:8080/metrics
Sortie exemple
# HELP streamflow_engine_events_total Events ingested
streamflow_engine_events_total{node="node-1"} 4821573
streamflow_engine_append_latency_seconds{quantile="0.99"} 0.0004
streamflow_consumer_lag{group="orders",topic="orders"} 12
streamflow_raft_replication_ratio{node="node-1"} 1.0
pulse_agent_events_processed_total{agent="fraud-scorer"} 98120
pulse_mcp_tool_calls_total{tool="slack.post"} 431
jvm_memory_used_bytes{area="heap"} 318767104Time-travel par événement
Rejouez le parcours complet d'un événement — de façon déterministe.
Au-delà des dashboards agrégés : sélectionnez un événement unique et parcourez son chemin complet à travers les sources, étages et sinks. Pulse enregistre la trajectoire de chaque saut et peut la rejouer byte-for-byte dans un moteur mocké — la même entrée produit la même sortie, deux fois.
source
webhook.ingest
+0.0 ms
stage · rule
fraud-score
+1.2 ms
stage · llm
triage-router
+284 ms
stage · mcp
slack.post
+91 ms
sink
jdbc.orders
+3.4 ms
Le replay déterministe est testé en CI. Le moteur de replay rejoue un événement capturé avec des I/O mockées et vérifie que la sortie est byte-identique sur deux exécutions — l'enquête "pourquoi cet événement a fait ça ?" devient reproductible, plus une devinette. Récupérez la trajectoire d'un événement sur GET /api/pulse/trajectory/{eventId}.
Dashboards en une commande
Un Grafana déjà câblé.
Pas envie de construire les panels de zéro ? Une stack Prometheus + Grafana avec un dashboard StreamFlow provisionné est livrée dans le repo.
Familles de métriques
Débit moteur · latence d'append · disque ; lag consommateur ; ratio de réplication Raft ; JVM ; Agents ; MCP tools ; spans agent-graph.
Dashboard Grafana
9 panneaux, provisionnés automatiquement, avec seuils visuels.
Alertes
Règles pré-configurées ; routing Slack / PagerDuty via Alertmanager.
Démarrer la stack de monitoring
# Prometheus + Grafana, dashboard auto-provisionné docker compose -f deploy/monitoring/compose.yml up -d # Grafana → http://localhost:3000 (dashboard déjà là) # Métriques brutes → http://pulse:8080/metrics
Frontières honnêtes.
Tracing en opt-in.
Pulse n'a aucune dépendance de compilation vers OpenTelemetry — les spans deviennent réels seulement quand vous attachez l'agent standard, et sont un no-op garanti (une lecture volatile, zéro allocation) sinon. L'install on-prem single-binary reste léger.
Rien ne sort par défaut.
Vous choisissez l'endpoint OTLP et la destination SIEM ; Pulse n'initie jamais de connexion de télémétrie sortante.
Logs tagués, pas reformatés.
Ils portent les IDs trace/span quand l'agent est attaché ; expédiez-les avec l'agent de logs que vous exploitez déjà.
Vos dashboards. Votre SIEM. Votre décision.
Endpoints ouverts, formats standards, zéro phone-home. Branchez Pulse sur la stack d'observabilité en qui vous avez déjà confiance — en un après-midi, pas un trimestre.