DAB(데이터 API 작성기)는 분산 추적 및 메트릭에 대해 OpenTelemetry를 지원하므로 REST, GraphQL, 데이터베이스 작업 및 내부 미들웨어에서 동작을 모니터링하고 진단할 수 있습니다.
필수 조건
- 기존 DAB 구성 파일입니다.
- OpenTelemetry 수집기 또는 백 엔드 실행(예: Azure Monitor 또는 Jaeger).
- 데이터 API 작성기 CLI. CLI 설치
도구 실행
구성에 OpenTelemetry 설정을 추가하는 데 사용합니다 dab add-telemetry .
구성 파일이 있는지 확인합니다. 만들어야 하는 경우 다음을 실행합니다.
dab init \ --database-type mssql \ --connection-string "<sql-connection-string>"구성 파일에 OpenTelemetry 설정을 추가합니다.
DAB를 시작합니다.
dab start
원격 분석 백 엔드에서 테스트
OpenTelemetry 백 엔드 또는 수집기 UI를 엽니다.
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 및 데이터베이스 작업을 다룹니다.
- 미들웨어 및 오류 처리기는 원격 분석도 내보낸다.
- 컨텍스트가 요청을 통해 전파됨