GraphQL용 Fabric API를 통해 실행되는 모든 GraphQL 쿼리 및 변형은 성능 메트릭, 쿼리 텍스트, 인증 세부 정보 및 실행 결과를 캡처하는 자세한 작업 로그를 생성합니다. 이러한 로그는 작업 영역의 모니터링 데이터베이스에 자동으로 수집 및 저장되어 GraphQL API가 사용되는 방식과 수행 방법에 대한 가시성을 제공합니다.
GraphQL 작업 로그는 패브릭의 작업 영역 모니터링 기능의 일부입니다. 작업 영역 모니터링을 사용하도록 설정하면 Fabric은 모든 GraphQL API에서 로그를 지속적으로 수집하는 Eventhouse 데이터베이스를 작업 영역에 만듭니다. KQL(Kusto 쿼리 언어)을 사용하여 이러한 로그를 쿼리하여 문제를 해결하고, 성능을 최적화하고, 사용 패턴을 추적하고, API가 SLA 요구 사항을 충족하는지 확인할 수 있습니다.
필수 조건
GraphQL 작업 로그에 액세스하고 쿼리하려면 다음을 수행합니다.
- 패브릭 작업 영역에서 작업 영역 모니터링 사용
- 작업 영역에 대해 만든 Eventhouse KQL 데이터베이스에 액세스
- 로그 쿼리를 위한 KQL(Kusto 쿼리 언어) 사용
모니터링을 사용하도록 설정하면 GraphQL 작업은 집계된 메트릭 및 GraphQLLog 자세한 작업 로그의 두 테이블에 GraphQLMetrics 자동으로 기록됩니다.
GraphQL 작업 로그를 사용하는 사용자
작업 로그 및 모니터링은 다음을 위해 필수적입니다.
- GraphQL API 사용량, 성능 및 용량 소비를 모니터링하는 패브릭 작업 영역 관리자
- 데이터 엔지니어 가 데이터 액세스 패턴을 추적하고 Fabric Lakehouse 및 웨어하우스 쿼리를 최적화합니다.
- 패브릭 데이터를 사용하는 프로덕션 애플리케이션이 SLA 요구 사항을 충족하는지 확인하는 DevOps 팀
- 용량 계획 및 비용 관리에 대한 API 사용 메트릭을 이해하는 패브릭 용량 관리자
패브릭 GraphQL API의 성능 및 사용을 모니터링, 문제 해결 또는 분석해야 하는 경우 작업 로그를 사용합니다.
GraphQL 작업 로그
연결된 데이터 원본에서 GraphQL용 Fabric API에서 실행하는 각 쿼리에 대한 로그 이벤트는 다음 두 개의 보완 테이블에 저장됩니다.
- GraphQLMetrics: 성능 모니터링 및 추세 분석에 가장 적합한 시간 단위 요약이 포함된 집계 메트릭 데이터를 포함합니다.
- GraphQLLog: 전체 쿼리 텍스트 및 실행 세부 정보가 포함된 자세한 작업 로그를 포함하며 특정 쿼리 문제 해결에 적합합니다.
다음 로그를 사용하여 다음을 수행합니다.
- 동작 변경 및 잠재적 API 저하 식별
- 비정상적이거나 리소스가 많은 쿼리 검색
- 쿼리 수가 가장 많은 사용자 및 애플리케이션 식별
- 쿼리 성능 및 추세 분석
- 쿼리 속도 저하 문제 해결
- 특정 GraphQL 쿼리 관련 문제 진단
GraphQLMetrics 테이블
이 테이블은 GraphQLMetrics GraphQL 작업에 대해 집계된 메트릭을 저장합니다. 성능 모니터링, 용량 계획 및 시간에 따른 추세 식별을 위해 이 표를 사용합니다.
이 표에는 다음 열이 포함되어 있습니다.
| 열 이름 | Type | 설명 |
|---|---|---|
| 타임스탬프 | 날짜/시간 | 데이터 원본에서 레코드를 만들 때 로그 항목이 생성된 시점의 타임스탬프(UTC)입니다. |
| ItemId | string | 데이터를 로깅하는 리소스의 고유 ID입니다. |
| ItemKind | string | 작업을 로깅하는 아티팩트 형식입니다. |
| ItemName | string | 이 작업을 로깅하는 패브릭 아티팩트 이름입니다. |
| WorkspaceId | string | 작업 중인 아티팩트가 포함된 패브릭 작업 영역의 고유 식별자 |
| WorkspaceName | string | 아티팩트가 포함된 패브릭 작업 영역의 이름입니다. |
| CapacityId | string | 작동 중인 아티팩트 호스팅 용량의 고유 식별자입니다. |
| CustomerTenantId | string | 작업이 수행된 고객 테넌트 ID입니다. |
| PlatformMonitoringTableName | string | 레코드에 속하는 테이블의 이름(또는 레코드의 인증된 이벤트 유형)입니다. Format은 <WorkloadName> + [OperationType>]+ <TelemetryType입니다.> |
| 지역 | string | 이벤트를 내보내는 리소스의 영역입니다. 예를 들어 미국 동부 또는 프랑스 남부입니다. |
| MetricTimeGrain | string | 메트릭의 시간 조직(ISO 8601 기간)입니다. |
| MetricUnitName | string | 메트릭의 단위. |
| MetricSumValue | long | 1분 동안 메트릭의 집계된 합계 값입니다. |
| DatasourceTypes | dynamic | 모델에서 사용되는 DataSource 형식의 배열입니다. |
| ResultCode | string | 사용량을 안정성으로 확장하는 데 사용되는 실패한 활동의 오류 코드입니다. |
| 상태 | string | 작업의 상태입니다. 쿼리가 오류/실패와 함께 성공적으로/성공적으로 실행되었습니다. |
GraphQLLog 테이블
테이블은 GraphQLLog 각 GraphQL 쿼리 실행에 대한 자세한 작업 로그를 저장합니다. 특정 쿼리 문제를 해결하고, 쿼리 텍스트를 분석하고, 오류 또는 성능 문제를 조사하는 데 이 표를 사용합니다.
이벤트 및 이벤트에 대한 드릴다운 ExecutionMetrics 에 대한 자세한 내용은 이벤트 및 스키마를 참조하세요.
이 표에는 다음 열이 포함되어 있습니다.
| 열 이름 | Type | 설명 |
|---|---|---|
| 타임스탬프 | 날짜/시간 | 데이터 원본에서 레코드를 만들 때 로그 항목이 생성된 시점의 타임스탬프(UTC)입니다. |
| OperationName | string | 작업 이름입니다. |
| ItemId | string | 데이터를 로깅하는 리소스의 고유 ID입니다. |
| ItemKind | string | 작업을 로깅하는 아티팩트 형식입니다. |
| ItemName | string | 이 작업을 로깅하는 패브릭 아티팩트 이름입니다. |
| WorkspaceId | string | 작업 중인 아티팩트가 포함된 패브릭 작업 영역의 고유 식별자입니다. |
| WorkspaceName | string | 아티팩트가 포함된 패브릭 작업 영역의 이름입니다. |
| CapacityId | string | 작동 중인 아티팩트 호스팅 용량의 고유 식별자입니다. |
| CorrelationId | string | 루트 활동 ID입니다. |
| OperationId | string | 기록 중인 작업에 대한 고유 식별자입니다. |
| ID | dynamic | 사용자 및 클레임 세부 정보입니다. 보고되는 작업과 연결된 사용자입니다. |
| CustomerTenantId | string | 작업이 수행된 고객 테넌트 ID입니다. |
| DurationMs | long | 필요한 모든 작업이 처리되는 동안 경과된 경과된 CPU 시간입니다. 단위는 밀리초 단위입니다. |
| 상태 | string | 작업의 상태입니다. 쿼리가 오류/실패와 함께 성공적으로/성공적으로 실행되었습니다. |
| 수준 | string | 플랫폼 모니터링 팀에 필요한 메타데이터입니다. |
| 지역 | string | 이벤트를 내보내는 리소스의 영역입니다. 예를 들어 미국 동부 또는 프랑스 남부입니다. |
| PlatformMonitoringTableName | string | 레코드에 속하는 테이블의 이름(또는 레코드의 인증된 이벤트 유형)입니다. Format은 <WorkloadName> + [OperationType>]+ <TelemetryType입니다.> |
| QueryText | string | 쿼리 텍스트입니다. |
| GraphQLOverheadDurationMs | long | 데이터 평면 요청에 대한 GraphQL 오버헤드(ms)입니다. |
| ProcessedBytes | long | 처리된 데이터 볼륨(바이트)입니다. |
| TransportProtocol | string | 요청에 대한 전송 프로토콜입니다. |
| QueryResultMessage | string | 이 차원은 쿼리 작업의 결과에 대한 추가 컨텍스트를 제공하는 데 사용됩니다. |
샘플 쿼리
이러한 KQL 쿼리를 사용하여 GraphQL 작업 로그를 분석합니다. 이러한 쿼리는 작업 영역 내의 Eventhouse 쿼리 편집기에서 직접 실행할 수 있습니다.
느린 쿼리 찾기
실행하는 데 5초 이상 걸리는 GraphQL 쿼리를 식별합니다.
GraphQLLog
| where DurationMs > 5000
| project Timestamp, ItemName, DurationMs, QueryText, Status, Identity
| order by DurationMs desc
| take 20
쿼리 수별 상위 사용자
GraphQL 요청을 가장 많은 사용자 또는 애플리케이션을 찾습니다.
GraphQLLog
| summarize QueryCount = count() by Identity
| order by QueryCount desc
| take 10
오류 비율 분석
시간에 따른 GraphQL 작업의 오류 비율을 계산합니다.
GraphQLLog
| summarize
TotalQueries = count(),
FailedQueries = countif(Status == "failed"),
ErrorRate = (countif(Status == "failed") * 100.0) / count()
by bin(Timestamp, 1h)
| order by Timestamp desc
대부분의 리소스 집약적 쿼리
가장 많은 양의 데이터를 처리하는 쿼리를 식별합니다.
GraphQLLog
| where ProcessedBytes > 0
| project Timestamp, ItemName, ProcessedBytes, QueryText, DurationMs
| order by ProcessedBytes desc
| take 20
쿼리 성능 추세
지난 24시간 동안의 평균 쿼리 성능을 분석합니다.
GraphQLMetrics
| where Timestamp > ago(24h)
| summarize
AvgDuration = avg(MetricSumValue),
MaxDuration = max(MetricSumValue),
QueryCount = count()
by bin(Timestamp, 1h), ItemName
| order by Timestamp desc
더 많은 작업 영역 모니터링 샘플을 보려면 패브릭 샘플 GitHub 리포지토리의 작업 영역 모니터링 을 방문하세요.