INTEGRITY Dokumentace

GraphQL Analytics API

Privacy Proxy zpřístupňuje metriky prostřednictvím Cloudflare GraphQL Analytics API. Všechny metriky lze dotazovat prostřednictvím jediného endpointu:

POST https://api.cloudflare.com/client/v4/graphql

Než začnete, budete potřebovat:


Vytvoření požadavku

Následující příklad ukazuje, jak pomocí curl dotázat denní objem požadavků z metrik Privacy Proxy. Zástupné hodnoty nahraďte vlastními.

curl https://api.cloudflare.com/client/v4/graphql \
  --header "Authorization: Bearer <API_TOKEN>" \
  --header "Content-Type: application/json" \
  --data '{
    "query": "query DailyRequestVolume($accountTag: String!, $startDate: Date!, $endDate: Date!) { viewer { accounts(filter: { accountTag: $accountTag }) { privacyProxyRequestMetricsAdaptiveGroups(filter: { date_geq: $startDate, date_leq: $endDate }, limit: 10000, orderBy: [date_ASC]) { count dimensions { date } } } } }",
    "variables": {
      "accountTag": "<YOUR_ACCOUNT_TAG>",
      "startDate": "2026-04-04",
      "endDate": "2026-04-06"
    }
  }'

Dostupné uzly

K dispozici jsou čtyři uzly GraphQL. Všechny čtyři vracejí pouze agregovaná data, žádné surové záznamy jednotlivých připojení nejsou zpřístupněny.

  1. privacyProxyRequestMetricsAdaptiveGroups : dotazuje se na souhrnný objem požadavků a chybovost, filtrovatelné podle času, lokality, endpointu, stavového kódu a stavu proxy.
  2. privacyProxyIngressConnMetricsAdaptiveGroups : dotazuje se na počty připojení klient-proxy, přenesené bajty a percentily latence, filtrovatelné podle času, lokality, endpointu a typu přenosu.
  3. privacyProxyEgressConnMetricsAdaptiveGroups : dotazuje se na počty připojení proxy-origin, přenesené bajty a percentily latence, filtrovatelné podle času, lokality, endpointu a typu přenosu.
  4. privacyProxyAuthMetricsAdaptiveGroups : dotazuje se na počty pokusů o autentizaci, filtrovatelné podle času, lokality, endpointu, metody autentizace a výsledku autentizace.

Schéma

Metriky

Součet polí

Pole Typ Popis Node
bytesSentToClient uint64 Celkový počet bajtů odeslaných proxy zpět klientovi. Příchozí připojení
bytesRecvdFromClient uint64 Celkový počet bajtů přijatých proxy od klienta. Příchozí připojení
bytesSentToOrigin uint64 Celkový počet bajtů odeslaných proxy k upstreamovému originu. Odchozí připojení
bytesRecvdFromOrigin uint64 Celkový počet bajtů přijatých proxy od upstreamového originu. Odchozí připojení
packetsSentToClient uint64 Celkový počet paketů odeslaných proxy zpět klientovi. Příchozí připojení
packetsRecvdFromClient uint64 Celkový počet paketů přijatých proxy od klienta. Příchozí připojení
packetsSentToOrigin uint64 Celkový počet paketů odeslaných proxy k upstreamovému originu. Odchozí připojení
packetsRecvdFromOrigin uint64 Celkový počet paketů přijatých proxy od upstreamového originu. Odchozí připojení

Počítaná pole

Všechny čtyři uzly poskytují count pole, které vrací celkový počet vzorkovaných událostí (požadavků, připojení nebo pokusů o autentizaci) odpovídajících filtru dotazu.

Kvantilová pole

Pole Typ Popis Node
durationMsP50 float64 Medián doby trvání připojení v milisekundách. Příchozí a odchozí připojení
durationMsP95 float64 95. percentil doby trvání připojení v milisekundách. Příchozí a odchozí připojení
durationMsP99 float64 99. percentil doby trvání připojení v milisekundách. Příchozí a odchozí připojení
handshakeDurationUsP50 float64 Medián doby handshake TCP+TLS/QUIC v mikrosekundách. Příchozí a odchozí připojení
handshakeDurationUsP95 float64 95. percentil doby handshake v mikrosekundách. Příchozí a odchozí připojení
handshakeDurationUsP99 float64 99. percentil doby handshake v mikrosekundách. Příchozí a odchozí připojení
connectRequestHandlingDurationUsP50 float64 Medián doby zpracování požadavku CONNECT, v mikrosekundách. Zatím není k dispozici. Požadavek
connectRequestHandlingDurationUsP95 float64 95. percentil doby zpracování požadavku CONNECT v mikrosekundách. Zatím není k dispozici. Požadavek
connectRequestHandlingDurationUsP99 float64 99. percentil doby zpracování požadavku CONNECT v mikrosekundách. Zatím není k dispozici. Požadavek
connectTunnelSetupDurationUsP50 float64 Medián doby potřebné k navázání tunelu po přijetí požadavku CONNECT, v mikrosekundách. Zatím není k dispozici. Požadavek
connectTunnelSetupDurationUsP95 float64 95. percentil doby nastavení tunelu v mikrosekundách. Zatím není k dispozici. Požadavek
connectTunnelSetupDurationUsP99 float64 99. percentil doby nastavení tunelu v mikrosekundách. Zatím není k dispozici. Požadavek

Dimenze

Všechny uzly

Pole Typ Popis
date Date Kalendářní datum (s granularitou na den).
datetimeMinute Time Časové razítko zaokrouhlené na celou minutu.
datetimeFiveMinutes Time Časové razítko zaokrouhlené na pětiminutové intervaly.
datetimeFifteenMinutes Time Časové razítko zaokrouhlené na patnáctiminutové intervaly.
datetimeHour Time Časové razítko zaokrouhlené na celou hodinu.
coloCode string Datové centrum Cloudflare, které požadavek zpracovalo.
endpoint string appId, který vygeneroval provoz.

Všechny časové dimenze se vztahují ke konci připojení nebo požadavku, nikoli k jeho začátku.

Pouze uzel požadavku

Pole Typ Popis
statusCode uint16 Stavový kód HTTP, který proxy vrací klientovi.
proxyStatus string Klasifikace chyb na úrovni proxy. null pokud nedošlo k žádné chybě na úrovni proxy. Viz referenční dokumentace o stavu proxy pro možné hodnoty.
tunnelType string Použitý protokol tunelu (connect-tcp, connect-udp, connect-ip). Zatím není k dispozici.

Pouze uzel příchozího připojení

Pole Typ Popis
transport string Transportní protokol na spojení mezi klientem a proxy (tcp, quic).
tlsVersion string Verze TLS sjednaná na spojení mezi klientem a proxy. Zatím není k dispozici.

Pouze uzel odchozího připojení

Pole Typ Popis
transport string Transportní protokol na spojení mezi proxy a originem (tcp, quic).

Pouze uzel pro autentizaci

Pole Typ Popis
authMethod string Použitá metoda autentizace (například Token, Psk).
authResult string Výsledek autentizace (success, failure).

Argumenty

Všechny čtyři uzly mají stejnou signaturu argumentů.


Ukázkové dotazy

uzel privacyProxyRequestMetricsAdaptiveGroups

Přehled objemu požadavků

Získejte celkový přehled o objemu požadavků za zvolené období.

query DailyRequestVolume(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyRequestMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        dimensions {
          date
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

Rozdělení chyb podle stavového kódu a stavu proxy

Zjistěte, které stavové kódy HTTP a chyby na úrovni proxy se vyskytují, a určete tak zdroj selhání.

query ErrorBreakdown(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyRequestMetricsAdaptiveGroups(
        filter: {
          datetimeFifteenMinutes_geq: $start
          datetimeFifteenMinutes_leq: $end
          statusCode_geq: 400
        }
        limit: 10000
        orderBy: [datetimeFifteenMinutes_ASC]
      ) {
        count
        dimensions {
          datetimeFifteenMinutes
          statusCode
          proxyStatus
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T00:00:00Z",
  "end": "2026-04-06T23:59:59Z"
}

Nejčastější chyby proxy podle frekvence

Seřaďte nejčastější typy chyb proxy, abyste určili priority při vyšetřování.

query TopProxyErrors(
  $accountTag: String!
  $start: Date!
  $end: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyRequestMetricsAdaptiveGroups(
        filter: {
          date_geq: $start
          date_leq: $end
          proxyStatus_neq: ""
        }
        limit: 10000
        orderBy: [count_DESC]
      ) {
        count
        dimensions {
          proxyStatus
          statusCode
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04",
  "end": "2026-04-06"
}

Rozložení typů tunelů

Sledujte podíl connect-tcp, connect-udp, a connect-ip v čase, abyste pochopili, jak se klienti připojují.

query TunnelTypeDistribution(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyRequestMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        dimensions {
          date
          tunnelType
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

uzel privacyProxyIngressConnMetricsAdaptiveGroups

Přehled objemu připojení a příchozích bajtů

Získejte celkový přehled o denním počtu příchozích připojení a objemu přenesených dat.

query IngressTrafficOverview(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyIngressConnMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        sum {
          bytesSentToClient
          bytesRecvdFromClient
        }
        dimensions {
          date
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

Doba trvání připojení podle datového centra

Porovnejte dobu trvání připojení klient-proxy napříč datovými centry a zjistěte regiony s dlouho trvajícími nebo zaseknutými připojeními.

query IngressDurationByColo(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyIngressConnMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [quantiles_durationMsP50_DESC]
      ) {
        quantiles {
          durationMsP50
          durationMsP95
          durationMsP99
        }
        dimensions {
          coloCode
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

Rozložení protokolů a verzí TLS

Pochopení toho, které transportní protokoly (QUIC oproti TCP) a verze TLS vaši klienti používají, vám pomůže naplánovat ukončení podpory, odhalit špatně nakonfigurované klienty a ověřit, že provoz splňuje vaše bezpečnostní požadavky.

query IngressProtocolDistribution(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyIngressConnMetricsAdaptiveGroups(
        filter: {
          datetimeFifteenMinutes_geq: $start
          datetimeFifteenMinutes_leq: $end
        }
        limit: 10000
        orderBy: [datetimeFifteenMinutes_ASC]
      ) {
        count
        dimensions {
          datetimeFifteenMinutes
          transport
          tlsVersion
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T00:00:00Z",
  "end": "2026-04-06T23:59:59Z"
}

uzel privacyProxyEgressConnMetricsAdaptiveGroups

Přehled odchozích bajtů

Získejte celkový přehled o denním objemu dat přenášených mezi proxy a upstream origin serverem.

query EgressBytesOverview(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyEgressConnMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        sum {
          bytesSentToOrigin
          bytesRecvdFromOrigin
        }
        dimensions {
          date
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

Latence mezi proxy a origin serverem podle datacentra

Porovnejte doby handshake mezi proxy a origin serverem napříč datovými centry a zjistěte regiony se sníženou dostupností originu.

query EgressLatencyByColo(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyEgressConnMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [quantiles_handshakeDurationUsP50_DESC]
      ) {
        quantiles {
          handshakeDurationUsP50
          handshakeDurationUsP95
          handshakeDurationUsP99
        }
        dimensions {
          coloCode
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

Trend výkonu odchozího provozu

Sledujte latenci handshake mezi proxy a originem s vysokou granularitou v konkrétním časovém okně.

query EgressPerformanceTrend(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyEgressConnMetricsAdaptiveGroups(
        filter: {
          datetimeFiveMinutes_geq: $start
          datetimeFiveMinutes_leq: $end
        }
        limit: 10000
        orderBy: [datetimeFiveMinutes_ASC]
      ) {
        quantiles {
          handshakeDurationUsP50
          handshakeDurationUsP95
          handshakeDurationUsP99
        }
        count
        dimensions {
          datetimeFiveMinutes
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T08:00:00Z",
  "end": "2026-04-06T14:00:00Z"
}

uzel privacyProxyAuthMetricsAdaptiveGroups

Objem autentizací podle metody

Sledujte denní objem autentizací podle metody, abyste pochopili míru využívání a odhalili anomálie.

query AuthVolumeByMethod(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyAuthMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        dimensions {
          date
          authMethod
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

Detekce nárůstu chyb autentizace

Odhalte nárůsty chyb autentizace a zjistěte, která metoda autentizace selhává.

query AuthFailureSpike(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyAuthMetricsAdaptiveGroups(
        filter: {
          datetimeMinute_geq: $start
          datetimeMinute_leq: $end
          authResult: "failure"
        }
        limit: 10000
        orderBy: [datetimeFiveMinutes_ASC]
      ) {
        count
        dimensions {
          datetimeFiveMinutes
          authMethod
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T10:00:00Z",
  "end": "2026-04-06T14:00:00Z"
}

Úspěšnost autentizace

Porovnejte hodinové počty úspěchů a neúspěchů, abyste vypočítali úspěšnost autentizace a odhalili trendy zhoršování.

query AuthSuccessRate(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyAuthMetricsAdaptiveGroups(
        filter: {
          datetimeHour_geq: $start
          datetimeHour_leq: $end
        }
        limit: 10000
        orderBy: [datetimeHour_ASC]
      ) {
        count
        dimensions {
          datetimeHour
          authResult
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T00:00:00Z",
  "end": "2026-04-06T23:59:59Z"
}