Ga naar inhoud

Metrische gegevens toevoegen

Pydantisch Logvuur Het kan worden gebruikt om statistieken van uw applicatie te verzamelen en deze naar de metrische backend te sturen.

Laten we eens kijken hoe u statistieken in een applicatie kunt maken en gebruiken.

import logfire

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

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

type indicator

Metrische gegevens zijn een geweldige manier om numerieke waarden vast te leggen waarbij u gegevensaggregaten (bijvoorbeeld in de tijd) wilt zien in plaats van individuele waarden.

teller

De tellermetriek is vooral handig wanneer u de frequentie of het aantal voorvallen van een bepaalde gebeurtenis of toestand in een toepassing wilt meten.

U kunt deze statistiek gebruiken om het volgende te berekenen:

  • Het aantal gevangen uitzonderingen.

  • Aantal ontvangen verzoeken.

  • Aantal verwerkte projecten.

Om een tellerindicator te maken, gebruikt u de logfire.metric_counter -functie:

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. De parameter unit is optioneel, maar u kunt deze het beste specificeren. Het moet een tekenreeks zijn die de eenheden van de teller vertegenwoordigt. Als de metriek_unitless_is, kunt u “1”。 gebruiken.

U kunt meer lezen over tellerstatistieken in de OpenTelemetry-documentatie.

Histogram

Histogrammetrieken zijn vooral handig wanneer u de verdeling van een set waarden wilt meten.

U kunt deze statistiek gebruiken om het volgende te meten:

  • De duur van het verzoek.

  • Bestandsgrootte.

  • Het aantal items in de lijst.

Gebruik de logfire.metric_histogram -functie om een histogram-indicator te maken:

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 De parameter is optioneel, maar het is het beste om deze te specificeren. Het moet een tekenreeks zijn die de eenheid van het histogram vertegenwoordigt.

U kunt meer lezen over histogramstatistieken in de OpenTelemetry-documentatie.

Boven- en ondertellers

"Up-Down Counter" is een tellermetriek die increment (up) en decrement (down) bewerkingen mogelijk maakt. In tegenstelling tot reguliere tellers die alleen increments toestaan, kunnen up-down tellers stijgen of dalen, afhankelijk van de gebeurtenis of staat die moet worden gevolgd.

U kunt deze statistiek gebruiken om het volgende te meten:

  • Aantal actieve verbindingen.

  • Het aantal items in de wachtrij.

  • Aantal online gebruikers.

Gebruik de logfire.metric_up_down_counter logfire.metric_up_down_counter -functie om bovenste en onderste tellerindicatoren te maken:

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. De parameter unit is optioneel, maar u kunt deze het beste specificeren. Het moet een tekenreeks zijn die de eenheden van de bovenste en onderste tellers vertegenwoordigt. Als de metriek_unitless_is, kunt u “1”。 gebruiken

U kunt meer lezen over de Up-Down Counter-statistiek in de OpenTelemetry-documentatie.

Meter

Meterstatistieken zijn vooral handig wanneer u de huidige waarde van een bepaalde staat of gebeurtenis in uw toepassing wilt meten. In tegenstelling tot tellerstatistieken, verzamelen meterstatistieken geen waarden in de tijd.

U kunt deze statistiek gebruiken om het volgende te meten:

  • De huidige temperatuur.
  • Huidig geheugengebruik.

  • Het huidige aantal actieve verbindingen.

  • Het huidige aantal online gebruikers.

Gebruik de logfire.metric_gauge -functie om meterstatistieken te maken:

import logfire

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

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

U kunt meer lezen over Gauge-statistieken in de OpenTelemetry-documentatie.

Terugbelindicator

Terugbelstatistieken of waarneembare statistieken zijn een manier om statistieken te maken die automatisch worden bijgewerkt op basis van tijdsintervallen.

terugbellen tegengaan

Gebruik om een teller-terugbelstatistiek te maken logfire.metric_counter_callback Functie:

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',
)

U kunt meer lezen over tellerstatistieken in de OpenTelemetry-documentatie.

meter terugbellen

Meterstatistieken zijn vooral handig wanneer u de huidige waarde van een bepaalde staat of gebeurtenis in een toepassing wilt meten. In tegenstelling tot tellerstatistieken, verzamelen meterstatistieken geen waarden in de tijd.

Om een meter terugbelindicator te maken, gebruikt u de functie logfire.metric_gauge_callback :

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',
)

U kunt meer lezen over Gauge-statistieken in de OpenTelemetry-documentatie.

Omhoog-Omlaag teller callback

Dit is de callback versie van de bovenste en onderste teller indicator.

Gebruik de functie logfire.metric_up_down_counter_callback om callbacks voor de bovenste en onderste teller te maken:

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',
)

Je kunt het vinden op OpenTelemetrie Documentatie Lees meer over de Up-Down Counter indicator.

Systeemstatistieken

Standaard LogfireSysteemstatistieken worden niet verzameld.

Om indicatoren in te schakelen, hoeft u alleen te installeren logfire[system-metrics] Extra:

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

Als logfire[system-metrics] extra is geïnstalleerd, verzamelt Logfireautomatisch systeemstatistieken.

Bekijk de -systeemstatistieken-documentatie voor meer informatie over welke systeemstatistieken worden verzameld.

[System-metrics]:.. /.. / integraties /system_metrics.md


本文总阅读量次