RousselTMLEARNING

Artículo · OpenObserve: del descubrimiento a la maestría

Explorar los datos: SQL, PromQL y VRL

Este artículo está disponible en francés.

1. Chercher en SQL #

Le langage commun aux logs et aux traces.

Les requêtes utiles #

Toutes ces requêtes ont été exécutées sur OpenObserve 1.1.2.

-- Filtrer sur un champ
SELECT * FROM commandes WHERE level = 'error'

-- Chercher du texte dans un champ
SELECT * FROM commandes WHERE str_match(message, 'banque')

-- Chercher dans tous les champs de recherche plein texte
SELECT * FROM commandes WHERE match_all('banque')

-- Agréger
SELECT service, count(*) AS n, avg(duree_ms) AS moy
FROM commandes GROUP BY service ORDER BY n DESC

-- Courbe par minute
SELECT histogram(_timestamp, '1 minute') AS t, count(*) AS n
FROM commandes GROUP BY t ORDER BY t

-- Percentile
SELECT approx_percentile_cont(duree_ms, 0.95) AS p95 FROM commandes
FonctionUsage
str_match(champ, 'x')Le champ contient x
match_all('x')Recherche dans les champs plein texte du flux
histogram(_timestamp, '1 minute')Découpe le temps pour les courbes
approx_percentile_cont(c, 0.95)Percentile approché

2. PromQL pour les métriques #

Réutiliser ses requêtes Prometheus.

Une API compatible #

OpenObserve expose l'API de requête de Prometheus sous /api/<organisation>/prometheus. Grafana peut donc s'y connecter comme à un Prometheus.

curl -s -u 'root@example.com:Complexpass#123' \
  'http://localhost:5080/api/default/prometheus/api/v1/query?query=cpu_usage' | jq .data.result

3. Optimiser un flux #

Index, partitions et rétention.

Les réglages d'un flux #

curl -u 'root@example.com:Complexpass#123' -X PUT \
  -H 'Content-Type: application/json' \
  'http://localhost:5080/api/default/streams/commandes/settings?type=logs' \
  -d '{
    "data_retention": 30,
    "full_text_search_keys": {"add": ["message"]},
    "index_fields": {"add": ["service"]},
    "partition_keys": {"add": [{"field": "level", "types": "value"}]}
  }'
RéglageEffetPour quels champs ?
data_retentionDurée de conservation du flux, en jours–
full_text_search_keysChamps couverts par match_allLe message
index_fieldsIndex sur un champ recherchéIdentifiant, service
partition_keysDécoupe les fichiers par valeurFaible cardinalité : niveau, environnement
Partitionner sur un champ très varié (identifiant de requête, utilisateur) crée une multitude de petits fichiers et ralentit tout. Réservez les partitions aux champs ayant peu de valeurs distinctes.

4. Transformer avec VRL #

Fonctions à la lecture ou à l'écriture.

Une fonction #

Les fonctions s'écrivent en VRL, le langage de Vector. Elles peuvent servir à la lecture, ou être appliquées à l'ingestion via un pipeline. Une fonction doit se terminer par ., qui renvoie l'événement.

curl -u 'root@example.com:Complexpass#123' \
  -H 'Content-Type: application/json' \
  http://localhost:5080/api/default/functions \
  -d '{"name":"marque_grave","function":".grave = true\n.","params":"row","transType":0}'
# {"code":200,"message":"Function saved successfully"}

Pour l'essayer à la lecture, passez-la encodée en base64 dans query_fn : le champ grave apparaît alors dans les résultats, sans être stocké.

5. Tableaux de bord et traces #

L'exploration dans l'interface.

Tableaux de bord #

Les panneaux s'appuient sur une requête SQL ou PromQL, avec des variables pour filtrer par service ou environnement. Les tableaux de bord s'exportent en JSON : versionnez-les.

Traces #

Le menu Traces liste les requêtes et affiche leur chronologie. Pour passer d'un log à sa trace, faites porter trace_id à vos logs : le SDK OpenTelemetry le fait pour vous si l'appel se déroule dans une trace.

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

Mi seguimiento

  • ⏱ Duración estimada : ≈ 8 min

Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión

💬 Hacer una pregunta

Artículos recomendados

Grafana : maîtriser les requêtes (PromQL, LogQL, SQL et expressions)

Construire des requêtes efficaces dans Grafana : éditeur de requêtes, Query Inspector, PromQL, Lo...

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...

Utiliser SigNoz : APM, traces, logs, dashboards et alertes

Exploiter SigNoz au quotidien : vue APM des services, explorateur de traces et de logs, query bui...

OpenObserve : architecture et concepts

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

Envoyer ses logs, métriques et traces vers OpenObserve

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

Transformer avec VRL et tester ses pipelines Vector

Le langage VRL (Vector Remap Language) : analyse de logs (JSON, regex, syslog), gestion des erreu...

Alertes et pipelines dans OpenObserve

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

Dynatrace : Différences entre SQL Modifications, SQL Queries or Procedures, et SQL Transactions

Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...

Indexer et chercher dans OpenSearch : mapping, DSL, PPL et SQL

Déclarer un modèle d'index, indexer avec bulk, chercher avec le Query DSL, agréger et interroger ...

Apoyar

♥ APOYAR

Apoya RousselTM Learning

Los cursos, artículos, prácticas y certificados siguen siendo gratuitos y sin publicidad intrusiva. Una contribución libre, por el importe que elijas, financia el alojamiento, los entornos de prácticas y nuevos contenidos.

Contribuir con PayPal Importe libre · tarjeta o cuenta PayPalMás información
QR code PayPal
O escanea este código QR con tu teléfono

¡Gracias, cada contribución cuenta!