← Cloudflare Realtime / realtime / turn
Analytics
Služba Cloudflare Realtime TURN počítá příchozí a odchozí využití v bajtech. K těmto aktuálním i historickým datům máte přístup přes TURN analytics API. Data o využití TURN můžete zobrazit jako časovou řadu nebo jako agregovaný přehled, který ukazuje provoz v bajtech v čase.
Analytika Cloudflare TURN je dostupná pouze přes GraphQL API.
Dostupné metriky a dimenze
Analytika TURN poskytuje bohatá data, která můžete dotazovat a agregovat různými způsoby.
Metriky
Dotazovat se můžete na následující metriky:
- egressBytes: Celkový počet bajtů odeslaných z TURN serverů klientům
- ingressBytes: Celkový počet bajtů přijatých TURN servery od klientů
- concurrentConnections: Průměrný počet souběžných připojení
Tyto metriky podporují agregace pomocí sum a avg funkce.
Dimenze
Svá data můžete rozčlenit podle následujících dimenzí:
- Agregace času:
datetime,datetimeMinute,datetimeFiveMinutes,datetimeFifteenMinutes,datetimeHour - Geografické:
datacenterCity,datacenterCountry,datacenterRegion(umístění datacentra Cloudflare) - Identita:
keyId,customIdentifier,username
Filtry
Data v analytice TURN můžete filtrovat podle:
- Rozsah data a času
- TURN Key ID
- TURN Username
- Vlastní identifikátor
GraphQL klienti
GraphQL je samodokumentující protokol. Ke zkoumání schématu a dostupných polí můžete použít libovolného klienta GraphQL. Mezi oblíbené možnosti patří:
- Altair ↗: Bohatě vybavený klient GraphQL s prohlížečem dokumentace schématu
- GraphiQL ↗: Původní GraphQL IDE
- Postman ↗: Podporuje dotazy GraphQL s introspekcí schématu
Chcete-li prozkoumat celé schéma, nakonfigurujte klienta pro připojení k https://api.cloudflare.com/client/v4/graphql s vašimi přihlašovacími údaji API. Viz Prozkoumejte schéma GraphQL pro podrobný návod.
Užitečné dotazy pro analytiku TURN
Níže najdete několik ukázkových dotazů pro běžné případy použití. Můžete je upravit podle svého případu použití a získat tak různé pohledy na analytická data.
Souběžná připojení s využitím dat v čase
Tento komplexní dotaz ukazuje, jak najednou získat více metrik, včetně souběžných připojení, odchozích a příchozích bajtů v pětiminutových intervalech. Hodí se pro tvorbu dashboardů a sledování využití v reálném čase.
query concurrentConnections {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
limit: 10000
filter: { date_geq: $dateFrom, date_leq: $dateTo }
) {
dimensions {
datetimeFiveMinutes
}
avg {
concurrentConnectionsFiveMinutes
}
sum {
egressBytes
ingressBytes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"accounts": [
{
"callsTurnUsageAdaptiveGroups": [
{
"avg": {
"concurrentConnectionsFiveMinutes": 816
},
"dimensions": {
"datetimeFiveMinutes": "2025-12-02T03:45:00Z"
},
"sum": {
"egressBytes": 207314144,
"ingressBytes": 8534200
}
},
{
"avg": {
"concurrentConnectionsFiveMinutes": 1945
},
"dimensions": {
"datetimeFiveMinutes": "2025-12-02T16:00:00Z"
},
"sum": {
"egressBytes": 462909020,
"ingressBytes": 128434592
}
},
]
}
]
}
]
}Klíče TURN s nejvyšším egressem
query egressByTurnKey{
viewer {
usage: accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
filter: {
date_geq: $dateFrom,
date_leq: $dateTo
}
limit: 2
orderBy: [sum_egressBytes_DESC]
) {
dimensions {
keyId
}
sum {
egressBytes
}
}
}
},
"errors": null
}
Příklad odpovědi:
{
"data": {
"viewer": {
"usage": [
{
"callsTurnUsageAdaptiveGroups": [
{
"dimensions": {
"keyId": "82a58d0aeabfa8f4a4e0c4a9efc9cda5"
},
"sum": {
"egressBytes": 160040068147
}
}
]
}
]
}
},
"errors": null
}Nejpoužívanější vlastní identifikátory TURN
query topTurnCustomIdentifiers {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
filter: { date_geq: $dateFrom, date_leq: $dateTo }
limit: 1
orderBy: [sum_egressBytes_DESC]
) {
dimensions {
customIdentifier
}
sum {
egressBytes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"accounts": [
{
"callsTurnUsageAdaptiveGroups": [
{
"dimensions": {
"customIdentifier": "some identifier"
},
"sum": {
"egressBytes": 160040068147
}
}
]
}
]
}
},
"errors": null
}Využití pro konkrétní vlastní identifikátor
query {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
filter: {
date_geq: $dateFrom
date_leq: $dateTo
customIdentifier: "tango"
}
limit: 100
orderBy: []
) {
dimensions {
keyId
customIdentifier
}
sum {
egressBytes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"usage": [
{
"callsTurnUsageAdaptiveGroups": [
{
"dimensions": {
"customIdentifier": "tango",
"keyId": "74007022d80d7ebac4815fb776b9d3ed"
},
"sum": {
"egressBytes": 162641324
}
}
]
}
]
}
},
"errors": null
}Využití jako časová řada (pro grafy)
query {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
filter: { date_geq: $dateFrom, date_leq: $dateTo }
limit: 100
orderBy: [datetimeMinute_ASC]
) {
dimensions {
datetimeMinute
}
sum {
egressBytes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"accounts": [
{
"callsTurnUsageAdaptiveGroups": [
{
"dimensions": {
"datetimeMinute": "2025-12-01T00:00:00Z"
},
"sum": {
"egressBytes": 159512
}
},
{
"dimensions": {
"datetimeMinute": "2025-12-01T00:01:00Z"
},
"sum": {
"egressBytes": 133818
}
},
... (more data here)
]
}
]
}
},
"errors": null
}Rozdělení využití podle geografické polohy
Data o využití si můžete rozčlenit podle polohy datacentra Cloudflare a zjistit tak, kde je váš provoz TURN obsluhován. To se hodí pro optimalizaci regionální kapacity a pochopení geografického rozložení vašich uživatelů.
query {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
limit: 100
filter: { date_geq: $dateFrom, date_leq: $dateTo }
orderBy: [sum_egressBytes_DESC]
) {
dimensions {
datacenterCity
datacenterCode
datacenterRegion
datacenterCountry
}
sum {
egressBytes
ingressBytes
}
avg {
concurrentConnectionsFiveMinutes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"accounts": [
{
"callsTurnUsageAdaptiveGroups": [
{
"avg": {
"concurrentConnectionsFiveMinutes": 3135
},
"dimensions": {
"datacenterCity": "Columbus",
"datacenterCode": "CMH",
"datacenterCountry": "US",
"datacenterRegion": "ENAM"
},
"sum": {
"egressBytes": 47720931316,
"ingressBytes": 19351966366
}
},
...
]
}
]
}
},
"errors": null
}Filtrovat podle konkrétního klíče nebo identifikátoru
Data můžete filtrovat a analyzovat konkrétní klíč TURN nebo vlastní identifikátor. Hodí se to při ladění konkrétních připojení nebo při analýze vzorců využití u jednotlivých klientů.
query {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
limit: 1000
filter: {
keyId: "82a58d0aeabfa8f4a4e0c4a9efc9cda5"
date_geq: $dateFrom
date_leq: $dateTo
}
orderBy: [datetimeFiveMinutes_ASC]
) {
dimensions {
datetimeFiveMinutes
keyId
}
sum {
egressBytes
ingressBytes
}
avg {
concurrentConnectionsFiveMinutes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"accounts": [
{
"callsTurnUsageAdaptiveGroups": [
{
"avg": {
"concurrentConnectionsFiveMinutes": 130
},
"dimensions": {
"datetimeFiveMinutes": "2025-12-01T00:00:00Z",
"keyId": "82a58d0aeabfa8f4a4e0c4a9efc9cda5"
},
"sum": {
"egressBytes": 609156,
"ingressBytes": 464326
}
},
{
"avg": {
"concurrentConnectionsFiveMinutes": 118
},
"dimensions": {
"datetimeFiveMinutes": "2025-12-01T00:05:00Z",
"keyId": "82a58d0aeabfa8f4a4e0c4a9efc9cda5"
},
"sum": {
"egressBytes": 534948,
"ingressBytes": 401286
}
},
...
]
}
]
}
},
"errors": null
}Možnosti agregace času
Podle potřeb své analýzy si můžete zvolit různé intervaly časové agregace:
datetimeMinute: intervaly po 1 minutě (nejpodrobnější)datetimeFiveMinutes: intervaly po 5 minutách (doporučeno pro dashboardy)datetimeFifteenMinutes: intervaly po 15 minutáchdatetimeHour: Hodinové intervaly (nejvhodnější pro dlouhodobé trendy)
Ukázkový dotaz s hodinovou agregací:
query {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
limit: 1000
filter: {
keyId: "82a58d0aeabfa8f4a4e0c4a9efc9cda5"
date_geq: $dateFrom
date_leq: $dateTo
}
orderBy: [datetimeFiveMinutes_ASC]
) {
dimensions {
datetimeFiveMinutes
keyId
}
sum {
egressBytes
ingressBytes
}
avg {
concurrentConnectionsFiveMinutes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"accounts": [
{
"callsTurnUsageAdaptiveGroups": [
{
"avg": {
"concurrentConnectionsFiveMinutes": 130
},
"dimensions": {
"datetimeFiveMinutes": "2025-12-01T00:00:00Z",
"keyId": "82a58d0aeabfa8f4a4e0c4a9efc9cda5"
},
"sum": {
"egressBytes": 609156,
"ingressBytes": 464326
}
},
{
"avg": {
"concurrentConnectionsFiveMinutes": 118
},
"dimensions": {
"datetimeFiveMinutes": "2025-12-01T00:05:00Z",
"keyId": "82a58d0aeabfa8f4a4e0c4a9efc9cda5"
},
"sum": {
"egressBytes": 534948,
"ingressBytes": 401286
}
},
...
]
}
]
}
},
"errors": null
}Pokročilé případy použití
Kombinování více rozměrů
V jednom dotazu můžete zkombinovat více dimenzí a získat tak podrobnější rozčlenění. Pokud chcete zobrazit využití podle času i polohy zároveň:
query {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
limit: 10000
filter: { date_geq: $dateFrom, date_leq: $dateTo }
orderBy: [datetimeHour_ASC, sum_egressBytes_DESC]
) {
dimensions {
datetimeHour
datacenterCity
datacenterCountry
}
sum {
egressBytes
ingressBytes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"accounts": [
{
"callsTurnUsageAdaptiveGroups": [
{
"dimensions": {
"datacenterCity": "Chennai",
"datacenterCountry": "IN",
"datetimeHour": "2025-12-01T00:00:00Z"
},
"sum": {
"egressBytes": 3416216,
"ingressBytes": 498927214
}
},
{
"dimensions": {
"datacenterCity": "Mumbai",
"datacenterCountry": "IN",
"datetimeHour": "2025-12-01T00:00:00Z"
},
"sum": {
"egressBytes": 1267076,
"ingressBytes": 1140140
}
},
...
]
}
]
}
},
"errors": null
}Identifikace hlavních spotřebitelů
Zjištění, které klíče nebo vlastní identifikátory využívají nejvíce šířky pásma:
query {
viewer {
accounts(filter: { accountTag: $accountId }) {
callsTurnUsageAdaptiveGroups(
limit: 10
filter: { date_geq: $dateFrom, date_leq: $dateTo }
orderBy: [sum_egressBytes_DESC, sum_ingressBytes_DESC]
) {
dimensions {
keyId
customIdentifier
}
sum {
egressBytes
ingressBytes
}
avg {
concurrentConnectionsFiveMinutes
}
}
}
}
}Příklad odpovědi:
{
"data": {
"viewer": {
"accounts": [
{
"callsTurnUsageAdaptiveGroups": [
{
"avg": {
"concurrentConnectionsFiveMinutes": 837305
},
"dimensions": {
"customIdentifier": "",
"keyId": "82a58d0aeabfa8f4a4e0c4a9efc9cda5"
},
"sum": {
"egressBytes": 160040068147,
"ingressBytes": 154955460564
}
}
]
}
]
}
},
"errors": null
}Prozkoumání schématu
GraphQL Analytics API je samodokumentující. Pomocí introspekce můžete zjistit všechna dostupná pole, filtry a možnosti pro callsTurnUsageAdaptiveGroups. Pomocí klienta GraphQL, jako je Altair nebo GraphiQL, můžete interaktivně procházet schéma a najít další dimenze a metriky, které mohou být užitečné pro váš konkrétní případ použití.
Další informace o introspekci GraphQL a prozkoumávání schématu najdete v: