Azure Front Door에서 메트릭 및 로그 모니터링

Azure Front Door는 애플리케이션을 모니터링하고, 요청을 추적하고, Front Door 구성을 디버그하는 데 도움이 되는 몇 가지 기능을 제공합니다.

로그와 메트릭은 Azure Monitor에 의해 저장되고 관리됩니다.

보고서는 트래픽이 Azure Front Door, WAF(웹 애플리케이션 방화벽)을 통해 애플리케이션으로 흐르는 방식에 대한 정보를 제공합니다.

메트릭

Azure Front Door는 60초 간격으로 해당 메트릭을 측정하고 보냅니다. 메트릭은 Azure Monitor에서 처리되는 데 최대 3분이 걸릴 수 있으며 처리가 완료될 때까지 표시되지 않을 수 있습니다. 메트릭은 차트 또는 표로도 표시할 수 있으며 Azure Portal, Azure PowerShell, Azure CLI 및 Azure Monitor API를 통해 액세스할 수 있습니다. 자세한 내용은 Azure Monitor 메트릭을 참조하세요.

다음 표에 나열된 메트릭은 제한된 기간 동안 무료로 기록되고 저장됩니다. 추가 비용을 지불하면 더 오랫동안 보관할 수 있습니다.

메트릭 설명 차원
바이트 적중률 총 송신 트래픽에 대해 계산된 Azure Front Door 캐시에서 제공된 트래픽의 백분율입니다. 대부분의 트래픽이 캐시에서 제공되지 않고 원본으로 전달되는 경우 바이트 적중률이 낮습니다.

바이트 적중률 = (edge에서 송신 - 원본에서 송신)/에 지에서 송신.

바이트 적중률 계산에서 제외된 시나리오:
  • 규칙 엔진 또는 쿼리 문자열 캐싱 동작을 통해 캐싱을 명시적으로 사용하지 않도록 설정합니다.
  • no-store 또는 private 캐시 지시문을 사용하여 Cache-Control 지시문을 명시적으로 구성합니다.
엔드포인트
원본 상태 비율 Azure Front Door에서 원본으로 전송된 성공적인 상태 프로브의 비율입니다. 원본, 원본 그룹
원본 대기 시간 Azure Front Door는 원본에 요청을 보낸 후 원본에서 마지막 응답 바이트를 받을 때까지의 시간을 계산합니다. 엔드포인트, 원본
원본 요청 수 Azure Front Door에서 원본으로 보낸 요청 수입니다. 엔드포인트, 원본, HTTP 상태, HTTP 상태 그룹
4XX의 백분율 응답 상태 코드가 4XX인 모든 클라이언트 요청의 백분율. 엔드포인트, 클라이언트 국가, 클라이언트 영역
5XX의 백분율 응답 상태 코드가 5XX인 모든 클라이언트 요청의 백분율. 엔드포인트, 클라이언트 국가, 클라이언트 영역
요청 수 캐시에서 완전히 제공되는 요청을 포함하여 Azure Front Door를 통해 제공되는 클라이언트 요청 수입니다. 엔드포인트, 클라이언트 국가, 클라이언트 영역, HTTP 상태, HTTP 상태 그룹
요청 크기 클라이언트에서 Azure Front Door로 보낸 요청에서 보낸 바이트 수입니다. 엔드포인트, 클라이언트 국가, 클라이언트 영역, HTTP 상태, HTTP 상태 그룹
응답 크기 Front Door에서 클라이언트로, 응답으로 전송된 바이트 수 엔드포인트, 클라이언트 국가, 클라이언트 영역, HTTP 상태, HTTP 상태 그룹
총 대기 시간 Azure Front Door는 클라이언트 요청을 수신하고 마지막 응답 바이트를 클라이언트에 보냅니다. 이는 소요된 총 시간입니다. 엔드포인트, 클라이언트 국가, 클라이언트 영역, HTTP 상태, HTTP 상태 그룹
웹 애플리케이션 방화벽 요청 수 Azure Front Door 웹 애플리케이션 방화벽에서 처리한 요청 수입니다. 작업, 정책 이름, 규칙 이름

참고 항목

원본에 대한 요청 시간이 초과되면 Http 상태 차원의 값은 0입니다.

로그

로그는 Azure Front Door를 통과하는 모든 요청을 추적합니다. 로그를 처리하고 저장하는 데 몇 분 정도 걸릴 수 있습니다.

다양한 용도로 사용할 수 있는 여러 Front Door 로그가 있습니다.

  • 액세스 로그는 느린 요청을 식별하고, 오류율을 확인하고, Front Door의 캐싱 동작이 솔루션에서 어떻게 작동하는지 이해하는 데 사용할 수 있습니다.
  • WAF(웹 애플리케이션 방화벽) 로그를 사용하여 잠재적인 공격 및 WAF가 차단한 합법적인 요청을 나타낼 수 있는 가양성 검색을 검색할 수 있습니다. WAF 로그에 대한 자세한 내용은 Azure Web Application Firewall 모니터링 및 로깅을 참조하세요.
  • 상태 프로브 로그는 비정상이거나 지리적으로 분산된 일부 Front Door PoP의 요청에 응답하지 않는 원본을 식별하는 데 사용할 수 있습니다.
  • 활동 로그는 Azure Front Door 프로필에 대한 구성 변경과 같이 Azure 리소스에서 수행되는 작업에 대한 표시 유형을 제공합니다.

액세스 로그 및 WAF 로그에는 추적 참조가 포함되어 있으며 이는 X-Azure-Ref 헤더를 사용하여 원본 및 클라이언트 응답에 대한 요청에도 전파됩니다. 추적 참조를 사용하여 애플리케이션 요청 처리에 대한 엔드투엔드 보기를 얻을 수 있습니다.

액세스 로그, 상태 프로브 로그 및 WAF 로그는 기본적으로 사용할 수 없습니다. 진단 로그를 사용하도록 설정하고 저장하려면 Azure Front Door 로그 구성을 참조하세요. 활동 로그 항목은 기본적으로 수집되고 Azure Portal에서 볼 수 있습니다.

액세스 로그

모든 요청에 대한 정보는 액세스 로그에 로그됩니다. 각 액세스 로그 항목에는 다음 표에 나열된 정보가 포함되어 있습니다.

속성 설명
TrackingReference Azure Front Door에서 제공하는 요청을 식별하는 고유한 참조 문자열입니다. 추적 참조는 X-Azure-Ref 헤더를 사용하여 클라이언트와 원본으로 전송됩니다. 액세스 또는 WAF 로그에서 특정 요청을 검색할 때 추적 참조를 사용합니다.
Time Azure Front Door Edge가 요청한 콘텐츠를 클라이언트에 배달한 날짜 및 시간(UTC 기준)입니다.
HttpMethod 요청에서 사용하는 HTTP 메서드이며 DELETE, GET, HEAD, OPTIONS, PATCH, POST 또는 PUT입니다.
HttpVersion 클라이언트가 요청에 지정한 HTTP 버전입니다.
RequestUri 수신된 요청의 URI입니다. 이 필드에는 전체 체계, 포트, 도메인, 경로 및 쿼리 문자열이 포함됩니다.
HostName 클라이언트의 요청에 있는 호스트 이름입니다. 사용자 지정 도메인을 사용하도록 설정하고 와일드카드 도메인(*.contoso.com)이 있는 경우 HostName 로그 필드의 값은 subdomain-from-client-request.contoso.com입니다. Azure Front Door 도메인(contoso-123.z01.azurefd.net)을 사용하는 경우 HostName 로그 필드의 값은 contoso-123.z01.azurefd.net입니다.
RequestBytes 요청 헤더 및 요청 본문을 포함하여 HTTP 요청 메시지의 크기(바이트)입니다.
ResponseBytes HTTP 응답 메시지의 크기(바이트)입니다.
UserAgent 클라이언트가 사용한 사용자 에이전트입니다. 일반적으로 사용자 에이전트는 브라우저 형식을 식별합니다.
ClientIp 원본에서 요청한 클라이언트의 IP 주소입니다. 요청에 X-Forwarded-For 헤더가 있으면 헤더에서 클라이언트 IP 주소를 가져옵니다.
SocketIp Azure Front Door Edge에 대한 직접 연결의 IP 주소입니다. 클라이언트에서 HTTP 프록시 또는 부하 분산 장치를 사용하여 요청을 보낸 경우 SocketIp의 값은 프록시 또는 부하 분산 장치의 IP 주소입니다.
timeTaken Azure Front Door 에지가 클라이언트의 요청을 수신한 때부터 Azure Front Door가 응답의 마지막 바이트를 클라이언트에 보낸 시간까지의 시간(초)입니다. 이 필드는 네트워크 대기 시간 및 TCP 버퍼링을 고려하지 않습니다.
RequestProtocol 클라이언트가 요청에 지정한 프로토콜입니다. 가능한 값은 HTTP, HTTPS입니다.
SecurityProtocol 요청에 사용된 TLS/SSL 프로토콜 버전 또는 요청이 암호화를 사용하지 않은 경우 null입니다. 가능한 값은 SSLv3, TLSv1, TLSv1.1, TLSv1.2입니다.
SecurityCipher 요청 프로토콜의 값이 HTTPS인 경우 이 필드는 클라이언트와 Azure Front Door에서 협상한 TLS/SSL 암호를 나타냅니다.
엔드포인트 Azure Front Door 엔드포인트의 도메인 이름(예: contoso-123.z01.azurefd.net)입니다.
HttpStatusCode Azure Front Door에서 반환된 HTTP 상태 코드입니다. 원본에 대한 요청 시간이 초과된 경우 HttpStatusCode 필드의 값은 0입니다. 클라이언트가 연결을 닫은 경우 HttpStatusCode 필드의 값은 499입니다.
사용자 요청에 응답한 Azure Front Door 에지 PoP(Point of Presence)입니다.
캐시 상태 Azure Front Door 캐시에서 요청을 처리한 방법입니다. 가능한 값은 다음과 같습니다.
  • HITREMOTE_HIT: HTTP 요청이 Azure Front Door 캐시에서 제공되었습니다.
  • MISS: HTTP 요청이 원본에서 제공되었습니다.
  • PARTIAL_HIT: 일부 바이트는 Front Door 에지 PoP 캐시에서 제공되었고 다른 바이트는 원본에서 제공되었습니다. 이 상태는 개체 청크 시나리오를 나타냅니다.
  • CACHE_NOCONFIG: 무시 시나리오를 포함하여 캐싱 설정 없이 요청이 전달되었습니다.
  • PRIVATE_NOSTORE: 고객이 캐싱 설정에 구성한 캐시가 없습니다.
  • 해당 사항 없음: 서명된 URL 또는 규칙 엔진에서 요청이 거부되었습니다.
MatchedRulesSetName 처리된 규칙 엔진 규칙의 이름입니다.
RouteName 요청에 일치하는 경로의 이름입니다.
ClientPort 요청한 클라이언트의 IP 포트입니다.
Referrer 요청을 시작한 사이트의 URL입니다.
TimetoFirstByte Azure Front Door 에지가 요청을 수신한 시점부터 첫 번째 바이트가 클라이언트에 전송된 시간까지의 시간(초)이며 Azure Front Door에서 측정됩니다. 이 속성은 클라이언트 데이터를 측정하지 않습니다.
ErrorInfo 요청을 처리하는 동안 오류가 발생한 경우 이 필드는 오류에 대한 자세한 정보를 제공합니다. 가능한 값은 다음과 같습니다.
  • NoError: 발견된 오류가 없음을 나타냅니다.
  • CertificateError: 제네릭 SSL 인증서 오류입니다.
  • CertificateNameCheckFailed: SSL 인증서의 호스트 이름이 잘못되었거나 요청된 URL과 일치하지 않습니다.
  • ClientDisconnected: 클라이언트 네트워크 연결 문제로 인해 요청이 실패했습니다.
  • ClientGeoBlocked: IP 주소의 지리적 위치로 인해 클라이언트가 차단되었습니다.
  • UnspecifiedClientError: 제네릭 클라이언트 오류입니다.
  • InvalidRequest: 요청이 잘못되었습니다. 이 응답은 잘못된 형식의 헤더, 본문 또는 URL을 나타냅니다.
  • DNSFailure: DNS를 확인하는 동안 오류가 발생했습니다.
  • DNSTimeout: 원본 IP 주소를 확인하기 위한 DNS 쿼리가 시간 제한되었습니다.
  • DNSNameNotResolved: 서버 이름이나 주소를 확인할 수 없습니다.
  • OriginConnectionAborted: 원본과의 연결이 비정상적으로 끊어졌습니다.
  • OriginConnectionError: 제네릭 원본 연결 오류입니다.
  • OriginConnectionRefused: 원본과의 연결이 설정되지 않았습니다.
  • OriginError: 제네릭 원본 오류입니다.
  • Responseheadertoobig: 원본에서 너무 많은 응답 헤더를 반환했습니다.
  • OriginInvalidResponse: 원본이 유효하지 않거나 인식할 수 없는 응답을 반환했습니다.
  • OriginTimeout: 원본 요청에 대한 제한 시간이 만료되었습니다.
  • Responseheadertoobig: 원본에서 너무 많은 응답 헤더를 반환했습니다.
  • RestrictedIP: 제한된 IP 주소 때문에 요청이 차단되었습니다.
  • SSLHandshakeError: SSL 핸드셰이크 실패로 인해 Azure Front Door가 원본과의 연결을 설정할 수 없습니다.
  • SSLInvalidRootCA: 루트 인증 기관의 인증서가 잘못되었습니다.
  • SSLInvalidCipher: 잘못된 암호를 사용하여 HTTPS 연결이 설정되었습니다.
  • OriginConnectionAborted: 원본과의 연결이 비정상적으로 끊어졌습니다.
  • OriginConnectionRefused: 원본과의 연결이 설정되지 않았습니다.
  • UnspecifiedError: 테이블의 오류에 맞지 않는 오류가 발생했습니다.
OriginURL 요청이 전송된 원본의 전체 URL입니다. URL은 체계, 호스트 헤더, 포트, 경로 및 쿼리 문자열로 구성됩니다.
URL 다시 쓰기: 요청 URL이 규칙 엔진에 의해 재작성된 경우 경로는 재작성된 경로를 참조하세요.
에지 PoP의 캐시: 요청이 Azure Front Door 캐시에서 제공된 경우 원본은 해당 사항 없음입니다.
대량 요청: 요청된 콘텐츠가 크고 원본으로 돌아가는 청크 분할 요청이 여러 개 있는 경우 이 필드는 원본에 대한 첫 번째 요청에 해당합니다. 자세한 내용은 개체 청크를 참조하세요.
OriginIP 요청을 제공한 원본의 IP 주소입니다.
에지 PoP의 캐시: 요청이 Azure Front Door 캐시에서 제공된 경우 원본은 해당 사항 없음입니다.
대량 요청: 요청된 콘텐츠가 크고 원본으로 돌아가는 청크 분할 요청이 여러 개 있는 경우 이 필드는 원본에 대한 첫 번째 요청에 해당합니다. 자세한 내용은 개체 청크를 참조하세요.
OriginName 원본의 전체 호스트 이름(DNS 이름)입니다.
에지 PoP의 캐시: 요청이 Azure Front Door 캐시에서 제공된 경우 원본은 해당 사항 없음입니다.
대량 요청: 요청된 콘텐츠가 크고 원본으로 돌아가는 청크 분할 요청이 여러 개 있는 경우 이 필드는 원본에 대한 첫 번째 요청에 해당합니다. 자세한 내용은 개체 청크를 참조하세요.
결과 SSLMismatchedSNI는 SNI와 호스트 헤더 간의 불일치 경고와 함께 성공적인 요청을 나타내는 상태 코드입니다. 이 상태 코드는 Azure Front Door의 서비스 약관을 위반하는 기술인 도메인 프론팅을 의미합니다. SSLMismatchedSNI가 포함된 요청은 2024년 1월 22일 이후 거부됩니다.
Sni 이 필드는 TLS/SSL 핸드셰이크 중에 전송되는 SNI(서버 이름 표시)를 지정합니다. SSLMismatchedSNI 상태 코드가 있는 경우 정확한 SNI 값을 식별하는 데 사용할 수 있습니다. 또한 requestUri 필드의 호스트 값과 비교하여 불일치 문제를 검색하고 해결할 수 있습니다.

상태 프로브 로그

Azure Front Door는 실패한 모든 상태 프로브 요청을 로그합니다. 이러한 로그는 원본의 문제를 진단하는 데 도움이 될 수 있습니다. 로그는 실패 이유를 조사한 다음 원본을 정상 상태로 되돌리는 데 사용할 수 있는 정보를 제공합니다.

이 로그가 유용할 수 있는 몇 가지 시나리오는 다음과 같습니다.

  • Azure Front Door 트래픽이 원본의 하위 집합으로 전송되었음을 확인했습니다. 예를 들어, 원본 4개 중 3개만 트래픽을 수신한다는 사실을 알아차렸을 수 있습니다. 원본이 정상 상태인지 알 수 있도록 원본이 상태 프로브를 수신하고 이에 응답하는지 알고 싶습니다.
  • 원본 상태 백분율 메트릭이 예상보다 낮습니다. 비정상으로 기록된 원본과 상태 프로브 실패의 원인을 알고 싶습니다.

각 상태 프로브 로그 항목에는 다음 스키마가 있습니다.

속성 설명
HealthProbeId 상태 프로브 요청을 식별하는 고유 ID입니다.
Time 상태 프로브가 전송된 날짜 및 시간(UTC)입니다.
HttpMethod 상태 프로브 요청에 사용된 HTTP 메서드입니다. 값에는 상태 프로브의 구성에 따라 GETHEAD가 포함됩니다.
결과 상태 프로브의 상태입니다. 값은 성공이거나 프로브가 수신한 오류에 대한 설명입니다.
HttpStatusCode 원본에서 반환한 HTTP 상태 코드입니다.
ProbeURL 프로브 요청이 전송된 전체 대상 URL입니다. URL은 체계, 호스트 헤더, 경로 및 쿼리 문자열로 구성됩니다.
OriginName 상태 프로브가 전송된 원본의 이름입니다. 이 필드는 원본이 FDQN을 사용하도록 구성된 경우 관심 있는 원본을 찾는 데 도움이 됩니다.
POP 프로브 요청을 보낸 에지 PoP입니다.
원본 IP 상태 프로브가 전송된 원본의 IP 주소입니다.
TotalLatency Azure Front Door 에지가 원본에 상태 프로브 요청을 보낸 시점부터 원본이 Azure Front Door에 마지막 응답을 보낸 시점까지의 시간입니다.
ConnectionLatency 원본에 HTTP 프로브 요청을 보내기 위해 TCP 연결을 설정하는 데 소요된 시간입니다.
DNSResolution 대기 시간 DNS 확인에 소요된 시간입니다. 이 필드는 원본이 IP 주소 대신 FDQN으로 구성된 경우에만 값을 갖습니다. 원본이 IP 주소를 사용하도록 구성된 경우 값은 N/A입니다.

다음 예 JSON 코드 조각은 실패한 상태 프로브 요청에 대한 상태 프로브 로그 항목을 보여 줍니다.

{
  "records": [
    {
      "time": "2021-02-02T07:15:37.3640748Z",
      "resourceId": "/SUBSCRIPTIONS/27CAFCA8-B9A4-4264-B399-45D0C9CCA1AB/RESOURCEGROUPS/AFDXPRIVATEPREVIEW/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDXPRIVATEPREVIEW-JESSIE",
      "category": "FrontDoorHealthProbeLog",
      "operationName": "Microsoft.Cdn/Profiles/FrontDoorHealthProbeLog/Write",
      "properties": {
        "healthProbeId": "9642AEA07BA64675A0A7AD214ACF746E",
        "POP": "MAA",
        "httpVerb": "HEAD",
        "result": "OriginError",
        "httpStatusCode": "400",
        "probeURL": "http://afdxprivatepreview.blob.core.windows.net:80/",
        "originName": "afdxprivatepreview.blob.core.windows.net",
        "originIP": "52.239.224.228:80",
        "totalLatencyMilliseconds": "141",
        "connectionLatencyMilliseconds": "68",
        "DNSLatencyMicroseconds": "1814"
      }
    }
  ]
}

웹 애플리케이션 방화벽 로그

Front Door WAF(웹 애플리케이션 방화벽) 로그에 대한 자세한 내용은 Azure Web Application Firewall 모니터링 및 로깅을 참조하세요.

활동 로그

활동 로그는 Azure Front Door 리소스에 대한 관리 작업에 대한 정보를 제공합니다. 로그에는 Azure Front Door 리소스에서 수행된 각 쓰기 작업에 대한 세부 정보(작업 발생 시기, 수행한 사람 및 작업 내용 포함)가 포함됩니다.

참고 항목

활동 로그에는 읽기 작업이 포함되지 않습니다. 또한 Azure Portal 또는 클래식 관리 API를 사용하여 수행하는 모든 작업이 포함되지 않을 수도 있습니다.

자세한 내용은 활동 로그 보기를 참조하세요.

다음 단계

진단 로그를 사용하도록 설정하고 저장하려면 Azure Front Door 로그 구성을 참조하세요.

Important

Azure Front Door(클래식)는 2027년 3월 31일에 사용이 중지됩니다. 서비스가 중단되지 않도록 하려면 2027년 3월까지 Azure Front Door 표준 또는 프리미엄 계층으로 Azure Front Door(클래식) 프로필을 마이그레이션하는 것이 중요합니다. 자세한 내용은 Azure Front Door(클래식) 사용 중지를 참조하세요.

Azure Front Door(클래식)를 사용하는 경우 다음과 같은 방법으로 리소스를 모니터링할 수 있습니다.

  • 메트릭. Azure Front Door에는 현재 성능 카운터를 볼 수 있는 메트릭이 8개 있습니다.
  • 로그. 활동 및 진단 로그를 사용하면 모니터링을 위해 리소스의 성능, 액세스 및 기타 데이터를 저장하거나 사용할 수 있습니다.

메트릭

메트릭은 포털에서 성능 카운터를 볼 수 있는 특정 Azure 리소스에 대한 기능입니다. 사용 가능한 Front Door 메트릭은 다음과 같습니다.

메트릭 메트릭 표시 이름 단위 차원 설명
RequestCount 요청 수 Count HttpStatus
HttpStatusGroup
ClientRegion
ClientCountry
Front Door에서 제공하는 클라이언트 요청 수
RequestSize 요청 크기 바이트 HttpStatus
HttpStatusGroup
ClientRegion
ClientCountry
클라이언트에서 Front Door로, 요청으로 전송된 바이트 수
ResponseSize 응답 크기 바이트 HttpStatus
HttpStatusGroup
ClientRegion
ClientCountry
Front Door에서 클라이언트로, 응답으로 전송된 바이트 수
TotalLatency 총 대기 시간 밀리초 HttpStatus
HttpStatusGroup
ClientRegion
ClientCountry
Front Door가 클라이언트 요청을 수신한 시점부터 AFD에서 클라이언트로 마지막 응답 바이트가 전송된 시점까지 총 소요 시간입니다.
BackendRequestCount 백 엔드 요청 수 Count HttpStatus
HttpStatusGroup
Backend
Front Door에서 백 엔드로 전송된 요청 수
BackendRequestLatency 백 엔드 요청 대기 시간 밀리초 백 엔드 Front Door에서 백 엔드의 마지막 응답 바이트를 받을 때까지 Front Door에서 백 엔드로 요청이 전송될 때 계산된 시간
BackendHealthPercentage 백 엔드 상태 비율 퍼센트 Backend
BackendPool
Front Door에서 백 엔드로 성공한 상태 프로브의 비율
WebApplicationFirewallRequestCount 웹 애플리케이션 방화벽 요청 수 Count PolicyName
RuleName
Action
Front Door의 애플리케이션 계층 보안에 의해 처리된 클라이언트 요청 수

활동 로그

활동 로그는 Azure Front Door(클래식) 프로필에서 수행된 작업에 대한 정보를 제공합니다. 또한 Azure Front Door(클래식) 프로필에 대해 수행한 쓰기 작업(넣기, 게시 또는 삭제)에 대해 무엇을, 누가, 언제 수행하는지 결정합니다.

참고 항목

원본에 대한 요청 시간이 초과되면 HttpStatusCode 값이 0으로 설정됩니다.

Front Door의 활동 로그 또는 Azure Monitor에서 Azure 리소스의 모든 로그에 액세스합니다. 활동 로그를 보려면

  1. Front Door 인스턴스를 선택합니다.

  2. 활동 로그를 선택합니다.

    활동 로그

  3. 필터링 범위를 선택한 다음, 적용을 선택합니다.

참고 항목

활동 로그에는 GET 작업이나 Azure Portal 또는 원래 관리 API를 사용하여 수행하는 작업이 포함되지 않습니다.

진단 로그

진단 로그는 감사 및 문제 해결에 중요한 작업 및 오류에 관한 풍부한 정보를 제공합니다. 진단 로그는 활동 로그와 다릅니다.

활동 로그는 Azure 리소스에서 수행된 작업에 대한 인사이트를 제공합니다. 진단 로그는 리소스가 수행한 작업에 대한 정보를 제공합니다. 자세한 내용은 Azure Monitor 진단 로그를 참조하세요.

진단 로그

Azure Front Door(클래식)에 대한 진단 로그를 구성하려면:

  1. Azure Front Door(클래식) 프로필을 선택합니다.

  2. 진단 설정을 선택합니다.

  3. 진단 켜기를 선택합니다. 진단 로그를 메트릭과 함께 스토리지 계정에 보관하고, 이벤트 허브로 스트림하고, Azure Monitor 로그로 보냅니다.

Front Door는 현재 진단 로그를 제공합니다. 원시 로그는 각 항목에 다음 스키마가 포함된 개별 API 요청을 제공합니다.

속성 설명
BackendHostname 요청이 백 엔드에 전달되는 경우 이 필드는 백 엔드의 호스트 이름을 나타냅니다. 요청이 리디렉션되거나 지역 캐시(라우팅 규칙에 캐싱이 설정됨)로 전달되는 경우 이 필드는 비어 있습니다.
CacheStatus 캐싱 시나리오의 경우 이 필드는 POP에서 캐시 적중/누락을 정의합니다.
ClientIp 요청한 클라이언트의 IP 주소입니다. 요청에 X-Forwarded-For 헤더가 있는 경우 클라이언트 IP는 동일한 곳에서 선택됩니다.
ClientPort 요청한 클라이언트의 IP 포트입니다.
HttpMethod 요청에서 사용된 HTTP 메서드
HttpStatusCode 프록시에서 반환된 HTTP 상태 코드입니다. 원본에 대한 요청 시간이 초과되면 HttpStatusCode 값이 0으로 설정됩니다.
HttpStatusDetails 요청의 결과 상태입니다. 이 문자열 값의 의미는 상태 참조 테이블에서 찾을 수 있습니다.
HttpVersion 요청 또는 연결의 유형입니다.
POP 요청이 도달한 에지의 약식 이름입니다.
RequestBytes 요청 헤더 및 요청 본문을 포함하여 HTTP 요청 메시지의 크기(바이트)입니다.
RequestUri 받은 요청의 URI
ResponseBytes 백 엔드 서버에서 응답으로 보낸 바이트 수입니다.
RoutingRuleName 요청과 일치하는 라우팅 규칙의 이름입니다.
RulesEngineMatchNames 요청과 일치하는 규칙의 이름입니다.
SecurityProtocol 요청에 사용되는 TLS/SSL 프로토콜 버전이거나, 암호화가 없는 경우 null입니다.
SentToOriginShield
(사용되지 않음) * 다음 섹션에서 사용 중단에 대한 참고 사항을 참조하세요.
True이면 요청이 에지 POP가 아닌 원본 보호 캐시에서 응답되었음을 의미합니다. 원본 보호는 캐시 적중률을 향상하는 데 사용되는 부모 캐시입니다.
isReceivedFromClient True인 경우 요청이 클라이언트에서 나온 것을 의미합니다. False인 경우 요청이 에지(자식 POP)에서 누락되고 원본 보호(부모 POP)에서 응답됩니다.
TimeTaken 요청의 첫 번째 바이트부터 마지막 응답 바이트까지의 시간(초)입니다.
TrackingReference Front Door에서 제공하는 요청을 식별하는 고유한 참조 문자열로, 클라이언트에 X-Azure-Ref 헤더로 전송됩니다. 특정 요청의 액세스 로그에서 세부 정보를 검색하는 데 필요합니다.
UserAgent 클라이언트에서 사용한 브라우저 유형입니다.
ErrorInfo 이 필드에는 추가 문제 해결을 위한 구체적인 오류 유형이 포함됩니다.
가능한 값은 다음과 같습니다.
NoError: 오류가 발견되지 않았음을 나타냅니다.
CertificateError: 일반 SSL 인증서 오류.
CertificateNameCheckFailed: SSL 인증서의 호스트 이름이 잘못되었거나 일치하지 않습니다.
ClientDisconnected: 클라이언트 네트워크 연결 때문에 요청이 실패했습니다.
UnspecifiedClientError: 제네릭 클라이언트 오류입니다.
InvalidRequest: 요청이 잘못되었습니다. 이 오류는 잘못된 형식의 헤더, 본문 및 URL 때문에 발생할 수 있습니다.
DNSFailure: DNS 오류가 발생했습니다.
DNSNameNotResolved: 서버 이름이나 주소를 확인할 수 없습니다.
OriginConnectionAborted: 원본과의 연결이 갑자기 중지되었습니다.
OriginConnectionError: 제네릭 원본 연결 오류입니다.
OriginConnectionRefused: 원본과의 연결을 설정할 수 없습니다.
OriginError: 제네릭 원본 오류입니다.
OriginInvalidResponse: 원본이 잘못되었거나 인식할 수 없는 응답을 반환했습니다.
OriginTimeout: 원본 요청에 대한 시간 제한이 만료되었습니다.
ResponseHeaderTooBig: 원본에서 너무 많은 응답 헤더를 반환했습니다.
RestrictedIP: 제한된 IP로 인해 요청이 차단되었습니다.
SSLHandshakeError: SSL 핸드셰이크 오류로 인해 원본과의 연결을 설정할 수 없습니다.
UnspecifiedError: 테이블의 오류에 맞지 않는 오류가 발생했습니다.
SSLMismatchedSNI: HTTP 메시지 헤더가 SSL/TLS 연결 설정 중에 TLS SNI 확장에 제공된 값과 일치하지 않아 요청이 잘못되었습니다.
결과 SSLMismatchedSNI는 SNI와 호스트 헤더 간의 불일치 경고와 함께 성공적인 요청을 나타내는 상태 코드입니다. 이 상태 코드는 Azure Front Door의 서비스 약관을 위반하는 기술인 도메인 프론팅을 의미합니다. SSLMismatchedSNI가 포함된 요청은 2024년 1월 22일 이후 거부됩니다.
Sni 이 필드는 TLS/SSL 핸드셰이크 중에 전송되는 SNI(서버 이름 표시)를 지정합니다. SSLMismatchedSNI 상태 코드가 있는 경우 정확한 SNI 값을 식별하는 데 사용할 수 있습니다. 또한 requestUri 필드의 호스트 값과 비교하여 불일치 문제를 검색하고 해결할 수 있습니다.

원본 보호로 전송됨 사용 중단

원시 로그 속성인 isSentToOriginShield는 더 이상 사용되지 않으며 새 필드인 isReceivedFromClient로 바뀌었습니다. 사용 중단된 필드를 이미 사용하고 있는 경우 새 필드를 사용하세요.

원시 로그는 CDN 에지(자식 POP)와 원본 보호 모두에서 생성된 로그를 포함합니다. 원본 보호는 전 세계에 전략적으로 배치되는 부모 노드를 말합니다. 이러한 노드는 원본 서버와 통신하여 원본에 대한 트래픽 부하를 줄입니다.

원본 보호로 이동하는 모든 요청에는 두 가지 로그 항목이 있습니다.

  • 에지 노드에 대한 항목 하나
  • 원본 보호에 대한 항목 하나

에지 노드 및 원본 보호에 대한 송신 또는 응답을 구분하려면 isReceivedFromClient 필드를 사용하여 올바른 데이터를 가져올 수 있습니다.

값이 false인 경우 요청이 원본 보호에서 에지 노드로 응답되는 것을 의미합니다. 이 방법은 원시 로그를 청구 데이터와 비교하는 데 효과적입니다. 원본 보호에서 에지 노드로의 송신에는 요금이 부과되지 않습니다. 에지 노드에서 클라이언트로의 송신에는 요금이 부과됩니다.

Log Analytics에서 원본 보호에 생성된 로그를 제외하는 Kusto 쿼리 샘플

AzureDiagnostics | where Category == "FrontdoorAccessLog" and isReceivedFromClient_b == true

참고 항목

다양한 라우팅 구성 및 트래픽 동작의 경우 backendHostname, cacheStatus, isReceivedFromClient 및 POP 필드와 같은 일부 필드는 서로 다른 값으로 응답할 수 있습니다. 다음 표에서는 이러한 필드가 다양한 시나리오에서 가질 수 있는 다양한 값을 설명합니다.

시나리오 로그 항목 수 POP BackendHostname isReceivedFromClient CacheStatus
캐싱을 사용하지 않는 라우팅 규칙 1 에지 POP 코드 요청이 전달된 백 엔드 True CONFIG_NOCACHE
캐싱을 사용하는 라우팅 규칙 에지 POP에서 캐시 적중 1 에지 POP 코드 비어 있음 True HIT
캐싱을 사용하는 라우팅 규칙 에지 POP에서 캐시가 누락되지만 부모 캐시 POP에서 캐시 적중 2 1. 에지 POP 코드
2. 부모 캐시 POP 코드
1. 부모 캐시 POP 호스트 이름
2. 비어 있음
1. True
2. False
1. MISS
2. HIT
캐싱을 사용하는 라우팅 규칙 에지 POP에서 캐시가 누락되지만 부모 캐시 POP에서 부분 캐시 적중 2 1. 에지 POP 코드
2. 부모 캐시 POP 코드
1. 부모 캐시 POP 호스트 이름
2. 캐시를 채우는 데 도움이 되는 백 엔드
1. True
2. False
1. MISS
2. PARTIAL_HIT
캐싱을 사용하는 라우팅 규칙 에지 POP에서 부분 적중되지만 부모 캐시 POP에서 캐시 적중 2 1. 에지 POP 코드
2. 부모 캐시 POP 코드
1. 에지 POP 코드
2. 부모 캐시 POP 코드
1. True
2. False
1. PARTIAL_HIT
2. HIT
캐싱을 사용하는 라우팅 규칙 에지 및 부모 캐시 POP에서 캐시 누락 2 1. 에지 POP 코드
2. 부모 캐시 POP 코드
1. 에지 POP 코드
2. 부모 캐시 POP 코드
1. True
2. False
1. MISS
2. MISS
요청을 처리하는 중 오류가 발생했습니다. 해당 없음

참고 항목

캐싱 시나리오에서 요청의 일부 바이트가 Azure Front Door 에지 또는 원본 보호 캐시에서 처리되고, 일부 바이트가 대규모 개체의 원본에서 처리되는 경우 캐시 상태 값은 partial_hit가 됩니다.

Azure Front Door는 개체 청크라는 기술을 사용합니다. 대용량 파일이 요청되면 Azure Front Door가 원본에서 파일의 더 작은 파일 조각을 검색합니다. Azure Front Door POP 서버가 요청된 파일의 전체 또는 바이트 범위를 수신한 후 Azure Front Door 에지 서버는 원본에서 파일을 8MB 청크로 요청합니다.

청크가 Azure Front Door 에지에 도착하면 캐시되고 사용자에게 즉시 제공됩니다. 그런 다음 Azure Front Door는 다음 청크를 병렬로 미리 가져옵니다. 이 프리페치를 사용하면 콘텐츠가 사용자보다 먼저 하나의 청크로 유지되도록 하여 대기 시간을 줄일 수 있습니다. 이 프로세스는 전체 파일을 다운로드하거나(요청된 경우), 모든 바이트 범위를 사용할 수 있거나(요청된 경우), 클라이언트에서 연결을 종료할 때까지 계속됩니다. 바이트 범위 요청에 대한 자세한 내용은 RFC 7233을 참조하세요. Azure Front Door는 수신되는 모든 청크를 캐시합니다. Front Door 캐시에서 전체 파일을 캐시할 필요는 없습니다. 파일 또는 바이트 범위에 대한 후속 요청은 Azure Front Door 캐시에서 제공됩니다. 모든 청크가 Azure Front Door에 캐시되지 않으면 프리페치를 사용하여 원본에서 청크를 요청합니다. 이 최적화는 원본 서버에서 바이트 범위 요청을 지원하는 기능을 사용합니다. 원본 서버에서 바이트 범위 요청을 지원하지 않으면 이 최적화가 적용되지 않습니다.

다음 단계