Utiliser Logfire avec un backend OpenObserve

Dans notre article précédent Logfire example which connects to SigNoz instead of Logfire nous avons montré comment utiliser Logfire avec SigNoz comme backend. Dans cet article, nous allons démontrer comment configurer Logfire pour envoyer les logs vers un backend OpenObserve.

Voir OpenObserve 5-minute Docker + Traefik setup pour notre configuration OpenObserve recommandée.

Tout d’abord, configurez OTLP pour OpenObserve en visitant https://openobserve.mydomain.com/web/ingestion/recommended/traces?org_identifier=default.

Vous avez besoin à la fois du HTTP Endpoint : et de l’en-tête Authorization :.

Voici le code d’exemple complet pour envoyer des logs depuis Logfire vers OpenObserve :

test-openobserve.py
#!/usr/bin/env python3
import os
import logfire

# Configurer les variables d'environnement
os.environ['OTEL_EXPORTER_OTLP_ENDPOINT'] = 'https://openobserve.mydomain.com/api/default' # Insérer le "HTTP Endpoint" OpenObserve ici
os.environ['OTEL_EXPORTER_OTLP_HEADERS'] = 'Authorization=Basic W280PMn2Y6rnxZURbS1XEQONEZ0GtKpErE6A+sae' # Insérer l'en-tête "Authorization" ici

# Configurer Logfire
logfire.configure(
    service_name='order-processing-service',
    send_to_logfire=False,
)

# Fonction d'exemple avec des spans imbriqués
def process_order(order_id: str, user_id: str):
    with logfire.span('validate_order'):
        # Simuler la validation
        print(f"Validation de la commande {order_id} pour l'utilisateur {user_id}")

    with logfire.span('process_payment'):
        # Simuler le traitement du paiement
        print(f"Traitement du paiement pour la commande {order_id}")

        with logfire.span('call_payment_gateway'):
            # Exemple de span imbriqué
            print("Appel de l'API de la passerelle de paiement")

    with logfire.span('fulfill_order'):
        # Simuler le traitement de la commande
        print(f"Traitement de la commande {order_id}")

# Exécution principale
if __name__ == '__main__':
    with logfire.span('main'):
        process_order('12345', 'user-67890')

Voici à quoi cela ressemble dans OpenObserve (Traces dans le menu de gauche, puis Run Query en haut à droite, puis cliquez sur la trace pour voir les détails) :

OpenObserve Trace Example


Check out similar posts by category: Monitoring, Python