RousselTMLEARNING

Observabilité

Alertes et pipelines dans OpenObserve

Créer un modèle, une destination et une alerte, éviter le blocage SSRF des webhooks et traiter les données avec des pipelines temps réel ou planifiés.

1. Les alertes #

Du flux à la notification.

La chaîne #

Chaîne d'une alerte dans OpenObserve
Une alerte a besoin d'une destination, qui a elle-même besoin d'un modèle.

L'ordre de création compte : le modèle, puis la destination qui l'utilise, puis l'alerte. Nous avons testé cette chaîne avec un vrai webhook, qui a reçu : {"alerte":"erreurs_paiement","flux":"commandes","nb":"1"}.

A='root@example.com:Complexpass#123'
curl -u "$A" -H 'Content-Type: application/json' \
  http://localhost:5080/api/default/alerts/templates \
  -d '{"name":"tpl_simple","type":"http","title":"",
       "body":"{\"alerte\":\"{alert_name}\",\"flux\":\"{stream_name}\",\"nb\":\"{alert_count}\"}"}'

curl -u "$A" -H 'Content-Type: application/json' \
  http://localhost:5080/api/default/alerts/destinations \
  -d '{"name":"webhook_tp","url":"http://echo:8080/alerte","method":"post",
       "skip_tls_verify":false,"template":"tpl_simple","headers":{},"type":"http"}'
A='root@example.com:Complexpass#123'
curl -u "$A" -H 'Content-Type: application/json' \
  http://localhost:5080/api/v2/default/alerts \
  -d '{"name":"erreurs_paiement","stream_type":"logs","stream_name":"commandes",
       "is_real_time":false,"enabled":true,"owner":"root@example.com","folder_id":"default",
       "description":"Au moins une erreur en une minute","row_template":"","context_attributes":{},
       "query_condition":{"type":"sql","conditions":null,"promql":null,"promql_condition":null,
         "aggregation":null,"vrl_function":null,"multi_time_range":null,
         "sql":"SELECT count(*) AS nb FROM commandes WHERE level='"'"'error'"'"'"},
       "trigger_condition":{"period":1,"threshold":1,"frequency":1,"cron":"","operator":">=",
         "silence":0,"frequency_type":"minutes","timezone":null,"tolerance_in_seconds":null},
       "destinations":["webhook_tp"]}'

Planifiée ou temps réel #

TypeÉvaluationUsage
PlanifiéeUne requête SQL ou PromQL exécutée à intervalle régulierSeuils et agrégats : taux d’erreur, percentile
Temps réelÉvaluée à l’ingestion, événement par événementÉvénement précis à signaler aussitôt

Le piège du webhook local #

Message Destination URL blocked by SSRF guard ? Par sécurité, OpenObserve refuse les webhooks vers une adresse privée : conteneur voisin, réseau interne, 127.0.0.1. Autorisez précisément vos cibles avec ZO_SSRF_ALLOWED_HOSTS ou ZO_SSRF_ALLOWED_CIDRS. ZO_SKIP_SSRF_CHECKS=true désactive la protection : à réserver à une maquette.

2. Les pipelines #

Traiter les données avant de les stocker.

Temps réel et planifiés #

Un pipeline enchaîne une source, des conditions, des fonctions et une ou plusieurs destinations. Il se construit graphiquement dans l'interface.

TypeSourceUsage typique
Temps réelUn flux, à l’ingestionMasquer un champ, enrichir, router vers un autre flux
PlanifiéUne requête exécutée périodiquementProduire un flux d’agrégats, comme une recording rule
Bonne pratique : filtrez et masquez les données sensibles dans un pipeline temps réel, avant le stockage. Un filtre à la lecture ne retire rien du disque.

Articles liés

OpenObserve : architecture et concepts

Comprendre OpenObserve : stockage Parquet, modes de déploiement, rôles (router, ingester, querier, compactor,…

Installer OpenObserve et ingérer ses premières données

Installer OpenObserve avec Docker Compose ou le binaire, le configurer par ses variables ZO_*, envoyer du JSO…

Envoyer ses logs, métriques et traces vers OpenObserve

Les points de réception d'OpenObserve : JSON, bulk, OTLP avec le Collector OpenTelemetry, Prometheus remote w…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !