← Cloudflare Logs / logs
Instant Logs
Instant Logs позволяет клиентам Cloudflare получать живой поток трафика своего домена через панель управления Cloudflare или интерфейс командной строки (CLI). Данные в реальном времени помогают расследовать атаки, диагностировать и устранять неполадки или тестировать изменения, внесённые в вашу сеть. Instant Logs представляет собой лёгкий и простой в использовании инструмент, не требующий дополнительной настройки.
Доступность
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Доступность | Нет | Нет | Да | Да |
Instant Logs через панель управления Cloudflare
-
На панели управления Cloudflare перейдите к разделу Instant Logs страницу.
Перейдите в Instant Logs ↗ -
Выберите Начать потоковую передачу.
-
(необязательно) Выберите Добавить фильтр чтобы сузить круг отображаемых событий.
Поля, поддерживаемые в нашем Набор данных HTTP requests можно использовать при добавлении фильтров. Некоторые поля, для которых требуется дополнительная подписка, не поддерживаются в dashboard, для них понадобится интерфейс командной строки.
После выбора фильтра и запуска потока отображаются только строки журнала, соответствующие критериям фильтра. Фильтры не применяются задним числом к журналам, уже отображённым на панели управления.
Instant Logs через CLI
1. Создайте задание Instant Logs
Создайте сессию, отправив POST запрос к конечной точке задания Instant Logs со следующими параметрами:
-
Поля - Укажите любое поле, доступное в Набор данных HTTP requests.
-
Выборочный - Параметр sample задаёт частоту выборки записей, установленную клиентом:
"sample": 1это 100% записей"sample": 10равно 10%, и так далее.
- Фильтры - С помощью фильтров можно детально изучить отдельные события. Фильтр состоит из трёх частей: ключа, оператора и значения.
Все поддерживаемые операторы перечислены в Фильтры страницу.
Ниже приведены три примера фильтров:
# Filter when client IP country is not Canada:
"filter": "{\"where\":{\"and\":[{\"key\":\"ClientCountry\",\"operator\":\"neq\",\"value\":\"ca\"}]}}"# Filter when the status code returned from Cloudflare is either 200 or 201:
"filter": "{\"where\":{\"and\":[{\"key\":\"EdgeResponseStatus\",\"operator\":\"in\",\"value\":[200,201]}]}}"# Filter when the request path contains "/static" and the request hostname is "example.com":
"filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/static\"}, {\"where\":{\"and\":[{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"example.com\"}]}}"Пример запроса с использованием cURL:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Logs Read
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/edge/jobs" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"fields": "ClientIP,ClientRequestHost,ClientRequestMethod,ClientRequestURI,EdgeEndTimestamp,EdgeResponseBytes,EdgeResponseStatus,EdgeStartTimestamp,RayID",
"sample": 100,
"filter": "",
"kind": "instant-logs"
}'Ответ:
В ответ будет добавлено новое поле с именем destination_conf. Значением этого поля является ваш уникальный адрес WebSocket, на который будут поступать сообщения из глобальной сети Cloudflare.
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"fields": "ClientIP,ClientRequestHost,ClientRequestMethod,ClientRequestURI,EdgeEndTimestamp,EdgeResponseBytes,EdgeResponseStatus,EdgeStartTimestamp,RayID",
"sample": 100,
"filter": "",
"destination_conf": "wss://logs.cloudflare.com/instant-logs/ws/sessions/<SESSION_ID>",
"kind": "instant-logs"
},
"success": true
}2. Подключитесь к WebSocket
С помощью утилиты командной строки, такой как Websocat ↗, вы можете подключиться к WebSocket и сразу начать получать журналы.
websocat wss://logs.cloudflare.com/instant-logs/ws/sessions/<SESSION_ID>Ответ:
После подключения к веб-сокету вы начнёте получать сообщения в формате JSON, разделённого переносами строк.
Angle Grinder
Теперь, когда у вас есть подключение к websocket Cloudflare и вы получаете журналы из глобальной сети Cloudflare, можно приступать к детальному анализу журналов. Удобным инструментом для этого служит Angle Grinder ↗. Angle Grinder позволяет применять фильтрацию, преобразования и агрегации к stdin с полноценной поддержкой JSON. Например, чтобы получить число посетителей по каждой стране, можно просуммировать число событий по ClientCountry поле.
websocat wss://logs.cloudflare.com/instant-logs/ws/sessions/<SESSION_ID> | agrind '* | json | sum(sampleInterval) by ClientCountry'Ответ:
| ClientCountry | _sum |
|---|---|
| pt | 4 |
| fr | 3 |
| нас | 3 |
| om | 2 |
| ar | 1 |
| au | 1 |
Доступные наборы данных
Пока что HTTP requests это единственный поддерживаемый набор данных. В будущем мы расширим поддержку на другие наборы данных.
Экспорт
Таблицу журналов, отображаемую в панели управления, можно скачать в формате JSON через Экспорт кнопку.
Лимиты
Instant Logs имеет три установленных ограничения:
- На одну зону допускается не более одного активного сеанса Instant Logs.
- Максимальное время сеанса составляет 60 минут.
- Если вы прекращаете прослушивание сокета более чем на пять минут.
При достижении любого из этих ограничений поток журналов автоматически останавливается.
Свяжитесь с нами
Если у вас есть пожелания по новым функциям или вы заметили ошибку, поделитесь отзывом напрямую с нами, присоединившись к Сообщество разработчиков Cloudflare в Discord ↗.