← Cloudflare Logs / logs / logpush
Разбор данных Cloudflare Logs в формате JSON
После загрузки данных Cloudflare Logs вы можете использовать различные инструменты для их разбора и анализа.
Одним из инструментов для разбора данных журналов в формате JSON выступает jq.
См. Загрузите jq ↗ с дополнительной информацией о получении и установке jq.
Агрегирование полей
Чтобы агрегировать поле, присутствующее в журнале, например по IP-адресу, URI или referrer, можно использовать несколько jq команды. Это полезно для выявления закономерностей в трафике, например для определения самых популярных страниц или для блокировки атаки.
Следующие примеры выполняют поиск по имени поля и подсчитывают количество вхождений каждого поля, отсортированных по возрастанию.
jq -r .ClientRequestURI logs.json | sort -n | uniq -c | sort -n | tail2 /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 | tail1 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-DEVjq -r .ClientRequestReferer logs.json | sort -n | uniq -c | sort -n | tail2 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 | tail1 "/favicon.ico"
1 "/testing"
3 "/testing123"
6 "/test"
6 "/testing1234"
18 "/"Чтобы узнать, какие IP-адреса чаще всего блокируются Cloudflare WAF, используйте следующий запрос:
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 hit
3 null
3 stale
4 expired
6 miss
81 unknownПоказать версии TLS
Чтобы узнать, какие версии TLS используют ваши посетители, например, чтобы решить, можно ли отключить версии TLS старше 1.2, используйте следующий запрос:
jq -r '.ClientSSLProtocol' logs.json | sort -n | uniq -c | sort -n42 none
58 TLSv1.2