다음을 통해 공유


OpenTelemetry 및 작업 추적 사용

DAB(데이터 API 작성기)는 분산 추적 및 메트릭에 대해 OpenTelemetry를 지원하므로 REST, GraphQL, 데이터베이스 작업 및 내부 미들웨어에서 동작을 모니터링하고 진단할 수 있습니다.

OpenTelemetry 흐름을 보여 주는 다이어그램

필수 조건

  • 기존 DAB 구성 파일입니다.
  • OpenTelemetry 수집기 또는 백 엔드 실행(예: Azure Monitor 또는 Jaeger).
  • 데이터 API 작성기 CLI. CLI 설치

도구 실행

구성에 OpenTelemetry 설정을 추가하는 데 사용합니다 dab add-telemetry .

  1. 구성 파일이 있는지 확인합니다. 만들어야 하는 경우 다음을 실행합니다.

    dab init \
        --database-type mssql \
        --connection-string "<sql-connection-string>"
    
  2. 구성 파일에 OpenTelemetry 설정을 추가합니다.

    dab add-telemetry \
        -c dab-config.json \
        --otel-enabled true \
        --otel-endpoint "http://localhost:4317" \
        --otel-protocol "grpc" \
        --otel-service-name "dab"
    
  3. DAB를 시작합니다.

    dab start
    

원격 분석 백 엔드에서 테스트

  1. OpenTelemetry 백 엔드 또는 수집기 UI를 엽니다.

  2. REST, GraphQL 또는 데이터베이스 호출에 대한 추적 및 메트릭이 도착하는지 확인합니다.

비고

.NET Aspire 대시보드는 개발자 루프의 이상적인 부분입니다. 여기에는 OpenTelemetry 추적 및 메트릭에 대한 기본 제공 보기가 포함됩니다.

데이터 API 작성기 추적

DAB는 다음을 위한 OpenTelemetry "활동"을 만듭니다.

  • 들어오는 HTTP 요청 (REST 엔드포인트)
  • GraphQL 작업
  • 데이터베이스 쿼리 (엔터티당)
  • 내부 미들웨어 단계 (예: 요청 처리, 오류 추적)

각 활동에는 다음과 같은 자세한 태그(메타데이터)가 포함됩니다.

  • http.method, http.url, http.querystringstatus.code
  • action.type (CRUD, GraphQL 작업)
  • user.role, user-agent
  • data-source.type, data-source.name
  • api.type (REST 또는 GraphQL)

오류 및 예외도 자세한 정보로 추적됩니다.

데이터 API 작성기 메트릭

DAB는 다음과 같은 OpenTelemetry 메트릭을 내보낸다.

  • 총 요청: 카운터, HTTP 메서드, 상태, 엔드포인트 및 API 형식으로 레이블이 지정됩니다.
  • 오류: 오류 유형, HTTP 메서드, 상태, 엔드포인트 및 API 유형으로 레이블이 지정된 카운터입니다.
  • 요청 기간: HTTP 메서드, 상태, 엔드포인트 및 API 형식으로 레이블이 지정된 히스토그램(밀리초)입니다.
  • 활성 요청: 동시 요청에 대한 위쪽/아래쪽 카운터입니다.

메트릭은 .NET Meter API 및 OpenTelemetry SDK를 사용합니다.

Configuration

open-telemetry 구성 파일 아래에 runtime.telemetry 섹션을 추가합니다.

{
    "runtime": {
        "telemetry": {
            "open-telemetry": {
                "enabled": true,
                "endpoint": "http://otel-collector:4317",
                "service-name": "dab",
                "exporter-protocol": "grpc"
            }
        }
    }
}

Command-line

를 통해 OpenTelemetry를 구성합니다 dab add-telemetry.

  • --otel-enabled
  • --otel-endpoint
  • --otel-protocol
  • --otel-service-name
  • --otel-headers

예시

dab add-telemetry \
    -c dab-config.json \
    --otel-enabled true \
    --otel-endpoint "http://localhost:4317" \
    --otel-protocol "grpc" \
    --otel-service-name "dab"

결과 구성

비고

OpenTelemetry 옵션을 dab configure에서 사용할 수 없습니다.

{
    "runtime": {
        "telemetry": {
            "open-telemetry": {
                "enabled": true,
                "endpoint": "http://localhost:4317",
                "service-name": "dab",
                "exporter-protocol": "grpc"
            }
        }
    }
}

내보내기 및 시각화

원격 분석은 .NET OpenTelemetry SDK를 통해 Azure Monitor 또는 Jaeger와 같은 구성된 백 엔드로 내보냅니다. 백 엔드가 실행 중이고 지정된 endpoint위치에서 연결할 수 있는지 확인합니다. 시각화에 OpenTelemetry 호환 백 엔드를 사용할 수 있습니다.

OpenTelemetry SDK는 내보내기 타이밍을 제어합니다. 작업이 완료되면 추적을 내보냅니다. SDK에서 구성된 주기적인 간격으로 메트릭을 내보냅니다. 간격을 설정하지 않으면 SDK에서 기본값을 사용합니다.

비고

빠르게 종료되는 임시 컨테이너는 내보내기가 완료되기 전에 종료될 수 있습니다. 무리한 종료를 피하고 원활한 종료를 허용하여 보류 중인 원격 분석 데이터가 플러시되도록 합니다.

구현 참고 사항

  • 추적 및 메트릭은 모든 REST, GraphQL 및 데이터베이스 작업을 다룹니다.
  • 미들웨어 및 오류 처리기는 원격 분석도 내보낸다.
  • 컨텍스트가 요청을 통해 전파됨