Как использовать Logfire с бэкендом OpenObserve

В нашем предыдущем посте Пример Logfire, который подключается к SigNoz вместо Logfire мы показали, как использовать Logfire с SigNoz в качестве бэкенда. В этом посте мы покажем, как настроить Logfire для отправки журналов в бэкенд OpenObserve.

См. Установка OpenObserve за 5 минут с Docker + Traefik для нашей рекомендуемой настройки OpenObserve.

Сначала настройте OTLP для OpenObserve, перейдя на https://openobserve.mydomain.com/web/ingestion/recommended/traces?org_identifier=default.

Вам нужны как HTTP Endpoint:, так и заголовок Authorization:.

Вот полный пример кода для отправки журналов из Logfire в OpenObserve:

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

# Настройка переменных окружения
os.environ['OTEL_EXPORTER_OTLP_ENDPOINT'] = 'https://openobserve.mydomain.com/api/default' # Вставьте "HTTP Endpoint" OpenObserve здесь
os.environ['OTEL_EXPORTER_OTLP_HEADERS'] = 'Authorization=Basic W280PMn2Y6rnxZURbS1XEQONEZ0GtKpErE6A+sae' # Вставьте заголовок "Authorization" здесь

# Настройка Logfire
logfire.configure(
    service_name='order-processing-service',
    send_to_logfire=False,
)

# Пример функции с вложенными спанами
def process_order(order_id: str, user_id: str):
    with logfire.span('validate_order'):
        # Имитация проверки
        print(f"Проверка заказа {order_id} для пользователя {user_id}")

    with logfire.span('process_payment'):
        # Имитация обработки платежа
        print(f"Обработка платежа для заказа {order_id}")

        with logfire.span('call_payment_gateway'):
            # Пример вложенного спана
            print("Вызов API платёжного шлюза")

    with logfire.span('fulfill_order'):
        # Имитация выполнения заказа
        print(f"Выполнение заказа {order_id}")

# Основное выполнение
if __name__ == '__main__':
    with logfire.span('main'):
        process_order('12345', 'user-67890')

Так это выглядит в OpenObserve (Traces в левом меню, затем Run Query в правом верхнем углу, затем нажмите на трейс для просмотра деталей):

OpenObserve Trace Example


Check out similar posts by category: Monitoring, Python