Интеграция Splunk HTTP Event Collector с Apache APISIX
API7.ai
February 10, 2022
Сложность систем увеличивается по мере итерации технологий и развития архитектуры предприятий. Логи могут поддерживать и быть совместимыми с различными аналитическими движками, чтобы снизить затраты пользователей на выбор, эксплуатацию и обслуживание. Лог-ориентированный анализ и наблюдение играют очень важную роль как основа для обеспечения стабильности системы.
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, установленное в переменной окружения в примере выше.
Как показано на рисунке ниже, это означает успешный вход.

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

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

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

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/A | API сбора событий 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".

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

Отключение плагина 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 или связаться через список рассылки.
Связанные статьи
- Интеграция Apache APISIX с Kafka для эффективного мониторинга логов в реальном времени
- Apache APISIX & RocketMQ помогает в мониторинге логов API
- Интеграция Apache APISIX с Google Cloud Logging для улучшения обработки логов
- Интеграция Apache APISIX с SkyWalking для создания полного цикла обработки логов