Skip to content

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

Cloudflare Logs の JSON データを解析する

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

Cloudflare Logs データをダウンロードしたあと、さまざまなツールでログを解析・分析できます。

JSON ログデータの解析に使えるツールのひとつが jq です。

jq の入手とインストールについては、Download jq を参照してください。

フィールドを集計する

ログに現れるフィールド(IP アドレス、URI、リファラーなど)を集計するには、いくつかの jq コマンドを使えます。トラフィックのパターンを特定するのに役立ちます。たとえば、人気ページの把握や攻撃のブロックに使えます。

次の例は、フィールド名に一致させ、各フィールドインスタンスの件数を、件数の昇順で返します。

jq -r .ClientRequestURI logs.json | sort -n | uniq -c | sort -n | tail
2 /nginx-logo.png
2 /poweredby.png
2 /testagain
3 /favicon.ico
3 /testing
3 /testing123
6 /test
7 /testing1234
10 /cdn-cgi/nexp/dok3v=1613a3a185/cloudflare/rocket.js
54 /
jq -r .ClientRequestUserAgent logs.json | sort -n | uniq -c | sort -n | tail
1 python-requests/2.9.1
2 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
4 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36
5 curl/7.47.2-DEV
36 Mozilla/5.0 (X11; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0
51 curl/7.46.0-DEV
jq -r .ClientRequestReferer logs.json | sort -n | uniq -c | sort -n | tail
2 http://example.com/testagain
3 http://example.com/testing
5 http://example.com/
5 http://example.com/testing123
7 http://example.com/testing1234
77 null

フィールドを絞り込む

別のよくある使い方は、特定のフィールド値でデータを絞り込んだあと、集計することです。「どの URL で 502 エラーが最も多かったか?」といった問いに答えられます。例:

jq 'select(.OriginResponseStatus == 502) | .ClientRequestURI' logs.json | sort -n | uniq -c | sort -n | tail
1 "/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 -n
1 127.0.0.1

キャッシュされたリクエストを表示する

キャッシュ比率を取得するには、次のクエリを試してください。

jq -r '.CacheCacheStatus' logs.json | sort -n | uniq -c | sort -n
3 hit
3 null
3 stale
4 expired
6 miss
81 unknown

TLS バージョンを表示する

訪問者がどの TLS バージョンを使っているかを調べるには(たとえば 1.2 より古い TLS バージョンを無効にできるかを判断する場合)、次のクエリを使います。

jq -r '.ClientSSLProtocol' logs.json | sort -n | uniq -c | sort -n
42 none
58 TLSv1.2

役に立ちましたか?