Перейти к содержанию

Возможности

Мастер настройки кластера Kafka

Настройте кластеры Kafka прямо в пользовательском интерфейсе.

Управление несколькими кластерами

Отслеживайте и управляйте всеми вашими кластерами в одном месте.

Мониторинг производительности с помощью панели показателей

Отслеживайте ключевые показатели Kafka с помощью облегченной панели мониторинга.

Просмотр брокеров Kafka

Просмотр назначений тем и разделов, состояния контроллера


Просмотр тем (топиков) Kafka

Просмотр количества разделов, состояния репликации и пользовательской конфигурации.

Просмотр групп потребителей

Просмотр смещений для каждого раздела, комбинированной задержки и задержки для каждого раздела.

Просмотр сообщений

Просмотр сообщений в формате JSON, простом тексте и кодировке Avro.

Динамическая конфигурация тем (топиков)

Создавайте и настраивайте новые темы с динамической конфигурацией.

Маскирование данных

Скрытие конфиденциальных данных в сообщениях темы (топика).

Вы можете настроить neomsa-messaging для маскировки конфиденциальных данных, отображаемых на странице сообщений.

Поддерживается несколько политик маскировки:

REMOVE

Для json-объектов - удаление целевых полей, в противном случае - возврат строки "null".

- type: REMOVE
fields: [ "id", "name" ]
...

Примеры

{ "id": 1234, "name": { "first": "James" }, "age": 30 }
->
{ "age": 30 }
non-json string -> null

REPLACE

Для json-объектов – замена значений целевого поля на указанную строку замены (по умолчанию на ***DATA_MASKED***). Примечание: если значение целевого поля является объектом, то замена применяется ко всем его полям рекурсивно (см. пример).

- type: REPLACE
fields: [ "id", "name" ]
replacement: "***" #optional, "***DATA_MASKED***" by default
...
{ "id": 1234, "name": { "first": "James", "last": "Bond" }, "age": 30 }
->
{ "id": "***", "name": { "first": "***", "last": "***" }, "age": 30 }
non-json string -> ***

MASK

Маскируйте значения целевого поля указанными маскирующими символами, рекурсивно (пробелы и разделители строк будут сохранены как есть). Массив maskingCharsReplacement указывает, какие символы будут использоваться для замены символов верхнего регистра (индекс 0), символов нижнего регистра (индекс 1), цифр (индекс 2) и других символов (индекс 3) соответственно.

- type: MASK
fields: [ "id", "name" ]
maskingCharsReplacement: ["A", "a", "N", "_"] # optional, default is ["X", "x", "n", "-"]
...

Примеры

{ "id": 1234, "name": { "first": "James", "last": "Bond!" }, "age": 30 }
->
{ "id": "NNNN", "name": { "first": "Aaaaa", "last": "Aaaa_" }, "age": 30 }
Some string! -> Aaaa aaaaaa_
kafka:
clusters:
- name: ClusterName
# Other Cluster configuration omitted ...
masking:
- type: REMOVE
fields: [ "id" ]
topicKeysPattern: "events-with-ids-.*"
topicValuesPattern: "events-with-ids-.*"
- type: REPLACE
fields: [ "companyName", "organizationName" ]
replacement: "***MASKED_ORG_NAME***" #optional
topicValuesPattern: "org-events-.*"
- type: MASK
fields: [ "name", "surname" ]
maskingCharsReplacement: ["A", "a", "N", "_"] #optional
topicValuesPattern: "user-states"
- type: MASK
topicValuesPattern: "very-secured-topic"

Та же конфигурация в режиме env-vars:

...
KAFKA_CLUSTERS_0_MASKING_0_TYPE: REMOVE
KAFKA_CLUSTERS_0_MASKING_0_FIELDS_0: "id"
KAFKA_CLUSTERS_0_MASKING_0_TOPICKEYSPATTERN: "events-with-ids-.*"
KAFKA_CLUSTERS_0_MASKING_0_TOPICVALUESPATTERN: "events-with-ids-.*"
KAFKA_CLUSTERS_0_MASKING_1_TYPE: REPLACE
KAFKA_CLUSTERS_0_MASKING_1_FIELDS_0: "companyName"
KAFKA_CLUSTERS_0_MASKING_1_FIELDS_1: "organizationName"
KAFKA_CLUSTERS_0_MASKING_1_REPLACEMENT: "***MASKED_ORG_NAME***"
KAFKA_CLUSTERS_0_MASKING_1_TOPICVALUESPATTERN: "org-events-.*"
KAFKA_CLUSTERS_0_MASKING_2_TYPE: MASK
KAFKA_CLUSTERS_0_MASKING_2_FIELDS_0: "name"
KAFKA_CLUSTERS_0_MASKING_2_FIELDS_1: "surname"
KAFKA_CLUSTERS_0_MASKING_2_MASKING_CHARS_REPLACEMENT_0: 'A'
KAFKA_CLUSTERS_0_MASKING_2_MASKING_CHARS_REPLACEMENT_1: 'a'
KAFKA_CLUSTERS_0_MASKING_2_MASKING_CHARS_REPLACEMENT_2: 'N'
KAFKA_CLUSTERS_0_MASKING_2_MASKING_CHARS_REPLACEMENT_3: '_'
KAFKA_CLUSTERS_0_MASKING_2_TOPICVALUESPATTERN: "user-states"
KAFKA_CLUSTERS_0_MASKING_3_TYPE: MASK
KAFKA_CLUSTERS_0_MASKING_3_TOPICVALUESPATTERN: "very-secured-topic"

KSQLDB

В разделе KSQLDB настраивается подключение к интерактивному серверу ksqldb для выполнения SQL-запросов к данным Kafka в реальном времени, а также управления потоками и таблицами.

Конфигурация в YAML

Подключение ksqldb настраивается для каждого кластера Kafka в блоке kafka.clusters.

kafka:
clusters:
ksqldb-server: http://ksqldb-host:8088
ksqldb-server-auth:
username: your-ksqldb-username
password: your-ksqldb-password
ksqldb-server-ssl:
keystore-location: /path/to/keystore/file.jks
keystore-password: your-keystore-password

Аналогичная конфигурация в формате переменных окружения:

KAFKA_CLUSTERS_0_KSQLDB_SERVER=http://ksqldb-host:8088
KAFKA_CLUSTERS_0_KSQLDB_SERVER_AUTH_USERNAME="your-ksqldb-username"
KAFKA_CLUSTERS_0_KSQLDB_SERVER_AUTH_PASSWORD="your-ksqldb-password"
KAFKA_CLUSTERS_0_KSQLDB_SERVER_SSL_KEYSTORE_LOCATION="/path/to/keystore/file.jks"
KAFKA_CLUSTERS_0_KSQLDB_SERVER_SSL_KEYSTORE_PASSWORD="your-keystore-password"

Добавление подключения к серверу KSQLDB возможно через UI в настройках конфигурации брокера

UI Neomsa Messaging позволяет выполнять SQL-запросы к потокам и таблицам

Kafka Connect

Раздел Kafka Connect настраивает подключение к кластерам Kafka Connect для управления коннекторами (источниками и приёмниками данных) через REST API.

Конфигурация в YAML

Подключение к Kafka Connect настраивается для каждого кластера Kafka в блоке kafka.clusters.

kafka:
clusters:
- name: local
kafka-connect:
- name: first
address: http://connect-host:8083
username: connect-user
password: connect-password
keystore-location: /path/to/keystore.jks
keystore-password: keystore-password