← Cloudflare Logs / logs / logpush / logpush-job / enable-destinations
Включите Splunk
HTTP Event Collector (HEC) ↗ это надежный способ получения данных от Splunk Enterprise или Splunk Cloud Platform. Cloudflare Logpush поддерживает отправку журналов напрямую в Splunk HEC через панель управления Cloudflare или через API.
Управление через панель управления Cloudflare
-
На панели управления Cloudflare перейдите к разделу Logpush на уровне аккаунта или домена (также называемого зоной).
Для аккаунта: Перейдите в Logpush ↗
Для домена (также называемого зоной): Перейдите в Logpush ↗
-
В зависимости от выбора вам доступны наборы данных уровня аккаунта и наборы данных, привязанные к зоне, соответственно.
-
Выберите Создание задания Logpush.
-
В Выберите пункт назначения, выберите Splunk.
-
Введите или выберите следующую информацию о получателе:
- Splunk HEC URL
- ID канала - Это случайный GUID, который можно сгенерировать с помощью guidgenerator.com ↗.
- Auth Token - Токен Event Collector с префиксом в виде слова
Splunk. Например:Splunk 1234EXAMPLEKEY. - Тип источника - Например,
cloudflare:json. Если вы используете Cloudflare App for Splunk ↗, см. соответствующий source type для нужных наборов данных в разделе Подробности разделе. Например, для логов запросов Zero Trust Access тип источникаcloudflare:access. - Использование параметра insecure skip verify (не рекомендуется).
Когда вы закончите вводить данные получателя, выберите Продолжение.
-
Выберите набор данных для отправки в хранилище.
-
На следующем шаге настройте задание Logpush:
- Введите Название задания.
- В разделе Если журналы соответствуют, вы можете выбрать, какие события включить в журналы или исключить из них. См. Фильтры с дополнительной информацией. Эта опция доступна не для всех наборов данных.
- В Отправьте следующие поля, вы можете либо отправлять в хранилище назначения все журналы, либо выбирать, какие журналы отправлять.
-
В Advanced Options, вы можете:
- Выберите формат полей отметки времени в своих журналах (
RFC3339(по умолчанию),Unix, илиUnixNano). - Выберите частота сэмплирования для ваших журналов или отправлять случайно выбранный процент журналов.
- Включите скрытие данных для
CVE-2021-44228. Эта опция заменит каждое вхождение${сx{.
- Выберите формат полей отметки времени в своих журналах (
-
Выберите Отправить после того как настройка задания Logpush завершена.
Управление через API
Чтобы настроить задание Logpush для Splunk:
- Создайте задание, указав соответствующий URL конечной точки и параметры аутентификации.
- Включите задание, чтобы оно начало отправлять журналы.
Убедитесь Log Share разрешения включены, прежде чем пытаться читать или настраивать задание Logpush. Дополнительные сведения см. в Раздел Roles.
1. Создайте задание
Чтобы создать задание, выполните POST запрос к конечной точке заданий Logpush со следующими полями:
-
имя (необязательно) - Используйте имя своего домена в качестве имени задания.
-
destination_conf - Получатель журналов, состоящий из URL эндпойнта, ID канала, флага insecure-skip-verify, типа источника и заголовка авторизации в формате строки ниже.
- <SPLUNK_ENDPOINT_URL>: URL-адрес raw HTTP Event Collector Splunk с портом. Например:
splunk.cf-analytics.com:8088/services/collector/raw.- Cloudflare ожидает, что эндпойнт Splunk будет
/services/collector/rawпри настройке и создании задания Logpush. - Убедитесь, что HEC включен в Splunk. См. Интеграции Splunk Analytics с информацией о настройке HEC в Splunk.
- При добавлении неверного URL вы можете заметить, что запрос к API завершается ошибкой 504. URL конечной точки Splunk Cloud обычно содержит
http-inputs-или похожего текста перед именем хоста.
- Cloudflare ожидает, что эндпойнт Splunk будет
- <SPLUNK_CHANNEL_ID>: Уникальный ID канала. Это случайный GUID, который можно сгенерировать следующим образом:
- С помощью онлайн-инструмента, такого как Генератор GUID ↗.
- С помощью командной строки. Например:
python -c 'import uuid; print(uuid.uuid4())'.
- <INSECURE_SKIP_VERIFY>: Логическое значение. Cloudflare рекомендует установить это значение в
false. Если задать для этого значенияtrueэквивалентно использованию-kопцию сcurlкак показано в примерах Splunk, и является не рекомендуется. Устанавливайте это значение только вtrueкогда HEC использует самоподписанный сертификат.
- <SOURCE_TYPE>: Тип источника Splunk. Например:
cloudflare:json. - <SPLUNK_AUTH_TOKEN>: Токен авторизации Splunk, закодированный в URL-формате, который должен начинаться со слова
Splunk. Например:Splunk e6d94e8c-5792-4ad1-be3c-29bcaee0197d.
- <SPLUNK_ENDPOINT_URL>: URL-адрес raw HTTP Event Collector Splunk с портом. Например:
"splunk://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=<INSECURE_SKIP_VERIFY>&sourcetype=<SOURCE_TYPE>&header_Authorization=<SPLUNK_AUTH_TOKEN>"-
dataset - Категория журналов, которые вы хотите получать. См. Наборы данных для полного списка поддерживаемых наборов данных.
-
output_options (необязательно) - Чтобы настроить поля, частоту выборки и формат временной метки, см. Параметры вывода журнала. Для временной метки Cloudflare рекомендует использовать
timestamps=rfc3339.
Пример запроса с использованием cURL:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Logs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "<DOMAIN_NAME>",
"destination_conf": "splunk://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=<INSECURE_SKIP_VERIFY>&sourcetype=<SOURCE_TYPE>&header_Authorization=<SPLUNK_AUTH_TOKEN>",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"dataset": "http_requests",
"enabled": true
}'Ответ:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "splunk://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=<INSECURE_SKIP_VERIFY>&sourcetype=<SOURCE_TYPE>&header_Authorization=<SPLUNK_AUTH_TOKEN>",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}См. Управлять Logpush с помощью cURL чтобы обновить задание (включая включение и отключение).
См. Logpush (FAQ) с информацией по устранению неполадок.
3. Создайте пользовательское правило WAF для конечной точки Splunk HEC (необязательно)
Если имя хоста цели Logpush проксируется через Cloudflare, а у вас включён Cloudflare Web Application Firewall (WAF), запрос Cloudflare к Splunk HTTP Event Collector (HEC) может быть заблокирован или потребовать прохождения проверки. Чтобы этого не произошло, необходимо создать пользовательское правило который позволяет Cloudflare обходить конечную точку HEC.
-
На панели управления Cloudflare перейдите к разделу Правила безопасности страницу.
Перейдите в Правила безопасности ↗ -
Выберите Создать правило > Custom rules.
-
Введите понятное название правила (например,
Splunk). -
В разделе Когда входящие запросы соответствуют, используйте Поле, Оператор, а также Значение и создайте правило. После заполнения каждой строки выберите И чтобы создать следующую строку правил. Значения, которые нужно ввести, см. в таблице ниже:
Поле Оператор Значение Request Method equalsPOSTИмя хоста equalsИмя хоста конечной точки Splunk. Например: splunk.cf-analytics.comURI Path equals/services/collector/rawСтрока запроса URI containschannelAS Num is in13335,132892,202623User Agent equalsGo-http-client/2.0 -
После ввода значений, как показано в таблице, в Expression Preview должны появиться значения, добавленные для вашего конкретного правила. В примере ниже используется имя хоста
splunk.cf-analytics.com.(http.request.method eq "POST" and http.host eq "splunk.cf-analytics.com" and http.request.uri.path eq "/services/collector/raw" and http.request.uri.query contains "channel" and ip.geoip.asnum in {13335 132892 202623} and http.user_agent eq "Go-http-client/2.0") -
В разделе Затем > Выберите действие раскрывающемся списке выберите Пропустить.
-
В разделе WAF components to skip, выберите Все управляемые правила.
-
Выберите Развернуть.
Теперь WAF должен игнорировать запросы, которые Cloudflare отправляет в Splunk HEC.
Устранение неполадок с получателями Splunk
Проверка ошибок получателя
Если при настройке задания для Splunk вы получаете ошибку проверки, проверьте следующее:
- Endpoint URL: Cloudflare поддерживает конечную точку Splunk HEC raw только по HTTPS. Убедитесь, что URL-адрес конечной точки указан верно и включает порт (обычно
:8088). - Токен аутентификации: Убедитесь, что токен аутентификации Splunk закодирован в URL-формате и имеет в начале
Splunk. Например, используйте%20для пробелов в токене. - Настройка сертификата: Сертификаты, сгенерированные Splunk, или сертификаты сторонних производителей должны иметь Общее имя соответствовало доменному имени сервера Splunk. Иначе могут появиться ошибки вида:
x509: certificate is valid for SplunkServerDefaultCert, not <YOUR_INSTANCE>.splunkcloud.com.
Основные сведения о insecure-skip-verify
insecure-skip-verify параметр, если установлено значение true, устанавливает незащищённое соединение со Splunk. Это эквивалентно использованию -k опцию с curl и является не рекомендуется.
Почему существует этот параметр: Сертификаты, сгенерированные Splunk, или сертификаты сторонних производителей, как правило, должны иметь Общее имя соответствовало доменному имени сервера Splunk. Если они не совпадают (особенно при использовании стандартных сертификатов, которые Splunk генерирует при запуске), отправка не будет выполняться, пока сертификаты не будут исправлены. Этот параметр предназначен для редких случаев, когда у вас нет доступа к сертификатам или возможности их изменить, например для инстансов Splunk Cloud, которые не позволяют менять конфигурацию сервера.
Проверка HEC перед настройкой
Прежде чем создавать задание Logpush, убедитесь, что ваш Splunk HEC работает корректно, опубликовав тестовые события через curl без -k флагом и с insecure-skip-verify=false:
curl "https://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=false&sourcetype=<SOURCE_TYPE>" \
--header "Authorization: Splunk <SPLUNK_AUTH_TOKEN>" \
--data '{"BotScore":99,"BotScoreSrc":"Machine Learning","CacheCacheStatus":"miss","CacheResponseBytes":2478}'Ожидаемый ответ:
{"text":"Success","code":0}Требования к сетевым портам
Cloudflare ожидает, что сетевой порт HEC настроен на :443 или :8088. Другие порты не поддерживаются.
Интеграция Cloudflare Splunk App
Logpush интегрируется с Cloudflare App for Splunk ↗. Если вы получаете журналы с помощью cloudflare:json типе источника вы можете использовать Cloudflare Splunk App для анализа и визуализации логов.
Подробные инструкции по настройке приведены в Интеграция Splunk Analytics.