Este artículo está disponible en francés.
1. Installer OpenObserve #
Binaire ou Docker Compose.
Avec Docker Compose #
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
# {"status":"ok"}L'interface est sur http://localhost:5080. Les identifiants de l'utilisateur racine ne servent qu'au premier démarrage : les changer ensuite dans le fichier ne change pas le mot de passe.
Avec le binaire #
ZO_ROOT_USER_EMAIL=root@example.com ZO_ROOT_USER_PASSWORD='Complexpass#123' ./openobserveErreurGLIBC_2.xx not found? Nous l'avons rencontrée sur Debian 12. Prenez l'archive-linux-amd64-musl, qui ne dépend pas de la version de la glibc.
2. Les variables à connaître #
Tout se configure par l'environnement.
Réglages principaux #
| Variable | Rôle | Défaut |
|---|---|---|
ZO_DATA_DIR | Dossier local des données | ./data/openobserve/ |
ZO_LOCAL_MODE | Nœud unique | true |
ZO_LOCAL_MODE_STORAGE | disk ou s3 | disk |
ZO_COMPACT_DATA_RETENTION_DAYS | Rétention globale, 3 jours minimum | 3650 |
ZO_INGEST_ALLOWED_UPTO | Âge maximal des données acceptées, en heures | 5 |
ZO_PAYLOAD_LIMIT | Taille maximale d’une requête | 209715200 |
ZO_NODE_ROLE | Rôles du nœud | all |
ZO_TELEMETRY | Télémétrie anonyme vers l’éditeur | true |
Stocker dans S3 ou MinIO #
En mode local, on peut déjà sortir les données du disque. Le dossier local garde alors le WAL et les fichiers temporaires.
ZO_LOCAL_MODE: "true"
ZO_LOCAL_MODE_STORAGE: s3
ZO_S3_SERVER_URL: http://minio:9000
ZO_S3_REGION_NAME: us-east-1
ZO_S3_BUCKET_NAME: openobserve
ZO_S3_ACCESS_KEY: minioadmin
ZO_S3_SECRET_KEY: minioadmin
ZO_S3_PROVIDER: minio3. Première ingestion #
Envoyer et retrouver des événements.
Envoyer #
Le chemin est toujours /api/<organisation>/<flux>/_json. Le flux est créé s'il n'existe pas.
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}]}Interroger #
L'API de recherche attend du SQL et une période en microsecondes.
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 .hitsCe que l'ingestion transforme #
Ces résultats ont été observés en envoyant {"Level":"INFO","http":{"status":500},"Tags":["a","b"]} :
| Envoyé | Stocké | Conséquence |
|---|---|---|
Level | level | Les noms passent en minuscules |
http.status (objet imbriqué) | http_status | Les objets sont aplatis avec _ |
Tags: ["a","b"] | Chaîne "[\"a\",\"b\"]" | Un tableau devient du texte JSON |
Le piège des données anciennes : un événement de plus de 5 heures est refusé, tout en renvoyant un code HTTP 200. Le détail est dans la réponse :"successful":0,"failed":1,"error":"Too old data...". Lisez donc le corps de la réponse pour vos reprises d'historique, et augmentezZO_INGEST_ALLOWED_UPTOsi besoin.
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
Artículos recomendados
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...
Alertes et pipelines dans OpenObserve
Créer un modèle, une destination et une alerte, éviter le blocage SSRF des webhooks et traiter le...
Envoyer ses logs, métriques et traces vers OpenObserve
Les points de réception d'OpenObserve : JSON, bulk, OTLP avec le Collector OpenTelemetry, Prometh...
OpenObserve : architecture et concepts
Comprendre OpenObserve : stockage Parquet, modes de déploiement, rôles (router, ingester, querier...
OpenObserve en production : bonnes pratiques
Choisir son mode de déploiement, organiser ses flux, sécuriser, sauvegarder et superviser OpenObs...
Installer Grafana Tempo (Docker Compose, binaire et Helm)
Installer Grafana Tempo : configuration tempo.yaml, Docker Compose avec Grafana et Prometheus, po...
Installer Zabbix et superviser son premier hôte
Installer Zabbix avec Docker Compose (serveur, PostgreSQL, interface web), installer l'agent 2 su...
Ingestion Elasticsearch : Bulk API, ingest pipelines, enrich et reindex
Ingérer et transformer des données dans Elasticsearch : Bulk API, ingest pipelines et processeurs...
Les Data Sources dans Grafana : Connectez et unifiez vos données
Apprenez à étendre les capacités de Grafana via les Data Sources. Découvrez les plugins essentiel...