INTEGRITY Документация

Instant Logs

Instant Logs позволяет клиентам Cloudflare получать живой поток трафика своего домена через панель управления Cloudflare или интерфейс командной строки (CLI). Данные в реальном времени помогают расследовать атаки, диагностировать и устранять неполадки или тестировать изменения, внесённые в вашу сеть. Instant Logs представляет собой лёгкий и простой в использовании инструмент, не требующий дополнительной настройки.

Доступность

Free Pro Business Enterprise
Доступность Нет Нет Да Да

Instant Logs через панель управления Cloudflare

  1. На панели управления Cloudflare перейдите к разделу Instant Logs страницу.

    Перейдите в Instant Logs ↗
  2. Выберите Начать потоковую передачу.

  3. (необязательно) Выберите Добавить фильтр чтобы сузить круг отображаемых событий.

Поля, поддерживаемые в нашем Набор данных HTTP requests можно использовать при добавлении фильтров. Некоторые поля, для которых требуется дополнительная подписка, не поддерживаются в dashboard, для них понадобится интерфейс командной строки.

После выбора фильтра и запуска потока отображаются только строки журнала, соответствующие критериям фильтра. Фильтры не применяются задним числом к журналам, уже отображённым на панели управления.

Instant Logs через CLI

1. Создайте задание Instant Logs

Создайте сессию, отправив POST запрос к конечной точке задания Instant Logs со следующими параметрами:

Все поддерживаемые операторы перечислены в Фильтры страницу.

Ниже приведены три примера фильтров:

# 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-токена

Хотя бы одно из следующих права доступа токена требуется:
Создание задания Instant Logs
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 имеет три установленных ограничения:

При достижении любого из этих ограничений поток журналов автоматически останавливается.

Свяжитесь с нами

Если у вас есть пожелания по новым функциям или вы заметили ошибку, поделитесь отзывом напрямую с нами, присоединившись к Сообщество разработчиков Cloudflare в Discord ↗.