Интеграция Splunk HTTP Event Collector с Apache APISIX

API7.ai

February 10, 2022

Ecosystem

Сложность систем увеличивается по мере итерации технологий и развития архитектуры предприятий. Логи могут поддерживать и быть совместимыми с различными аналитическими движками, чтобы снизить затраты пользователей на выбор, эксплуатацию и обслуживание. Лог-ориентированный анализ и наблюдение играют очень важную роль как основа для обеспечения стабильности системы.

Apache APISIX — это не только API-шлюз с исключительной производительностью, но и поддерживает большинство популярных открытых и коммерческих решений для логирования благодаря взаимодействию с пользователями сообщества по вопросам работы с данными и логированием, включая: HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS), Google Cloud Logging и другие.

Теперь в матрицу поддержки логгеров Apache APISIX добавлен новый элемент: Splunk HEC Logging.

Эта статья объясняет, как настроить и использовать службу Splunk HEC в Apache APISIX.

О Splunk HTTP Event Collector

Splunk — это полнотекстовый поисковый движок для машинных данных, который может использоваться для сбора, индексации, поиска и анализа данных из различных приложений. Согласно рейтингу поисковых систем DB Engines, Splunk в настоящее время занимает второе место и является широко используемым программным обеспечением для полнотекстового поиска. Splunk, как и ElasticSearch, представляет собой квазиреальный поток данных, который предоставляет непрерывные результаты поиска.

Splunk HTTP Event Collector (HEC) — это HTTP-коллектор событий, предоставляемый Splunk, который позволяет отправлять данные и события приложений в Splunk с использованием протокола HTTP(S).

О плагине splunk-hec-logging

Плагин splunk-hec-logging используется для пересылки логов запросов Apache APISIX в Splunk для анализа и хранения. При включении Apache APISIX будет собирать информацию о контексте запроса на этапе Log, сериализовать её в формат данных событий Splunk и помещать в пакетную очередь. Данные в очереди отправляются в Splunk HEC, когда достигается максимальная ёмкость обработки пакетной очереди или максимальное время обновления буфера.

Как использовать плагин splunk-hec-logging

Настройка Splunk

Развертывание Splunk Enterprise

Пожалуйста, обратитесь к руководству по установке Splunk для развертывания. В этой статье будет показано развертывание через Docker.

Параметры команды Docker следующие.

docker run -p 18088:8088 -p 18000:8000 \ # 8088 — порт HEC, 8000 — порт управления -e "SPLUNK_PASSWORD=your-password" \ # Пароль администратора -e "SPLUNK_START_ARGS=--accept-license" \ # Принять условия лицензии (Splunk предоставляет пробную лицензию Enterprise по умолчанию) -e "SPLUNK_HEC_TOKEN=your-hec-token" \ # Установить токен HEC по умолчанию, это создаст HEC по умолчанию после настройки -itd --rm --name splunk-example splunk/splunk:latest

Параметры команды объясняются в документации Docker Splunk.

Настройка Splunk HEC

HEC по умолчанию уже настроен и создан в Docker, поэтому мы не будем рассматривать процесс его создания здесь. Подробности о ручном процессе создания можно найти в документации: Set up and use HTTP Event Collector in Splunk Web.

Вход в Splunk Enterprise и проверка HEC

Доступ к отображенному порту Docker через браузер. Поскольку необходимо отобразить порт 8000 управления на порт 18000 хоста, вы можете получить доступ через браузер, используя "адрес обратной петли плюс порт" на хосте во время работы. Например: http://127.0.0.1:18000, имя пользователя по умолчанию для входа — admin, а пароль — значение SPLUNK_PASSWORD, установленное в переменной окружения в примере выше.

Как показано на рисунке ниже, это означает успешный вход.

Splunk UI

Нажмите "Settings > Data Inputs" в верхнем правом углу экрана, чтобы проверить, успешно ли настроен HEC по умолчанию.

Default HEC

Мы уже можем увидеть количество HEC в столбце Inputs HTTP Event Collector, что указывает на успешную настройку.

the number of HECs

На этом этапе вы можете нажать HTTP Event Collector, чтобы перейти к списку деталей HEC и просмотреть информацию о токенах HEC.

HECs Token information

Token Values — это значение SPLUNK_HEC_TOKEN, настроенное в переменной окружения Docker выше.

Настройка Apache APISIX

Включение плагина splunk-hec-logging

Выполните следующую команду, чтобы включить плагин splunk-hec-logging.

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "splunk-hec-logging":{ "endpoint":{ // Конечная точка HEC "uri":"http://127.0.0.1:18088/services/collector", // Токен HEC "token":"BD274822-96AA-4DA6-90EC-18940FB2414C" }, // Максимальное время (в секундах) для обновления буфера пакетной очереди "inactive_timeout":2, // Максимальное количество записей логов на пакетную очередь "batch_max_size":10 } }, "upstream":{ "type":"roundrobin", "nodes":{ "127.0.0.1:1980":1 } }, "uri":"/splunk.do" }'

Параметры плагина описаны в следующей таблице.

ИмяОбязательноЗначение по умолчаниюОписание
endpointДаN/AИнформация о конфигурации конечной точки Splunk HEC
endpoint.uriДаN/AAPI сбора событий Splunk HEC
endpoint.tokenДаN/AТокен идентификации Splunk HEC
endpoint.channelНетN/AИдентификатор канала отправки Splunk HEC, см.: About HTTP Event Collector Indexer Acknowledgment
endpoint.timeoutНет10Тайм-аут отправки данных в Splunk HEC в секундах.
ssl_verifyНетTRUEВключить аутентификацию SSL, см.: Документация OpenResty.
max_retry_countНет0Максимальное количество повторных попыток перед удалением из конвейера обработки.
retry_delayНет1Количество секунд, на которое должно быть задержано выполнение процесса в случае сбоя.
buffer_durationНет60Максимальная продолжительность (в секундах) самой старой записи в пакете, которая должна быть обработана первой.
inactive_timeoutНет5Максимальное время обновления буфера в секундах.
batch_max_sizeНет1000Максимальное количество записей на пакетную очередь.

Отправка запроса

Выполните следующую команду, чтобы отправить запрос в Splunk.

$ curl -i http://127.0.0.1:9080/splink.do HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Date: Fri, 10 Dec 2021 09:57:52 GMT Server: APISIX/2.11.0 Hello, Splunk HEC Logging

Проверка логов

Войдите в консоль Splunk и нажмите "Search & Reporting".

Splunk console

Введите source="apache-apisix-splunk-hec-logging" в поле поиска, чтобы запросить отправленные логи запросов.

query the logs

Отключение плагина splunk-hec-logging

Удалите конфигурацию splunk-hec-logging, чтобы отключить плагин.

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri":"/logging.do", "upstream":{ "type":"roundrobin", "nodes":{ "127.0.0.1:1980":1 } }, "plugins":{ } }'

Заключение

Apache APISIX также работает над дополнительными плагинами для поддержки интеграции с другими сервисами, поэтому, если вы заинтересованы, не стесняйтесь начать обсуждение в нашем GitHub Discussion или связаться через список рассылки.

Связанные статьи

Tags: