次の例は、Log Explorer の http_requests データセットで使える実践的な SQL クエリです。対応している SQL 構文の一覧は、対応している SQL クエリ を参照してください。
各例の日付範囲は、照会したい期間に合わせて変更してください。
特定期間のリクエスト総数とデータ転送量の概要を取得します。結果には、転送バイトの合計と、メガバイト・ギガバイトへの換算が含まれます。
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管理対象、JavaScript、または対話型のチャレンジを引き起こした上位のクライアント IP アドレスとリクエスト URI を特定し、ボット活動や標的型攻撃の調査に使います。
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 が最も帯域幅を消費しているかを特定し、データ転送を押し上げている大きなアセットやエンドポイントを見つけます。
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キャッシュステータス別にトラフィックを分解し、各ステータスの平均 Time to First Byte(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平均 Time to First Byte(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