RousselTMLEARNING

TP · OpenObserve : de la découverte à l'expertise

TP : Installer OpenObserve et ingérer ses premiers logs avec correction

La correction est intégrée au TP (Voir les encadrés de couleur vert)

Ce que vous allez apprendre dans ce TP
  • Déployer OpenObserve
  • Ingérer du JSON
  • Interroger en SQL

Introduction #

Ce que vous allez apprendre dans cette section
  • Déployer OpenObserve
  • Ingérer du JSON
  • Interroger en SQL

Contexte. Votre équipe cherche une plateforme de logs plus légère qu'un cluster Elasticsearch. Vous montez une maquette en quelques minutes.

Prérequis : Docker Compose, curl, jq  ·  Durée estimée : 30 min

Une plateforme prête à recevoir des données.

Mise en place #

Étapes guidées, avec leur correction.

  1. 1. Démarrer OpenObserve

    Pourquoi ? Un seul conteneur suffit : c'est l'atout principal du produit.

    Écrivez le Compose, démarrez-le et vérifiez /healthz.
    Voir la correction
    services:
      openobserve:
        image: public.ecr.aws/zinclabs/openobserve:latest
        ports:
          - "5080:5080"
        environment:
          ZO_DATA_DIR: /data
          ZO_ROOT_USER_EMAIL: root@example.com
          ZO_ROOT_USER_PASSWORD: Complexpass#123
        volumes:
          - o2-data:/data
    
    volumes:
      o2-data:
    docker compose up -d
    curl http://localhost:5080/healthz
  2. 2. Envoyer des événements

    Pourquoi ? Aucun schéma n'est à déclarer : le flux naît à la première écriture.

    Envoyez trois événements dans le flux commandes, et lisez le corps de la réponse.
    Voir la correction
    curl -u 'root@example.com:Complexpass#123' \
      -H 'Content-Type: application/json' \
      http://localhost:5080/api/default/commandes/_json \
      -d '[
        {"level":"error","service":"paiement","message":"timeout vers la banque","duree_ms":3100},
        {"level":"info","service":"paiement","message":"ok","duree_ms":120},
        {"level":"info","service":"panier","message":"ok","duree_ms":40}
      ]'
    # {"code":200,"status":[{"name":"commandes","successful":3,"failed":0}]}
  3. 3. Les retrouver en SQL

    Pourquoi ? La requête demande toujours une période, en microsecondes.

    Calculez le nombre d'événements et la durée moyenne par service. Patientez quelques secondes si le résultat est vide.
    Voir la correction
    NOW=$(date +%s)
    curl -s -u 'root@example.com:Complexpass#123' \
      -H 'Content-Type: application/json' \
      http://localhost:5080/api/default/_search \
      -d "{\"query\":{
            \"sql\":\"SELECT service, count(*) AS n, avg(duree_ms) AS moy FROM commandes GROUP BY service ORDER BY n DESC\",
            \"start_time\":$(( (NOW-3600)*1000000 )),
            \"end_time\":$(( (NOW+60)*1000000 )),
            \"from\":0,\"size\":10}}" | jq .hits
  4. 4. Observer les transformations

    Pourquoi ? Ces règles expliquent bien des requêtes qui ne renvoient rien.

    Envoyez [{"Level":"INFO","http":{"status":500}}] dans un flux essai, puis retrouvez-le dans l'interface. Comment s'appellent désormais les champs ?
    Voir la correction

    Les champs deviennent level (minuscules) et http_status (aplati).

    curl -u 'root@example.com:Complexpass#123' -H 'Content-Type: application/json' \
      http://localhost:5080/api/default/essai/_json -d '[{"Level":"INFO","http":{"status":500}}]'

Niveau de difficulté : ●○○○○ (1/5)

Mon suivi

  • ⏱ Durée estimée : ≈ 30 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Poser une question

Articles recommandés

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

Installer OpenObserve avec Docker Compose ou le binaire, le configurer par ses variables ZO_*, en...

Envoyer ses logs, métriques et traces vers OpenObserve

Les points de réception d'OpenObserve : JSON, bulk, OTLP avec le Collector OpenTelemetry, Prometh...

Explorer ses données dans OpenObserve : SQL, PromQL et VRL

Chercher en SQL, interroger les métriques en PromQL, optimiser un flux (index, partitions, rétent...

OpenObserve : architecture et concepts

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

Stocker et interroger la télémétrie directement dans ClickHouse

Envoyer logs et traces dans ClickHouse avec l'exportateur OpenTelemetry, comprendre le schéma des...

OpenObserve en production : bonnes pratiques

Choisir son mode de déploiement, organiser ses flux, sécuriser, sauvegarder et superviser OpenObs...

Ingérer des métriques dans VictoriaMetrics : scraping, vmagent et remote write

Toutes les façons d'alimenter VictoriaMetrics : remote write depuis Prometheus, scraping intégré,...

Alertes et pipelines dans OpenObserve

Créer un modèle, une destination et une alerte, éviter le blocage SSRF des webhooks et traiter le...

Projet fil rouge : les quatre signaux de l'OpenTelemetry Demo dans la stack Grafana

Un projet fil rouge qui traverse les formations d'observabilité : déployer l'OpenTelemetry Demo, ...

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 !