Python and FastAPI structured logging로 이벤트 전송 및 확인
제어된 애플리케이션 경계에서 Python and FastAPI structured logging를 사용하고, 이벤트 계약을 작게 유지하고, 집계 뷰를 구축하기 전에 알려진 결과를 확인하세요.
- 1
결과를 선택하세요
Python API 모니터링
- 2
계약 정의
route_template, 방법 및 status_code
- 3
결과에서 방출
식별자가 제한되지 않은 그룹을 생성하지 않도록 원시 URL 대신 일치하는 경로 경로를 사용하십시오.
- 4
증거를 확인하세요
Exercise a known fixture, then inspect fastapi_response_observed for one correctly typed terminal row.
시작하기 전에
시작하기 전에
- 서비스 환경에 설치된 telemetry-sh
- 서버 측 API 키로 초기화된 TelemetryAsync
- 신뢰할 수 없는 요청 헤더를 복사하지 않고 생성한 요청 ID
배송 설정
서버 측 설치 및 초기화
서버 측 키를 사용하여 프로세스당 한 번씩 동기 코드의 경우 Telemetry를 초기화하고 비동기 코드의 경우 TelemetryAsync를 초기화합니다. 브라우저 번들, 클라이언트에 표시되는 환경 변수, 소스 제어, 로그 및 예외 메시지에서 수집 자격 증명을 유지하세요.
pip 설치
python -m pip install telemetry-sh- 1제한된 네트워크 동작을 갖춘 재사용 가능한 서버 측 전달 클라이언트 하나를 준비합니다.
- 2성공, 실패, 재시도 또는 시간 초과 경계에 결과 이벤트를 추가합니다.
- 3알림을 활성화하기 전에 제어된 고정 장치를 보내고 저장된 행을 검사하십시오.
스니펫
하나의 체계적인 이벤트로 시작하세요
워크플로가 완료, 실패 또는 재시도되는 위치에 이 셰이프를 추가합니다. 그런 다음 실제 필드에서 대시보드를 구축합니다.
Python and FastAPI structured logging 이벤트
import asyncio
import time
import uuid
# app and the initialized TelemetryAsync client already exist.
@app.middleware("http")
async def record_request(request, call_next):
started_at = time.perf_counter()
request_id = uuid.uuid4().hex
response = await call_next(request)
route = request.scope.get("route")
latency_ms = round((time.perf_counter() - started_at) * 1000)
try:
await asyncio.wait_for(telemetry.log("fastapi_response_observed", {
"route_template": getattr(route, "path", "unmatched"),
"method": request.method,
"status_code": response.status_code,
"status": "response_observed",
"latency_ms": latency_ms,
"request_id": request_id,
}), timeout=1.0)
except Exception:
# Best effort: connect this to your existing safe diagnostics.
pass
return response이벤트 스키마
route_template, 방법 및 status_code
응답 헤더를 관찰한 시점의 status와 latency_ms
로컬에서 생성한 request_id
설정 확인하기
체크포인트 1
식별자가 제한되지 않은 그룹을 생성하지 않도록 원시 URL 대신 일치하는 경로 경로를 사용하십시오.
체크포인트 2
이 예제는 응답 헤더를 관찰하며 스트리밍 본문 완료나 업무 성공을 증명하지 않습니다. latency_ms 측정은 call_next가 반환할 때 끝납니다.
체크포인트 3
내보내기에 1초의 협력적 시간 제한과 오류 처리를 적용해 응답을 유지합니다. 운영 환경에는 여전히 크기가 제한된 큐와 안전한 실패 진단이 필요합니다.
체크포인트 4
처리되지 않은 애플리케이션 예외에는 이 이벤트가 생성되지 않습니다. 예외 처리기를 별도로 계측하고 요청 취소는 계속 전파되도록 해야 합니다.
검증
이벤트가 도착했음을 증명하세요.
알려진 성공 및 실패 사례를 연습한 후 이를 실행하십시오. 최종 이벤트 계약이 스니펫과 다른 경우 대체 테이블 이름을 바꾸세요.
Python and FastAPI structured logging 확인 쿼리
SELECT *
FROM fastapi_response_observed
ORDER BY timestamp_utc DESC
LIMIT 20;구현 참조
새로운 프로덕션 경로를 활성화하기 전에 이벤트 계약, 데이터 안전 지침, 업스트림 기본 문서를 검토하세요.
이벤트를 기록할 위치
결과 이벤트를 작고 복구 가능하게 유지
이 패턴은 다음을 제공합니다.
- 업스트림 워크플로우 옆에 제한된 SQL 지원 결과가 있습니다.
- 대시보드, 알림 및 교차 이벤트 상관 관계를 위한 안정적인 필드입니다.
- 성공, 실패, 재시도 및 시간 초과 동작을 검증하기 위한 고정 장치 기반 경로입니다.
이 패턴은 제공하지 않습니다
- OTLP 내보내기, 자동 수집 파이프라인 또는 자세한 추적 및 진단 로그를 대체합니다.
- 페이로드에 이벤트 ID가 포함되어 있기 때문에 정확히 한 번만 전달됩니다.
- 원시 공급자 페이로드, 사용자 콘텐츠, 자격 증명 또는 규제 데이터를 수집할 수 있는 권한입니다.
이벤트 스키마 예제
이 워크플로의 이벤트 스키마
쿼리 또는 스니펫을 프로덕션에 적용하기 전에 행 그레인, 방출 경계, 필수 유형, 개인 정보 보호 클래스, 예제 페이로드 및 유효성 검사 체크리스트를 검토하세요.
관련 제품 기능
이 워크플로를 다음에서 계속하세요. 알림
검토된 신뢰성 쿼리를 소유한 임계값 및 응답 워크플로로 승격합니다.
관련 SQL 레시피
더 많은 SQL 예제
이 워크플로의 구조화된 필드에 대해 쿼리를 실행하고, 예제 결과를 검사하고, 유용한 답변을 대시보드 또는 알림으로 전환하세요.
경로별 API 오류율 계산
요청이 20건 이상인 API 경로 중 5xx 오류율이 가장 높은 경로는 무엇인가요?
레시피 열기p50, p95 및 p99 API 대기 시간 계산
꼬리 지연 시간이 가장 긴 엔드포인트는 무엇입니까?
레시피 열기경로별 API 시간 초과 비율 계산
사용자에게 영향을 미칠 만큼 자주 시간 초과되는 API 경로는 무엇입니까?
레시피 열기종속성 비교 p95 대기 시간
꼬리 지연 시간과 실패율이 가장 낮은 다운스트림 종속성은 무엇입니까?
레시피 열기고객 영향에 따른 순위 오류 지문
어떤 오류 그룹이 대부분의 고객 계정에 영향을 미치나요?
레시피 열기구현 제품군별로 찾아보기
관련 통합 패턴 비교
이 통합과 페어링할 템플릿
더 많은 통합
Node.js 및 Express 구조적 로깅
안정적인 경로 템플릿, 상태 코드, 요청 대기 시간 및 안전한 상관 관계 필드를 갖춘 Instrument Express 경로 결과입니다.
가이드 열기엘릭서 피닉스 Telemetry 통합
Phoenix 요청 라이프사이클 이벤트에 연결하고 연결 데이터, 매개변수 또는 예외 텍스트를 복사하지 않고 제한된 터미널 요청 결과를 전달합니다.
가이드 열기스프링 부트 구조적 이벤트 모니터링
안정적인 경로, 대기 시간, 상태 및 추적 컨텍스트를 사용하여 Telemetry의 HTTP API를 통해 Spring MVC 및 예약된 워크플로 결과를 기록합니다.
가이드 열기