INTEGRITY Документация

Примеры SQL-запросов

Следующие примеры показывают практические SQL-запросы, которые можно использовать с http_requests набора данных в Log Explorer. Полный список поддерживаемого синтаксиса SQL см. в разделе Поддерживаемые SQL-запросы.

Измените диапазоны дат в каждом примере в соответствии с нужным периодом запроса.

Сводка по использованию CDN

Получите общую сводку по количеству запросов и объёму переданных данных за определённый период времени. Результаты включают общее количество переданных байт и их преобразование в мегабайты и гигабайты.

SELECT
  COUNT(*) AS total_requests,
  SUM(EdgeResponseBytes) AS total_data_transfer,
  SUM(EdgeResponseBytes) / (1024.0 * 1024.0 * 1024.0) AS total_data_transfer_gb,
  SUM(EdgeResponseBytes) / (1024.0 * 1024.0) AS total_data_transfer_mb
FROM
  http_requests
WHERE {{ timeFilter }}

Анализ распределения действий безопасности

Узнайте, как действия безопасности, такие как блокировки и проверки, распределяются по вашему трафику, и определите наиболее частые меры безопасности, применяемые к запросам.

SELECT
  SecurityAction,
  COUNT(*) AS ActionCount
FROM http_requests
WHERE SecurityAction != 'unknown'
  AND SecurityAction IS NOT NULL
GROUP BY SecurityAction
ORDER BY ActionCount DESC

Поиск IP-адресов, вызвавших проверки

Определите основные IP-адреса клиентов и URI запросов, вызвавшие управляемые, JavaScript- или интерактивные проверки, чтобы расследовать возможную активность ботов или целевые атаки.

SELECT
  ClientIP,
  ClientRequestURI,
  SecurityActions,
  COUNT(*) AS Count
FROM http_requests
WHERE {{ timeFilter }}
  AND (
    ARRAY_CONTAINS(SecurityActions, 'challenge')
    OR ARRAY_CONTAINS(SecurityActions, 'managedChallenge')
    OR ARRAY_CONTAINS(SecurityActions, 'jsChallenge')
    OR ARRAY_CONTAINS(SecurityActions, 'challengeSolved')
  )
GROUP BY
  ClientIP,
  ClientRequestURI,
  SecurityActions
ORDER BY Count DESC
LIMIT 20

Определение URI с наибольшим потреблением трафика

Определите, какие URI запросов потребляют больше всего трафика, чтобы выявить крупные объекты или конечные точки, обеспечивающие наибольшую передачу данных.

SELECT
  ClientRequestURI,
  SUM(EdgeResponseBytes) / (1024 * 1024) AS MegabytesTransferred
FROM http_requests
WHERE  {{ timeFilter }}
GROUP BY ClientRequestURI
ORDER BY MegabytesTransferred DESC
LIMIT 10

Анализ времени приёма-передачи клиентов по странам

Анализируйте время приёма-передачи TCP (RTT) клиентов по разным странам, чтобы выявить регионы с высокой задержкой, которым может помочь дополнительная оптимизация.

SELECT
  ClientCountry,
  COUNT(*) AS requests,
  AVG(ClientTCPRttMs) AS avg_rtt,
  MIN(ClientTCPRttMs) AS min_rtt,
  MAX(ClientTCPRttMs) AS max_rtt
FROM http_requests
WHERE {{ timeFilter }}
GROUP BY ClientCountry
ORDER BY avg_rtt DESC
LIMIT 20

Сводка по трафику CDN в разрезе статуса кэша

Разбейте трафик по статусу кеша и измерьте среднее время до первого байта (TTFB) для каждого статуса, чтобы оценить эффективность кеша и найти способы повысить долю попаданий в кеш.

SELECT
  CacheCacheStatus,
  COUNT(*) AS requests,
  SUM(EdgeResponseBytes) AS total_bytes,
  AVG(EdgeTimeToFirstByteMs) AS avg_ttfb
FROM http_requests
WHERE {{ timeFilter }}
GROUP BY CacheCacheStatus
ORDER BY requests DESC

Поиск самых медленных путей по времени до первого байта

Найдите пути запросов с наибольшим средним временем до первого байта (TTFB), а также количеством запросов и серверных ошибок, чтобы определить медленные конечные точки, которые могут нуждаться в оптимизации.

SELECT
  ClientRequestPath,
  AVG(EdgeTimeToFirstByteMs) AS avg_ttfb,
  COUNT(*) AS requests,
  SUM(CASE WHEN EdgeResponseStatus >= 500 THEN 1 ELSE 0 END) AS errors
FROM http_requests
WHERE {{ timeFilter }}
GROUP BY ClientRequestPath
ORDER BY avg_ttfb DESC
LIMIT 10