CloudflareログのJSONデータを解析する
Cloudflareログデータをダウンロードした後、さまざまなツールを使用してログを解析できます。
JSONログデータを解析するために使用されるツールの1つは、_jq_です。_jq_を始めるには、_jq_公式サイト ↗を訪れてください。
IPアドレス、URI、リファラーなど、ログに表示されるフィールドを集計するには、いくつかの_jq_コマンドを使用できます。これは、トラフィックのパターンを特定するのに役立ちます。たとえば、最も人気のあるページを特定したり、攻撃をブロックしたりするためです。
以下の例は、フィールド名に一致し、各フィールドインスタンスのカウントを提供し、カウントの昇順でソートします。
jq -r .ClientRequestURI logs.json | sort -n | uniq -c | sort -n | tail2 /nginx-logo.png2 /poweredby.png2 /testagain3 /favicon.ico3 /testing3 /testing1236 /test7 /testing123410 /cdn-cgi/nexp/dok3v=1613a3a185/cloudflare/rocket.js54 /jq -r .ClientRequestUserAgent logs.json | sort -n | uniq -c | sort -n | tail1 python-requests/2.9.12 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.174 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.365 curl/7.47.2-DEV36 Mozilla/5.0 (X11; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.051 curl/7.46.0-DEVjq -r .ClientRequestReferer logs.json | sort -n | uniq -c | sort -n | tail2 http://example.com/testagain3 http://example.com/testing5 http://example.com/5 http://example.com/testing1237 http://example.com/testing123477 nullもう1つの一般的な使用例は、特定のフィールド値のデータをフィルタリングし、その後に集計することです。これにより、「どのURLが最も多くの502エラーを受けたか?」という質問に答えるのに役立ちます。たとえば:
jq 'select(.OriginResponseStatus == 502) | .ClientRequestURI' logs.json | sort -n | uniq -c | sort -n | tail1 "/favicon.ico"1 "/testing"3 "/testing123"6 "/test"6 "/testing1234"18 "/"Cloudflare WAFによってブロックされた上位のIPアドレスを見つけるには、次のクエリを使用します:
jq -r 'select(.SecurityAction == "block") | .ClientIP' logs.json | sort -n | uniq -c | sort -n1 127.0.0.1キャッシュ比率を取得するには、次のクエリを試してください:
jq -r '.CacheCacheStatus' logs.json | sort -n | uniq -c | sort -n3 hit3 null3 stale4 expired6 miss81 unknown訪問者が使用しているTLSバージョンを確認するには、たとえば、TLS 1.2より古いバージョンを無効にできるかどうかを判断するために、次のクエリを使用します:
jq -r '.ClientSSLProtocol' logs.json | sort -n | uniq -c | sort -n42 none58 TLSv1.2