Zum Inhalt

Metriken hinzufügen

Pydantic Logfirekann verwendet werden, um Metriken aus Ihrer Anwendung zu sammeln und an das Metrik-Backend zu senden.

Schauen wir uns an, wie Indikatoren in Anwendungen erstellt und verwendet werden.

import logfire

# 创建计数器指标
messages_sent = logfire.metric_counter('messages_sent')

# 增加计数器
def send_message():
    messages_sent.add(1)

Arten von Indikatoren

Indikatoren sind eine gute Möglichkeit, numerische Werte zu erfassen, bei denen Sie eine Aggregation der Daten (z. B. im Laufe der Zeit) anstelle einzelner Werte sehen möchten.

Zähler

Die Counter-Metrik ist besonders nützlich, wenn Sie die Häufigkeit oder Häufigkeit bestimmter Ereignisse oder Zustände in einer Anwendung messen möchten.

Sie können diesen Indikator verwenden, um Folgendes zu berechnen:

  • Eine ungewöhnliche Zahl von Festnahmen.

  • Anzahl der eingegangenen Forderungen.

  • Anzahl der Projekte, die bereits bearbeitet wurden.

Verwenden Sie zum Erstellen von Zählerindikatoren die Funktion logfire.metric_counter :

import logfire

counter = logfire.metric_counter(
    'exceptions',
    unit='1',  # (1)!
    description='Number of exceptions caught'
)

try:
    raise Exception('oops')
except Exception:
    counter.add(1)
  1. Das unit-Argument ist optional, es ist jedoch besser, anzugeben, dass es eine Zeichenfolge sein sollte, die die Einheit des Zählers angibt, wenn die Metrik_-unit-Einheit_ist, können Sie “1”。.

können dort OpenTelemetry-Dokumentation Lesen Sie mehr über die Indikatoren der Zähler.

Die Geißel

Der Histogramm-Indikator ist besonders nützlich, wenn Sie die Verteilung einer Reihe von Werten messen möchten.

Sie können diese Metrik verwenden, um Folgendes zu messen:

  • die Dauer der Forderung.

  • Dokumentengröße.

  • Anzahl der Punkte in der Liste.

Um einen Indikator zu erstellen, verwenden Sie bitte logfire.metric_histogram Funktion:

import logfire

histogram = logfire.metric_histogram(
    'request_duration',
    unit='ms',  # (1)!
    description='Duration of requests'
)

for duration in [10, 20, 30, 40, 50]:
    histogram.record(duration)
1.
unit Der Parameter ist optional, aber es ist besser, es anzugeben, sollte es eine Zeichenfolge sein, die die Einheiten des Histogramms darstellt.

Sie können mehr über Histogramm-Indikatoren in der OpenTelemetry Dokumentation lesen.

Zähler nach unten.

Ein "Up-Down Counter" ist ein Zählerindikator, der Schritten (oben) und Abnahmen (unten) ermöglicht Im Gegensatz zu herkömmlichen Zählern, die nur Inkremente zulassen, kann der Ober-und Unterzähler je nach Ereignis oder Zustand, den Sie verfolgen möchten, erhöht oder verringert werden.

Sie können diese Metrik verwenden, um Folgendes zu messen:

  • Anzahl der aktiven Verbindungen.

  • Anzahl der Projekte in der Gruppe.

  • Anzahl der Online-Nutzer.

Verwenden Sie zum Erstellen eines Ober-und Unterzähler-Indikators die Funktion logfire.metric_up_down_counter logfire.metric_up_down_counter :

import logfire

active_users = logfire.metric_up_down_counter(
    'active_users',
    unit='1',  # (1)!
    description='Number of active users'
)

def user_logged_in():
    active_users.add(1)

def user_logged_out():
    active_users.add(-1)
  1. Das unit-Argument ist optional, aber es ist besser, anzugeben, dass es eine Zeichenfolge sein sollte, die die Einheiten des Ober-und Unterzählers darstellt, wenn die Metrik_-unit-Einheit_ist, können Sie “1”。 verwenden.

Sie können mehr über den Up-Down Counter-Indikator in der OpenTelemetry-Dokumentation lesen.

Spurweite

Die Gauge Metrik ist besonders nützlich, wenn Sie den aktuellen Wert eines bestimmten Zustands oder Ereignisses in einer Anwendung messen möchten, im Gegensatz zu den Zählermetriken, bei denen sich die Messwerte im Laufe der Zeit nicht akkumulieren.

Sie können diese Metrik verwenden, um Folgendes zu messen:

  • Aktuelle Temperatur.
  • Aktuelle Nutzung des Speichers.

  • Anzahl der aktuellen aktiven Verbindungen.

  • Die aktuelle Anzahl der Online-Nutzer.

Verwenden Sie zum Erstellen eines Instrumentenindikators die Funktion logfire.metric_gauge :

import logfire

temperature = logfire.metric_gauge(
    'temperature',
    unit='°C',
    description='Temperature'
)

def set_temperature(value: float):
    temperature.set(value)

Sie können dort OpenTelemetry-Dokumentation Lesen Sie mehr über den Gauge-Indikator unter.

Rückgabe-Indikatoren

Callback-Indikatoren oder beobachtbare Indikatoren sind eine Methode zur Erstellung von Indikatoren, die sich automatisch anhand von Zeitintervallen aktualisieren.

Zähler zurücksetzen.

Verwenden Sie zum Erstellen einer Countdown-Callback-Metrik die Funktion logfire.metric_counter_callback :

import logfire
from opentelemetry.metrics import CallbackOptions, Observable


def cpu_time_callback(options: CallbackOptions) -> Iterable[Observation]:
    observations = []
    with open("/proc/stat") as procstat:
        procstat.readline()  # skip the first line
        for line in procstat:
            if not line.startswith("cpu"):
                break
            cpu, user_time, nice_time, system_time = line.split()
            observations.append(
                Observation(int(user_time) // 100, {"cpu": cpu, "state": "user"})
            )
            observations.append(
                Observation(int(nice_time) // 100, {"cpu": cpu, "state": "nice"})
            )
            observations.append(
                Observation(int(system_time) // 100, {"cpu": cpu, "state": "system"})
            )
    return observations

logfire.metric_counter_callback(
    'system.cpu.time',
    unit='s',
    callbacks=[cpu_time_callback],
    description='CPU time',
)

können dort OpenTelemetry-Unterlagen Lesen Sie mehr über die Indikatoren der Zähler.

Werkzeug zurücksenden.

Ein Messgerät ist besonders nützlich, wenn Sie den aktuellen Wert eines bestimmten Zustands oder Ereignisses in einer Anwendung messen möchten, im Gegensatz zu einer Zählermetrik, die im Laufe der Zeit keine Werte ansammelt.

Um einen Rückruf-Indikator zu erstellen, verwenden Sie bitte logfire.metric_gauge_callback Funktion:

import logfire


def get_temperature(room: str) -> float:
    ...


def temperature_callback(options: CallbackOptions) -> Iterable[Observation]:
    for room in ["kitchen", "living_room", "bedroom"]:
        temperature = get_temperature(room)
        yield Observation(temperature, {"room": room})


logfire.metric_gauge_callback(
    'temperature',
    unit='°C',
    callbacks=[temperature_callback],
    description='Temperature',
)

Sie können dort OpenTelemetry-Dokumentation Lesen Sie mehr über den Gauge-Indikator unter.

Up-Down-Zähler Zurück

Dies ist Nach oben Zählerindikator Rückgabe-Version.

Um eine Pull-Down - Counter-Callback - Metrik zu erstellen , verwenden Sie die Funktion [logfire.metric_up_down_counter_callback ][logfire.Logfire.metric_up_down_counter_callbacklogfire.Logfire.metric_up_down_counter_callback]:

import logfire


def get_active_users() -> int:
    ...


def active_users_callback(options: CallbackOptions) -> Iterable[Observation]:
    active_users = get_active_users()
    yield Observation(active_users, {})


logfire.metric_up_down_counter_callback(
    'active_users',
    unit='1',
    callbacks=[active_users_callback],
    description='Number of active users',
)

Weitere Informationen zum Up-Down Counter-Indikator finden Sie in der Dokumentation](https://opentelemetry.io/docs/specs/otel/metrics/api/#asynchronous-updowncounter) von[OpenTelemetry .

Systematische Messindikatoren

Logfire, siehe LogfireEs werden keine System-Indikatoren gesammelt.

Um Indikatoren zu aktivieren , müssen Sie lediglich logfire[system-metrics] extra installieren :

pip install 'logfire[系统指标]'
rye add logfire -E 系统指标
poetry add 'logfire[系统指标]'

Installieren Sie logfire[system-metrics]. extra , Logfiresammelt automatisch die System-Metriken .

Um mehr darüber zu erfahren, welche Systemmetriken gesammelt werden, sehen Sie sich bitte Systematische Indikatoren archivierung.

[ … ] metrisch :https://opentelemetry.io/docs/specs/otel/metrics/api/#counter [ histogram-metrisch ] :https://opentelemetry.io/docs/specs/otel/metrics/api/#histogram [ up-down - counter-metric ] [ up-down - counter-metric - weiter ]https://opentelemetry.io/docs/specs/otel/metrics/api/#updowncounter [ gauge-metric ] (englisch) :https://opentelemetry.io/docs/specs/otel/metrics/api/#gauge [ Gegen-Callback - Metall ] :https://opentelemetry.io/docs/specs/otel/metrics/api/#asynchronous-counter [ gauge-callback - metrisch ] :https://opentelemetry.io/docs/specs/otel/metrics/api/#asynchronous-gauge [ up-down - counter-callback - metric ] oder so ähnlich :https://opentelemetry.io/docs/specs/otel/metrics/api/#asynchronous-updowncounter [ system-metrics ] : ../integrations/system_metrics.md


本文总阅读量次