Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

SQL クエリの例

最終更新 Markdown で表示Agent セットアップ

次の例は、Log Explorer の http_requests データセットで使える実践的な SQL クエリです。対応している 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 を探す

管理対象、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 別に帯域幅の消費が大きいものを探す

どのリクエスト 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 トラフィックを集計する

キャッシュステータス別にトラフィックを分解し、各ステータスの平均 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 

役に立ちましたか?