콘텐츠로 이동

메트릭 추가

피단틱 로그파이어 응용 프로그램에서 메트릭을 수집하여 메트릭 백엔드로 보내는 데 사용할 수 있습니다.

응용 프로그램에서 메트릭을 만들고 사용하는 방법을 살펴보겠습니다.

import logfire

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

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

표시기 유형

메트릭은 개별 값이 아닌 데이터 집계(예: 시간이 지남에 따라)를 보려는 수치 값을 기록하는 좋은 방법입니다.

카운터

카운터 메트릭은 응용 프로그램에서 특정 이벤트 또는 상태의 발생 빈도 또는 발생 횟수를 측정하려는 경우에 특히 유용합니다.

이 메트릭을 사용하여 다음을 계산할 수 있습니다.

  • 잡힌 예외 수.

  • 받은 요청 수.

  • 처리된 프로젝트 수.

카운터 표시기를 만들려면 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. unit 매개 변수는 선택 사항이지만 지정하는 것이 가장 좋습니다. 카운터의 단위를 나타내는 문자열이어야 합니다. 메트릭이_unitless_인 경우 “1”。 를 사용할 수 있습니다.

카운터 메트릭에 대한 자세한 내용은OpenTelemetry 설명서에서 확인할 수 있습니다.

히스토그램

히스토그램 메트릭은 값 집합의 분포를 측정할 때 특히 유용합니다.

이 메트릭을 사용하여 다음을 측정할 수 있습니다.

  • 요청 기간.

  • 파일 크기.

  • 목록의 항목 수입니다.

히스토그램 표시기를 만들려면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)
1.
unit 매개 변수는 선택 사항이지만 지정하는 것이 가장 좋습니다. 히스토그램의 단위를 나타내는 문자열이어야 합니다.

히스토그램 메트릭에 대한 자세한 내용은OpenTelemetry 문서에서 확인할 수 있습니다.

상부 및 하부 카운터

"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. unit 매개 변수는 선택 사항이지만 지정하는 것이 가장 좋습니다. 위쪽 및 아래쪽 카운터의 단위를 나타내는 문자열이어야 합니다. 메트릭이_단위_예, 사용할 수 있습니다 “1”。

에서 찾을 수 있습니다 OpenTelemetry 설명서업다운 카운터 표시기에 대해 자세히 알아보십시오.

게이지

게이지 메트릭은 응용 프로그램에서 특정 상태 또는 이벤트의 현재 값을 측정하려는 경우 특히 유용합니다. 카운터 메트릭과 달리 미터 메트릭은 시간이 지남에 따라 값이 누적되지 않습니다.

이 메트릭을 사용하여 다음을 측정할 수 있습니다.

  • 현재 온도.
  • 현재 메모리 사용량.

  • 현재 활성 연결 수입니다.

  • 현재 온라인 사용자 수입니다.

미터 메트릭을 만들려면 logfire.metric_gauge기능:

import logfire

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

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

게이지 메트릭에 대한 자세한 내용은OpenTelemetry 설명서에서 확인할 수 있습니다.

콜백 표시기

콜백 메트릭 또는 관찰 가능한 메트릭은 시간 간격에 따라 자동으로 업데이트되는 메트릭을 만드는 방법입니다.

카운터 콜백

카운터 콜백 메트릭을 생성하려면 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',
)

카운터 메트릭에 대한 자세한 내용은OpenTelemetry 문서에서 확인할 수 있습니다.

미터 콜백

메터 메트릭은 응용 프로그램에서 특정 상태 또는 이벤트의 현재 값을 측정하려는 경우 특히 유용합니다. 카운터 메트릭과 달리 미터 메트릭은 시간이 지남에 따라 값이 누적되지 않습니다.

미터 콜백 표시기를 만들려면 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',
)

게이지 메트릭에 대한 자세한 내용은OpenTelemetry 설명서에서 확인할 수 있습니다.

업다운 카운터 콜백

이것은상부 및 하부 카운터 표시기의 콜백 버전입니다.

상위 및 하위 카운터 콜백을 생성하려면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',
)

에서 찾을 수 있습니다 OpenTelemetry 설명서업다운 카운터 표시기에 대해 자세히 알아보십시오.

시스템 메트릭

기본적으로 Logfire시스템 메트릭이 수집되지 않습니다.

표시기를 사용하려면 설치만 하면 됩니다. logfire[system-metrics] 추가:

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

logfire[system-metrics] 추가가 설치된 경우 Logfire는 자동으로 시스템 메트릭을 수집합니다.

수집되는 시스템 메트릭에 대해 자세히 알아보려면시스템 메트릭설명서를 확인하십시오.


本文总阅读量次