다음을 통해 공유


GraphQL 작업

GraphQL용 Fabric API를 통해 실행되는 모든 GraphQL 쿼리 및 변형은 성능 메트릭, 쿼리 텍스트, 인증 세부 정보 및 실행 결과를 캡처하는 자세한 작업 로그를 생성합니다. 이러한 로그는 작업 영역의 모니터링 데이터베이스에 자동으로 수집 및 저장되어 GraphQL API가 사용되는 방식과 수행 방법에 대한 가시성을 제공합니다.

GraphQL 작업 로그는 패브릭의 작업 영역 모니터링 기능의 일부입니다. 작업 영역 모니터링을 사용하도록 설정하면 Fabric은 모든 GraphQL API에서 로그를 지속적으로 수집하는 Eventhouse 데이터베이스를 작업 영역에 만듭니다. KQL(Kusto 쿼리 언어)을 사용하여 이러한 로그를 쿼리하여 문제를 해결하고, 성능을 최적화하고, 사용 패턴을 추적하고, API가 SLA 요구 사항을 충족하는지 확인할 수 있습니다.

필수 조건

GraphQL 작업 로그에 액세스하고 쿼리하려면 다음을 수행합니다.

  1. 패브릭 작업 영역에서 작업 영역 모니터링 사용
  2. 작업 영역에 대해 만든 Eventhouse KQL 데이터베이스에 액세스
  3. 로그 쿼리를 위한 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 리포지토리의 작업 영역 모니터링 을 방문하세요.