In meinem vorherigen Artikel über Pydantic habe ich Ihnen in einem der Codebeispiele Logfire vorgestellt, eine Observability-Plattform, die entwickelt wurde, um Entwicklern Einblicke in Python-Anwendungen zu bieten. In diesem Artikel erhalten Sie einen tiefen Einblick in Logfire und seine Fähigkeiten, die letztendlich Ihre Observability-Reise vom Tracing über das Debugging bis hin zum Logging vereinfachen werden.
Logfire ist eine innovative Observability-Plattform, entwickelt von den Machern von Pydantic, die darauf abzielt, Entwicklern leistungsstarke Einblicke in ihre Python-Anwendungen zu bieten. Auf den gleichen Prinzipien aufbauend, die Pydantic erfolgreich gemacht haben, soll Logfire die Implementierung und das Verständnis von Observability erleichtern und dabei tiefe Einblicke in das Anwendungsverhalten bieten.
Wichtige Funktionen
Nahtlose Integration
Logfire integriert sich nahtlos in bestehende Python-Projekte und erfordert nur minimale Einrichtung. Mit nur wenigen Codezeilen können Entwickler wertvolle Daten zur Leistungs- und Verhaltensanalyse ihrer Anwendung sammeln.
Pydantic-Integration
Logfire bietet eine außergewöhnliche Integration mit Pydantic-Modellen. Dies ermöglicht es Entwicklern, beispiellose Einblicke in die Datenvalidierung und die Verwendung von Modellen in ihren Anwendungen zu erhalten.
Automatische Instrumentierung
Logfire kann beliebte Bibliotheken und Frameworks automatisch instrumentieren, was den Bedarf an manuellem Logging und Tracing reduziert. Diese Funktion spart Zeit und gewährleistet eine umfassende Abdeckung des Anwendungsverhaltens.
OpenTelemetry-kompatibel
Auf Basis von OpenTelemetry gewährleistet Logfire Kompatibilität mit Branchenstandards und ermöglicht flexible Datenexportoptionen.
Voraussetzungen
- Melden Sie sich bei Logfire an.
- Befolgen Sie die Anweisungen, um Ihr Konto zu erstellen. Dieses Konto hilft Ihnen, Ihre Projekte zu organisieren.
- Von Ihrer Organisation aus klicken Sie auf Neues Projekt, um Ihr erstes Projekt zu erstellen.
Erste Schritte
Um mit Logfire zu beginnen, befolgen Sie diese einfachen Schritte:
Schritt 1. Installieren Sie das Logfire-Paket mit dem folgenden Befehl. Wenn Sie Jupyter Notebook verwenden, führen Sie !pip install logfire
aus.
pip install logfire
Schritt 2. Authentifizieren Sie sich beim Logfire-Dienst. Dies öffnet einen Browser und fordert Logfire-Anmeldeinformationen an.
logfire auth
3. Konfigurieren Sie Logfire in Ihrer Anwendung. Nach der Installation des Pakets müssen Sie die untenstehenden Befehle verwenden, um Logfire zu konfigurieren.
import logfire
logfire.configure()
Sie können die Schritte als Teil Ihres Projekt-Setups befolgen:
Grundlegende Verwendung
Ein Span in Logfire ist ein wesentlicher Baustein einer Spur. Sie können einen Span mit logfire.span definieren. Im folgenden Beispiel setzt der äußere Span das Thema – den Geburtstag des Benutzers. Der Benutzer wird nach seinem Geburtstag gefragt und über das Terminal oder die Eingabeaufforderung erfasst. Der Raum erfasst den eingegebenen Geburtstag des Benutzers.
Hier ist ein einfaches Beispiel, wie man Logfire für die manuelle Verfolgung verwendet:
import logfire
from datetime import date
logfire.configure()
logfire.info('Hello, {name}!', name='world')
with logfire.span('Asking the user their {question}', question='age'):
user_input = input('How old are you [YYYY-mm-dd]? ')
dob = date.fromisoformat(user_input)
logfire.debug('{dob=} {age=!r}', dob=dob, age=date.today() - dob)
Wenn Sie die DEBUG-Ausgabe nicht sehen, klicken Sie auf Filter lokale Daten –> Ebenen –> debug.
Pydantic Integration
Wie in meinem vorherigen Artikel erläutert, besteht die Kernfunktionalität von Pydantic in der Datenvalidierung. Es verwendet Python-Typenhinweise, um automatisch die Struktur und Typen von Daten zu validieren. Wenn Sie ein Pydantic-Modell definieren, wird jedes Feld mit seinem erwarteten Typ annotiert. Pydantic stellt dann sicher, dass alle Daten, die diesen Feldern zugewiesen werden, den angegebenen Typen entsprechen.
Die Integration von Logfire mit Pydantic ist besonders leistungsstark. Hier ist, wie Sie es verwenden können, um Pydantic-Modellvalidierungen zu protokollieren:
from datetime import date
import logfire
from pydantic import BaseModel
logfire.configure()
logfire.instrument_pydantic()
class User(BaseModel):
name: str
country_code: str
dob: date
User(name='Anne', country_code='USA', dob='2000-01-01')
User(name='Ben', country_code='USA', dob='2000-02-02')
User(name='Charlie', country_code='GBR', dob='1990-03-03')
Diese Konfiguration protokolliert automatisch Details zu allen Pydantic-Modellvalidierungen und bietet wertvolle Einblicke in die Datenverarbeitung innerhalb Ihrer Anwendung.
Framework-Integrationen
Logfire bietet Integrationen mit beliebten Python-Frameworks und -Bibliotheken. Für das folgende Python-Codebeispiel müssen Sie den OpenAI-API-Schlüssel bereitstellen und die erforderlichen Pakete installieren (FASTAPI, instructor, OpenAI usw.).
Zunächst einmal ist FastAPI ein Python-Webframework, das Entwicklern hilft, API (Application Programming Interfaces) zu erstellen. FastAPI ist bekannt für seine Skalierbarkeit, Benutzerfreundlichkeit und hohe Leistung.
Instructor ist ein Python-Paket, das Ihnen dabei hilft, strukturierte Daten wie JSON aus der Ausgabe von LLMs einfach zu extrahieren.
Hier ist ein Beispiel, wie Sie Logfire mit FastAPI, der OpenAI API und Instructor integrieren können:
from fastapi import FastAPI
from openai import AsyncOpenAI
import os
import instructor
import logfire
from pydantic import BaseModel
app = FastAPI()
openai_client = AsyncOpenAI(
api_key=os.environ.get("OPENAI_API_KEY"))
logfire.configure()
logfire.instrument_pydantic()
logfire.instrument_openai(openai_client)
logfire.instrument_fastapi(app)
client = instructor.from_openai(openai_client)
class UserData(BaseModel):
query: str
class UserDetail(BaseModel):
name: str
age: int
post("/user", response_model=UserDetail) .
async def endpoint_function(data: UserData) -> UserDetail:
user_detail = await client.chat.completions.create(
model="gpt-3.5-turbo",
response_model=UserDetail,
messages=[
{"role": "user", "content": f"Extract: `{data.query}`"},
],
)
return user_detail
Diese Konfiguration bietet umfassendes Logging für FastAPI-Anfragen, OpenAI API-Aufrufe und Pydantic-Modellvalidierungen und bietet einen ganzheitlichen Blick auf das Verhalten Ihrer Anwendung.
Fazit
Logfire stellt einen bedeutenden Schritt nach vorn dar, um die Beobachtbarkeit für Python-Entwickler zugänglich und leistungsfähig zu machen. Logfire ermöglicht es Entwicklern, ihre Anwendungen besser zu verstehen und zu optimieren, indem sie Benutzerfreundlichkeit mit tiefen Einblicken kombiniert. Egal, ob Sie an einem kleinen Projekt oder einer groß angelegten Anwendung arbeiten, Logfire bietet die Werkzeuge, um wertvolle Einblicke in das Verhalten und die Leistung Ihres Codes zu gewinnen.
Bitte zeigen Sie Ihre Zuneigung mit einem Like und teilen Sie es mit Ihrer Entwickler-Community.
Source:
https://dzone.com/articles/logfire-uncomplicated-observability-for-python-app