Как использовать 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:
#!/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 в правом верхнем углу, затем нажмите на трейс для просмотра деталей):
