Tambah Metrik
Logfire Pirang Ini dapat digunakan untuk mengumpulkan metrik dari aplikasi Anda dan mengirimkannya ke metrik backend.
Mari kita lihat cara membuat dan menggunakan metrik dalam sebuah aplikasi.
import logfire
# 创建计数器指标
messages_sent = logfire.metric_counter('messages_sent')
# 增加计数器
def send_message():
messages_sent.add(1)
tipe indikator¶
Metrik adalah cara yang bagus untuk merekam nilai numerik di mana Anda ingin melihat agregat data (misalnya, dari waktu ke waktu) daripada nilai individu.
balasan¶
Metrik Counter sangat berguna ketika Anda ingin mengukur frekuensi atau jumlah kejadian suatu peristiwa atau keadaan tertentu dalam suatu aplikasi.
Anda dapat menggunakan metrik ini untuk menghitung yang berikut:
-
Jumlah pengecualian yang tertangkap.
-
Jumlah permintaan yang diterima.
-
Jumlah proyek yang diproses.
Untuk membuat indikator penghitung, gunakan fitur 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)
-
Parameter
unitadalah opsional, tetapi yang terbaik adalah menentukannya. Ini harus menjadi string yang mewakili unit penghitung. Jika metrik adalah_unitless_, Anda dapat menggunakan“1”。.
Anda dapat membaca lebih lanjut tentang metrik kontra dalam dokumentasi OpenTelemetry.
Histogram¶
Metrik histogram sangat berguna ketika Anda ingin mengukur distribusi satu set nilai.
Anda dapat menggunakan metrik ini untuk mengukur hal-hal berikut:
-
Durasi permintaan.
-
Ukuran file.
-
Jumlah item dalam daftar.
Untuk membuat indikator histogram, gunakan fitur logfire.metric_histogram :
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 Parameter adalah opsional, tetapi yang terbaik adalah menentukannya. Itu harus berupa string yang mewakili unit histogram.
Anda dapat membaca lebih lanjut tentang metrik histogram dalam dokumentasi OpenTelemetry.
Penghitung atas dan bawah¶
"Up-Down Counter" adalah metrik counter yang memungkinkan operasi kenaikan (atas) dan penurunan (bawah). Tidak seperti counter reguler yang hanya memungkinkan peningkatan, counter up-down dapat meningkat atau menurun tergantung pada peristiwa atau keadaan yang akan dilacak.
Anda dapat menggunakan metrik ini untuk mengukur hal-hal berikut:
-
Jumlah koneksi aktif.
-
Jumlah item dalam antrian.
-
Jumlah pengguna online.
Untuk membuat indikator penghitung atas dan bawah, gunakan fitur 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)
-
unitParameter adalah opsional, tetapi yang terbaik adalah menentukannya. Ini harus berupa string yang mewakili unit penghitung atas dan bawah. Jika metrik adalah_Unit_Ya, Anda dapat menggunakan“1”。
Anda dapat membaca lebih lanjut tentang metrik Up-Down Counter dalam dokumentasi OpenTelemetry.
Pengukur¶
Metrik pengukur sangat berguna ketika Anda ingin mengukur nilai saat ini dari keadaan atau peristiwa tertentu dalam aplikasi Anda. Tidak seperti metrik kontra, metrik meter tidak mengumpulkan nilai dari waktu ke waktu.
Anda dapat menggunakan metrik ini untuk mengukur hal-hal berikut:
- Suhu saat ini.
-
Penggunaan memori saat ini.
-
Jumlah koneksi aktif saat ini.
-
Jumlah pengguna online saat ini.
Untuk membuat metrik meteran, gunakan fitur logfire.metric_gauge :
import logfire
temperature = logfire.metric_gauge(
'temperature',
unit='°C',
description='Temperature'
)
def set_temperature(value: float):
temperature.set(value)
Anda dapat membaca lebih lanjut tentang metrik Gauge dalam dokumentasi OpenTelemetry.
Indikator panggilan balik¶
Metrik panggilan balik atau metrik yang dapat diamati adalah cara untuk membuat metrik yang diperbarui secara otomatis berdasarkan interval waktu.
balasan panggilan balik¶
Untuk membuat indikator counter callback, gunakan fitur 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',
)
Anda dapat membaca lebih lanjut tentang metrik kontra dalam dokumentasi OpenTelemetry.
meter panggilan balik¶
Metrik meter sangat berguna ketika Anda ingin mengukur nilai saat ini dari keadaan atau peristiwa tertentu dalam aplikasi. Tidak seperti metrik kontra, metrik meter tidak mengumpulkan nilai dari waktu ke waktu.
Untuk membuat indikator panggilan balik meter, gunakan logfire.metric_gauge_callback Fungsi:
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',
)
Anda dapat membaca lebih lanjut tentang metrik Gauge dalam dokumentasi OpenTelemetry.
Panggilan balik balik balik atas-bawah¶
Ini adalah versi panggilan balik dari indikator penghitung atas dan bawah .
Untuk membuat panggilan balik balik balik penghitung atas dan bawah, gunakan fitur 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',
)
Anda dapat menemukannya di Dokumentasi OpenTelemetri Baca lebih lanjut tentang indikator Up-Down Counter.
Metrik Sistem¶
Secara default, LogfireMetrik sistem tidak dikumpulkan.
Untuk mengaktifkan indikator, Anda hanya perlu menginstal logfire[system-metrics] Ekstra:
pip install 'logfire[系统指标]'
rye add logfire -E 系统指标
poetry add 'logfire[系统指标]'
Jika logfire[system-metrics] ekstra dipasang, Logfireakan secara otomatis mengumpulkan metrik sistem.
Untuk mempelajari lebih lanjut tentang metrik sistem mana yang dikumpulkan, lihat metrik sistem dokumentasi.
[Sistem-metrik]:.. /.. / integrasi /system_metrics.md
本文总阅读量次