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)
-
De parameter
unitis 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)
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)
-
De parameter
unitis 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
本文总阅读量次