Тип сервиса ServiceHttpKafkaProxy#

Тип сервиса service_http_kafka_proxy предназначен для передачи http запросов в Kafka.

В контексте service объявляется соответствующий тип сервиса service_http_kafka_proxy:

service:
  service_http_kafka_proxy:

Сервис представляет собой группу, включающую в себя следующие параметры.

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

settings

Обязательный

Общие настройки для подключения к Kafka

Последовательность параметров и их значения

—

settings.brokers

Обязательный (в рамках settings)

Список брокеров Kafka в формате хост:порт. Для разделения нескольких значений использовать запятую

Текстовое значение, например: 10.x.x.x:9092, 10.x.x.x:9092

—

allowed_queries

Обязательный

Указание разрешенных методов запроса и параметров запроса

Группа параметров, описанных в разделе Параметр allowed_queries

Значения группы задаются пользователем

client_id

Опциональный

Идентификатор клиента Kafka

Текстовое значение

—

compression

Опциональный

Метод сжатия сообщения

none, gzip, snappy, lz4, zstd

—

partition

Опциональный

Идентификатор разделов topic

Текстовое значение

Автоматически по идентификатору сообщения

partitioner

Опциональный

Алгоритм распределения сообщений по разделам

random, consistent, consistent_random, murmur2, murmur2_random, fnv1a, fnv1a_random

consistent_random

log_level

Опциональный

Уровень логирования syslog — 3

Целочисленное значение (0-7)

6

max_retries

Опциональный

Количество повторных попыток отправки сообщений

Целочисленное значение (0-10000000)

2

buffer_max_messages

Опциональный

Максимальное количество сообщений в локальной очереди

Целочисленное значение (1-10000000)

100000

backoff

Опциональный

Время отката в миллисекундах

Целочисленное значение (0-3600000)

100

compression_level

Опциональный

Уровень сжатия

Целочисленное значение (-1-12)

-1

message_max_bytes

Опциональный

Максимально допустимый размер сообщения

Целочисленное значение (1000-1000000000)

1000000

message_copy_max_bytes

Опциональный

Максимально допустимый размер сообщения, копируемого в буфер

Целочисленное значение (1000-1000000000)

65535

message_timeout

Опциональный

Таймаут локального сообщения (время ожидания для доставки)

Целочисленное значение

300000

topic_metadata_refresh_interval

Опциональный

Период обновления topic и метаданных в миллисекундах

Целочисленное значение (1-3600000)

300000

ssl_endpoint_identification_algorithm

Опциональный

Алгоритм валидации имени хоста брокера

none — валидация отсутствует; https — валидация по RFC2818

https

ssl_certificate_verification

Опциональный

Верификация серверного сертификата брокера средствами openssl

true, false

true

debug

Опциональный

Журнал отладки

true, false

false

ssl

Опциональный

SSL/TLS соединение

true, false

false

ssl_keystore

Опциональный (если ssl is not None)

Местоположение хранилища ключей (только формат pkcs12)

Текстовое значение

—

ssl_keystore_pwd

Опциональный (если ssl is not None)

Файл, содержащий пароль для хранилища ключей

Текстовое значение

—

ssl_cert

Опциональный (если ssl is not None)

Местоположение клиентского сертификата

Текстовое значение

—

ssl_ca

Опциональный (если ssl is not None)

Имя файла сертификатов доверенных CA для проверки клиентских сертификатов

Текстовое значение

—

ssl_key

Опциональный (если ssl is not None)

Местоположение клиентского ключа

Текстовое значение

—

instances

Опциональный

Список сервисов

Последовательность параметров и их значения

—

instances.id

Обязательный (в рамках instances)

Идентификатор сервиса. Значение должно быть уникальным

Текстовое значение (строка, число или их комбинация, разделитель — «_»)

—

instances.url

Обязательный (в рамках instances)

Относительный url, на котором будет работать сервис. Значение должно быть уникальным

Строковое значение

—

instances.topic

Обязательный (в рамках instances)

Topic Kafka

Текстовое значение

—

instances.name

Опциональный (в рамках instances)

Технологическое название сервиса. Значение должно быть уникальным

Текстовое значение

—

instances.profile_version

Опциональный (в рамках instances)

Версия профиля данного сервиса

Текстовое значение

—

instances.description

Опциональный (в рамках instances)

Строка с описанием сервиса

Текстовое значение

—

instances.listen

Опциональный (в рамках instances)

Настройки прослушивания. Если не указан, используются unix-сокеты

Последовательность параметров, описанных в разделе Параметр listen

—

instances.hostname

Опциональный (в рамках instances)

Виртуальное имя сервера

Последовательность строковых значений

localhost

instances.optional

Опциональный (в рамках instances)

Таймауты, сессия, ограничения, утилиты и др.

Параметры, описанные в разделе «ServiceHttpKafkaProxy - optional»

—

instances.healthcheck_dynamic

Опциональный (в рамках instances)

Динамическая генерация ответов на запросы о состоянии экземпляра или сервиса

Параметры, описанные в разделе Пaраметр healthcheck_dynamic

—

instances.filters

Опциональный (в рамках instances)

Фильтр modsecurity — проверка download/upload трафика на наличие угроз

Группа параметров и их значения

—

instances.transformations

Опциональный (в рамках instances)

Преобразование заголовков при выполнении заданных условий

Параметры, описанные в разделе Фильтр Transformations

—

instances.validators

Опциональный (в рамках instances)

Валидация тела запроса/ответа. Альтернатива: JsonValidation и XsdValidation

Параметры, описанные в разделе Валидация

—

instances.postprocessors

Опциональный (в рамках instances)

Постобработчик postprocessor_error для формирования сообщения об ошибке по шаблону

Группа параметров и их значения

—

ServiceHttpKafkaProxy - allowed_queries#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

method

Обязательный

Разрешенный метод запроса для сервиса

head, post, put, options, patch

—

params

Опциональный

Множество допустимых параметров запроса и допустимых значений

Последовательность параметров и их значения

—

params.name

Обязательный (в рамках params)

Имя параметра. Значение должно быть уникальным

Строковое значение

—

params.pattern

Обязательный (в рамках params)

Значение, которое может принимать параметр name. Не чувствительно к регистру. Есть возможность использования регулярного выражения

Текстовое значение

—

ServiceHttpKafkaProxy - optional#

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

allow_empty_message

Опциональный

Возможность отправки пустого сообщения в брокер Kafka

true, false

false

pass_request_headers

Опциональный

Передача заголовков http запросов в заголовки сообщения Kafka

true, false

false

headers_blacklist

Опциональный

Список заголовков http запросов, блокируемых для отправки в Kafka (без учета регистра)

Последовательность текстовых значений

—

block_mode

Опциональный

Синхронный режим доставки сообщений в Kafka, код ответа при ошибке, таймаут проверки доставки

Группа параметров и их значения

—

block_mode.enabled

Опциональный (в рамках block_mode)

Вкл./Откл. block_mode. Если выключен, транзакции с любыми статус-кодами будут добавлены в очередь

true, false

false

block_mode.wait_remote_result

Опциональный (если enabled is not None)

Клиент будет ожидать результат доставки сообщения или таймаут

true, false

false

block_mode.remote_timeout

Опциональный (если wait_remote_result is not None)

Время ожидания результата доставки сообщения на topic Kafka

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

—

block_mode.check_interval

Опциональный (если wait_remote_result is not None)

Интервал для проверки доставки сообщений

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

100ms

block_mode.error_code

Опциональный (если enabled is not None)

Код ошибки для клиента при сбое доставки сообщения

Целочисленное значение

—

log_level

Опциональный

Уровень логирования для сервиса

debug, info, notice, warn, error, crit, alert, off

Наследуется от значения в system

settings

Опциональный

Блок настроек подключения к Kafka, специфичный для сервиса. Переопределяет общие настройки

Структура аналогична общим настройкам

—

group_access_log

Опциональный

Группировка access журналов по кодам состояния

true, false

false

internal

Опциональный

Должен ли сервис быть доступен только локально

true, false

—

session_cache

Опциональный

Размер кэша для ssl/tls сессии

Группа параметров и их значения

Оценивается автоматически

session_cache.type

Обязательный (в рамках session_cache)

Тип размера кэша

off, none, builtin, shared

—

session_cache.name

Обязательный (если type: shared)

Имя размера

Строковое значение

—

session_cache.size

Обязательный (если type: builtin или type: shared)

Величина размера

Текстовое значение с суффиксом: число (байты), k/K (килобайты), m/M (мегабайты)

—

body

Опциональный

Тело для отправки на Kafka

Текстовое значение

—

message_id

Опциональный

Идентификатор сообщения для отправки на Kafka

Текстовое значение, например: $http_kafka_message_id_from_header

—

set_variable

Опциональный

Определение имен переменных и их значений

Последовательность параметров и их значения

—

set_variable.name

Обязательный (в рамках set_variable)

Имя переменной

Текстовое значение

—

set_variable.value

Обязательный (в рамках set_variable)

Значение переменной

Текстовое значение

—

exclude_req_stat / exclude_resp_stat

Опциональный

Исключение сервисов из статистики учета реквестов/респонсов

Последовательность строковых значений

—

limit_req

Опциональный

Ограничение скорости обработки запросов

Параметры, описанные в разделе Параметр limit_req

—

limit_requests

Опциональный

Ограничение запросов

Параметры, описанные в разделе Пaраметр limit_requests

—

robot_mitigation

Опциональный

Противодействие роботам и сканированию портов

Параметры, описанные в разделе Параметр robot_mitigation

—

ip_behavior

Опциональный

Мониторинг поведения пользователей при доступе к серверу

Параметры, описанные в разделе Параметр ip_behavior

—

cookie_poisoning

Опциональный

Отслеживание заголовков Set-Cookies и значений cookie в ответе. Зависит от session_module

Параметры, описанные в разделе Параметр cookie_poisoning

—

gzip

Опциональный

Сжатие ответа методом gzip

Параметры, описанные в разделе Параметр gzip

—

event_hook

Опциональный

Журналирование событий

Параметры, описанные в разделе Параметр event_hook

—

async_io

Опциональный

Настройка файлового асинхронного ввода-вывода

Параметры, описанные в разделе Параметр async_io

—

log_masking

Опциональный

Правила маскирования чувствительной информации в логах

Параметры, описанные в разделе Параметр log_masking_rules

—

http2

Опциональный

Настройки входящих подключений по протоколу http2

Параметры, описанные в разделе Параметр http2

—

logging2

Опциональный

Параметры отправки событий конфигуратора

Параметры, описанные в разделе Параметр logging

—

upload_size_limit

Опциональный

Ограничение размера тела запроса

Группа параметров и их значения

size: 1Mb

upload_size_limit.size

Обязательный (в рамках upload_size_limit)

Максимальный размер тела запроса

Текстовое значение с суффиксом: число (байты), k/K (килобайты), m/M (мегабайты)

—

upload_size_limit.drop

Опциональный (в рамках upload_size_limit)

Сброс соединения при превышении size

on, off

—

log_masking_rules

Опциональный

Правила маскирования данных в заголовках и телах запросов/ответов

Последовательность параметров и их значения

—

log_masking_rules.log_type

Опциональный (в рамках log_masking_rules)

Тип логов

all, security, event

all

log_masking_rules.object

Обязательный (в рамках log_masking_rules)

Объект, к которому применяется маскирование

request_header, response_header, request_body, response_body

—

log_masking_rules.header

Обязательный (если object = request_header/response_header)

Имя заголовка для маскирования

Строковое значение

—

log_masking_rules.expression

Обязательный (если object = request_body/response_body)

Регулярное выражение с группами для определения фрагмента замены

Текстовое значение

—

log_masking_rules.replace_all

Опциональный (если object = request_body/response_body)

Заменять все или первое найденное значение

on, off

on

log_masking_rules.mask_symbol

Опциональный (в рамках log_masking_rules)

Символ для замены

Строковое значение

*

pipelined_requests

Опциональный

Запрет использования HTTP pipelined requests для входящих запросов

on, off

on

http2_only

Опциональный

Ограничение приема входящих соединений только по протоколу http2

on, off

off

keepalive_time

Опциональный

Максимальное время обработки запросов в рамках keep-alive соединения

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

1h

opentelemetry_tracing

Опциональный

Секция параметров телеметрии

Параметры, описанные в разделе Параметр opentelemetry_tracing

Значения группы задаются пользователем

Пример минимальной настройки сервиса:

version: 2.0.3
profile: profile_name
system:
  wrk_count: 4
  conn_count: 2048
service:
  service_http_kafka_proxy:
    settings:
      brokers: hostname1:port1, hostname2:port2
    instances:
      - id: UserAnalytics
        allowed_queries:
          - method: post
        url: /metrics/myapp
        topic: topicname
        hostname:
          - localhost
        listen:
          - port: 80

Пример session_cache:

session_cache:
  type: shared
  name: my_name_size
  size: 4k

Пример upload_size_limit:

upload_size_limit:
  size: 40M
  drop: on