Kibana — это визуальный интерфейс, который позволяет исследовать, визуализировать и создавать панели мониторинга для ваших логов. Интеграция Kibana с Manticore Search может ускорить загрузку визуализаций Kibana до 3 раз по сравнению с Elasticsearch, как показано в этом демо. Эта интеграция позволяет пользователям беспрепятственно анализировать свои данные с помощью интерактивных панелей, пользовательских визуализаций и возможностей поиска в реальном времени. Она также упрощает работу с разнообразными источниками данных, поддерживая такие инструменты, как Logstash и Filebeat для упрощенного ввода данных, что делает её отличным выбором для рабочих процессов анализа логов.
- Скачайте Kibana: Убедитесь, что вы скачали версию Kibana, совместимую с Manticore. В настоящее время рекомендуется и протестирована версия 7.6.0. Другие версии 7.x могут работать, но могут вызвать проблемы. Версия 8.x не поддерживается.
- Проверьте Manticore: Убедитесь, что ваш экземпляр Manticore запущен и его HTTP API доступен (по умолчанию:
http://localhost:9308).
- Откройте файл конфигурации Kibana (
kibana.yml). - Установите URL вашего экземпляра Manticore:
elasticsearch.hosts: ["http://localhost:9308"] - Запустите Kibana и откройте её в браузере по адресу
http://localhost:5601. При необходимости заменитеlocalhostна IP-адрес или имя хоста вашего сервера.
Примечание: Для работы с Kibana Manticore не требует настройки аутентификации. Также обратите внимание, что Manticore должен работать в режиме реального времени для интеграции с Kibana.
listen = 127.0.0.1:9308:http
pid_file = /var/run/manticore/searchd.pid
data_dir = /var/lib/manticore
}
## Supported Features
### Discover
- Use the **Discover** tab in Kibana to search and filter your data interactively.
- Refine your searches using the query bar with simple queries in the %Kibana query language [https://www.elastic.co/guide/en/kibana/current/kuery-query.html] %.
### Visualizations
- Navigate to **Visualizations** to create custom visualizations:
- Create a table pattern (it’s called an 'index pattern' in Kibana) if one doesn’t already exist to define your data source.
- Choose a visualization type (e.g., bar chart, line chart, or pie chart).
- Configure your visualization, execute it, and explore your data.
- Save your visualizations for future use.
### Dashboards
- Access **Dashboards** to create or view interactive dashboards:
- Add visualizations, filters, or controls for a personalized experience.
- Interact with your data directly from the dashboard.
- Save dashboards for future use.
### Management
- Go to **Management > Kibana** to customize settings like default time zones and visualization preferences.
## Limitations
- Currently, Kibana version 7.6.0 is tested and recommended. Other 7.x versions may work but could cause issues. Versions 8.x are not supported.
- The following Elasticsearch-specific field types are not supported:
- %Spatial data types [https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html#spatial_datatypes] %
- %Structured data types [https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html#structured-data-types] %
- %Document ranking types [https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html#document-ranking-types] %
- %Text search types [https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html#text-search-types] % (except for plain 'text')
- %Relational data types [https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html#object-types] %
- Metric aggregation functions are limited to %those supported by Manticore [../Searching/Grouping.md#Aggregation-functions] %.
- The following Kibana tools are not supported:
- %Canvas [https://www.elastic.co/guide/en/kibana/7.6/canvas.html] % – A visualization and presentation tool for combining data with colors and images.
- %Elastic Maps [https://www.elastic.co/guide/en/kibana/7.6/maps.html] % – A tool for analyzing geographical data.
- %Metrics [https://www.elastic.co/guide/en/kibana/7.6/xpack-infra.html] % – An app for monitoring infrastructure metrics.
- %Logs [https://www.elastic.co/guide/en/kibana/7.6/xpack-logs.html] % – A console-like display for exploring logs from common services.
- Monitoring:
- %Uptime [https://www.elastic.co/guide/en/kibana/7.6/xpack-uptime.html] % – Monitors the status of network endpoints via HTTP/S, TCP, and ICMP.
- %APM (Application Performance Monitoring) [https://www.elastic.co/guide/en/kibana/7.6/xpack-apm.html] % – Collects in-depth performance metrics from applications.
- %SIEM (Security Information and Event Management) [https://www.elastic.co/guide/en/kibana/7.6/xpack-siem.html] % – An interactive workspace for security teams to triage events and conduct initial investigations.
- %ILM (Index lifecycle management) [https://www.elastic.co/guide/en/elasticsearch/reference/7.6/index-lifecycle-management.html] % - Automatically manage indices according to performance, resiliency, and retention requirements.
- %Stack Monitoring [https://www.elastic.co/guide/en/kibana/7.6/xpack-monitoring.html] % – Provides visualizations of monitoring data across the Elastic Stack.
- %Elasticsearch Management [https://www.elastic.co/guide/en/kibana/7.6/management.html] % – A UI for managing Elastic Stack objects, including ILM (Index Lifecycle Management), etc.
## Data Ingestion and Exploration
Integrate Manticore with tools like %Logstash [../Integration/Logstash.md] %, %Filebeat [../Integration/Filebeat.md] %, %Fluentbit [https://manticoresearch.com/blog/integration-of-manticore-with-fluentbit/] %, or %Vector.dev [https://manticoresearch.com/blog/integration-of-manticore-with-vectordev/] % to ingest data from sources like web logs. Once the data is loaded into Manticore, you can explore and visualize it in Kibana.
ПРИМЕЧАНИЕ: эта функциональность требует Manticore Buddy. Если не работает, убедитесь, что Buddy установлен.
Manticore поддерживает интеграцию с Apache Kafka для потокового приема данных в реальном времени через источники Kafka и материализованные представления, что позволяет индексировать и искать данные в реальном времени. В настоящее время поддерживаются и протестированы версии apache/kafka 3.7.0-4.1.0.
Чтобы начать, необходимо:
- Определить источник: Указать тему Kafka, из которой Manticore Search будет читать сообщения. Эта настройка включает детали, такие как хост брокера, порт и имя темы.
- Настроить таблицу назначения: Выбрать таблицу реального времени Manticore для хранения входящих данных из Kafka.
- Создать материализованное представление: Настроить материализованное представление (
mv) для обработки преобразования данных и сопоставления из Kafka в таблицу назначения Manticore Search. Здесь вы определите сопоставления полей, преобразования данных и любые фильтры или условия для входящего потока данных.
Конфигурация source позволяет определить broker, topic list, consumer group и структуру сообщений.
Определите схему, используя типы полей Manticore, такие как int, float, text, json и т.д.
CREATE SOURCE <source name> [(column type, ...)] [source_options]
Все ключи схемы нечувствительны к регистру, то есть Products, products и PrOdUcTs считаются одинаковыми. Все они преобразуются в нижний регистр.
Если имена ваших полей не соответствуют синтаксису имен полей, разрешенному в Manticore Search (например, содержат специальные символы или начинаются с цифр), необходимо определить сопоставление схемы. Например, $keyName или 123field являются допустимыми ключами в JSON, но недопустимыми именами полей в Manticore Search. Если попытаться использовать недопустимые имена полей без правильного сопоставления, Manticore вернет ошибку, и создание источника не удастся.
Для таких случаев используйте следующий синтаксис схемы для сопоставления недопустимых имен полей с допустимыми:
allowed_field_name 'original JSON key name with special symbols' type
Например:
price_field '$price' float -- maps JSON key '$price' to field 'price_field'
field_123 '123field' text -- maps JSON key '123field' to field 'field_123'
- SQL
CREATE SOURCE kafka
(id bigint, term text, abbrev '$abbrev' text, GlossDef json)
type='kafka'
broker_list='kafka:9092'
topic_list='my-data'
consumer_group='manticore'
num_consumers='2'
batch=50Query OK, 2 rows affected (0.02 sec)| Опция | Допустимые значения | Описание |
|---|---|---|
type |
kafka |
Устанавливает тип источника. В настоящее время поддерживается только kafka |
broker_list |
host:port [, ...] |
Указывает URL брокеров Kafka |
topic_list |
string [, ...] |
Список тем Kafka для потребления |
consumer_group |
string |
Определяет группу потребителей Kafka, по умолчанию manticore. |
num_consumers |
int |
Количество потребителей для обработки сообщений. |
partition_list |
int [, ...] |
Список партиций для чтения подробнее. |
batch |
int |
Количество сообщений для обработки перед переходом к следующей партии. По умолчанию 100; в противном случае обрабатывает оставшиеся сообщения по таймауту |
Таблица назначения — это обычная таблица реального времени, в которой хранятся результаты обработки сообщений Kafka. Эта таблица должна быть определена в соответствии с требованиями схемы входящих данных и оптимизирована для производительности запросов вашего приложения. Подробнее о создании таблиц реального времени читайте здесь.
- SQL
CREATE TABLE destination_kafka
(id bigint, name text, short_name text, received_at text, size multi);Query OK, 0 rows affected (0.02 sec)Материализованное представление позволяет преобразовывать данные из сообщений Kafka. Вы можете переименовывать поля, применять функции Manticore Search, выполнять сортировку, группировку и другие операции с данными.
Материализованное представление действует как запрос, который перемещает данные из источника Kafka в таблицу назначения, позволяя использовать синтаксис Manticore Search для настройки этих запросов. Убедитесь, что поля в select соответствуют полям источника.
CREATE MATERIALIZED VIEW <materialized view name>
TO <destination table name> AS
SELECT [column|function [as <new name>], ...] FROM <source name>
- SQL
CREATE MATERIALIZED VIEW view_table
TO destination_kafka AS
SELECT id, term as name, abbrev as short_name,
UTC_TIMESTAMP() as received_at, GlossDef.size as size FROM kafkaQuery OK, 2 rows affected (0.02 sec)Данные передаются из Kafka в Manticore Search партиями, которые очищаются после каждого запуска. Для вычислений по партиям, таких как AVG, будьте осторожны, так как они могут работать не так, как ожидается, из-за обработки по партиям.
Вот таблица сопоставления на основе приведенных выше примеров:
| Kafka | Источник | Буфер | MV | Назначение |
|---|---|---|---|---|
id |
id |
id |
id |
id |
term |
term |
term |
term as name |
name |
unnecessary_key, который нас не интересует |
- | - | ||
$abbrev |
abbrev |
abbrev |
abbrev as short_name |
short_name |
| - | - | - | UTC_TIMESTAMP() as received_at |
received_at |
GlossDef |
glossdef |
glossdef |
glossdef.size as size |
size |
Для просмотра источников и материализованных представлений в Manticore Search используйте следующие команды:
SHOW SOURCES: Показывает все настроенные источники.SHOW MVS: Показывает все материализованные представления.SHOW MV view_table: Показывает подробную информацию о конкретном материализованном представлении.
- SQL
SHOW SOURCES+-------+
| name |
+-------+
| kafka |
+-------+- SQL
SHOW SOURCE kafka;+--------+-------------------------------------------------------------------+
| Source | Create Table |
+--------+-------------------------------------------------------------------+
| kafka | CREATE SOURCE kafka |
| | (id bigint, term text, abbrev '$abbrev' text, GlossDef json) |
| | type='kafka' |
| | broker_list='kafka:9092' |
| | topic_list='my-data' |
| | consumer_group='manticore' |
| | num_consumers='2' |
| | batch=50 |
+--------+-------------------------------------------------------------------+- SQL
SHOW MVS+------------+
| name |
+------------+
| view_table |
+------------+- SQL
SHOW MV view_table+------------+--------------------------------------------------------------------------------------------------------+-----------+
| View | Create Table | suspended |
+------------+--------------------------------------------------------------------------------------------------------+-----------+
| view_table | CREATE MATERIALIZED VIEW view_table TO destination_kafka AS | 0 |
| | SELECT id, term as name, abbrev as short_name, UTC_TIMESTAMP() as received_at, GlossDef.size as size | |
| | FROM kafka | |
+------------+--------------------------------------------------------------------------------------------------------+-----------+Вы можете приостановить потребление данных, изменяя материализованные представления.
Если вы удалите source, не удаляя MV, оно автоматически приостанавливается. После воссоздания источника снимите приостановку MV вручную с помощью команды ALTER.
В настоящее время можно изменять только материализованные представления. Чтобы изменить параметры source, удалите и создайте источник заново.
- SQL
ALTER MATERIALIZED VIEW view_table suspended=1Query OK (0.02 sec)Вы также можете указать partition_list для каждой темы Kafka.
Одним из основных преимуществ такого подхода является возможность реализовать sharding для вашей таблицы через Kafka.
Для этого следует создать отдельную цепочку source → materialized view → destination table для каждого шарда:
Источники:
CREATE SOURCE kafka_p1 (id bigint, term text)
type='kafka' broker_list='kafka:9092' topic_list='my-data'
consumer_group='manticore' num_consumers='1' partition_list='0' batch=50;
CREATE SOURCE kafka_p2 (id bigint, term text)
type='kafka' broker_list='kafka:9092' topic_list='my-data'
consumer_group='manticore' num_consumers='1' partition_list='1' batch=50;
Таблицы назначения:
CREATE TABLE destination_shard_1 (id bigint, name text);
CREATE TABLE destination_shard_2 (id bigint, name text);
Материализованные представления:
CREATE MATERIALIZED VIEW mv_1 TO destination_shard_1 AS SELECT id, term AS name FROM kafka_p1;
CREATE MATERIALIZED VIEW mv_2 TO destination_shard_2 AS SELECT id, term AS name FROM kafka_p2;
- В этой конфигурации ребалансировка должна управляться вручную.
- По умолчанию Kafka не распределяет сообщения по принципу round-robin.
- Чтобы добиться распределения, похожего на round-robin при отправке данных, убедитесь, что ваш Kafka producer настроен с:
parse.key=truekey.separator={your_delimiter}
В противном случае Kafka будет распределять сообщения согласно своим внутренним правилам, что может привести к неравномерному распределению по партициям.
Коммиты смещений Kafka происходят после каждой партии или при истечении времени обработки. Если процесс неожиданно остановится во время запроса к материализованному представлению, вы можете увидеть дублирующиеся записи. Чтобы этого избежать, включите поле id в вашу схему, что позволит Manticore Search предотвращать дублирование в таблице.
- Инициализация воркера: После настройки источника и материализованного представления Manticore Search запускает выделенного воркера для обработки данных из Kafka.
- Отображение сообщений: Сообщения сопоставляются согласно схеме конфигурации источника, преобразуясь в структурированный формат.
- Группировка: Сообщения группируются в партии для эффективной обработки. Размер партии можно настроить под ваши требования по производительности и задержке.
- Буферизация: Партии отображенных данных сохраняются в буферной таблице для эффективных пакетных операций.
- Обработка материализованного представления: Логика представления применяется к данным в буферной таблице, выполняя необходимые преобразования или фильтрацию.
- Передача данных: Обработанные данные затем передаются в целевую таблицу реального времени.
- Очистка: Буферная таблица очищается после каждой партии, чтобы быть готовой к следующему набору данных.
ПРИМЕЧАНИЕ: Интеграция с DBeaver требует Manticore Buddy. Если она не работает, убедитесь, что Buddy установлен.
DBeaver — это программное обеспечение-клиент SQL и инструмент администрирования баз данных. Для баз данных MySQL он использует интерфейс программирования приложений JDBC для взаимодействия с ними через JDBC-драйвер.
Manticore позволяет использовать DBeaver для работы с данными, хранящимися в таблицах Manticore, так же, как если бы они хранились в базе данных MySQL. В настоящее время тестируется и рекомендуется версия 25.2.0. Другие версии могут работать, но могут вызвать проблемы.
Чтобы начать работу с Manticore в DBeaver, выполните следующие шаги:
- Выберите опцию
New database connectionв интерфейсе DBeaver - Выберите
SQL->MySQLв качестве драйвера базы данных DBeaver - Установите параметры
Server hostиPort, соответствующие хосту и порту вашего экземпляра Manticore (полеdatabaseоставьте пустым) - Установите
root/<empty password>в качестве учетных данных для аутентификации
Поскольку Manticore не полностью поддерживает MySQL, при работе с Manticore доступна только часть функционала DBeaver.
Вы сможете:
- Просматривать, создавать, удалять и переименовывать таблицы
- Добавлять и удалять столбцы таблиц
- Вставлять, удалять и обновлять данные в столбцах
Вы не сможете:
- Использовать механизмы проверки целостности базы данных (в качестве единственного доступного движка хранения будет установлен
MyISAM) - Использовать процедуры MySQL, триггеры, события и т. д.
- Управлять пользователями базы данных
- Устанавливать другие параметры администрирования базы данных
Некоторые типы данных MySQL в настоящее время не поддерживаются Manticore и, следовательно, не могут использоваться при создании новой таблицы с помощью DBeaver. Также некоторые поддерживаемые типы данных преобразуются в наиболее похожие типы Manticore с игнорированием точности типа при таком преобразовании. Ниже приведен список поддерживаемых типов данных MySQL и соответствующих им типов Manticore:
BIGINT UNSIGNED=>bigintBOOL=>booleanDATE,DATETIME,TIMESTAMP=>timestampFLOAT=>floatINT=>intINT UNSIGNED,SMALLINT UNSIGNED,TINYINT UNSIGNED,BIT=>uintJSON=>jsonTEXT,LONGTEXT,MEDIUMTEXT,TINYTEXT,BLOB,LONGBLOB,MEDIUMBLOB,TINYBLOB=>textVARCHAR,LONG VARCHAR,BINARY,CHAR,VARBINARY,LONG VARBINARY=>string
Более подробную информацию о типах данных Manticore можно найти здесь.
Manticore может обрабатывать типы данных DATE, DATETIME и TIMESTAMP, однако для этого требуется включенный Buddy Manticore. В противном случае попытка работать с одним из этих типов приведет к ошибке.
Обратите внимание, что тип TIME не поддерживается.
-
Опция
Preferences->Connections->Client identificationв DBeaver не должна быть отключена или переопределена. Для корректной работы с DBeaver Manticore должен отличать его запросы от других. Для этого он использует информацию об идентификации клиента, отправляемую DBeaver в заголовках запросов. Отключение уведомления клиента нарушит это определение и, следовательно, корректную работу Manticore. -
При первой попытке обновить данные в вашей таблице вы увидите всплывающее сообщение
No unique keyи вам будет предложено определить пользовательский уникальный ключ. При появлении этого сообщения выполните следующие действия:- Выберите опцию
Custom Unique Key - Выберите только столбец
idв списке столбцов - Нажмите
Ok
После этого вы сможете безопасно обновлять свои данные.
- Выберите опцию
ПРИМЕЧАНИЕ: Интеграция с Apache Superset требует Manticore Buddy. Если она не работает, убедитесь, что Buddy установлен.
Apache Superset — это современная платформа для исследования и визуализации данных. Manticore Search можно интегрировать с Apache Superset, что позволяет пользователям использовать весь потенциал Manticore Search для анализа и визуализации данных.
Примечание: Эта интеграция работает только с веткой Apache Superset 3.x и пока недоступна для версии 4 и новее.
Перед интеграцией Manticore Search с Apache Superset убедитесь, что:
- Manticore Search (версия 6.2.0 или новее) правильно установлен и настроен на вашем сервере. Обратитесь к официальному руководству по установке Manticore Search для получения помощи.
- Apache Superset установлен в вашей системе. Следуйте официальному руководству по установке Apache Superset для инструкций по установке.
Чтобы подключить Manticore Search к Apache Superset:
- Войдите в панель управления Apache Superset.
- Нажмите на "+" в верхней навигационной панели и выберите "Database Connections".
- Нажмите "+ DATABASE", чтобы добавить новую базу данных.
- Выберите "MySQL" в качестве типа базы данных.
- На странице конфигурации укажите следующие данные:
- Database Name: имя базы данных (например, "Manticore")
- Host: хост вашего сервера Manticore Search
- Port: порт, на котором работает Manticore Search
- Username: имя пользователя Manticore Search
- Display Name: отображаемое имя для подключения
- Нажмите "Connect", чтобы проверить подключение и сохранить его.
После подключения Manticore Search к Apache Superset вы можете создавать диаграммы и панели мониторинга с использованием данных Manticore:
- В панели управления Apache Superset нажмите "Dashboards" в верхней навигационной панели и выберите "New dashboard".
- Откройте панель и нажмите на значок "+" для добавления новой диаграммы.
- Выберите набор данных, подключенный к Manticore Search.
- Выберите тип диаграммы, которую хотите создать (например, столбчатая диаграмма, линейная диаграмма, круговая диаграмма).
- Используйте конструктор запросов Apache Superset или напишите SQL-запрос для получения данных из вашей базы данных Manticore Search.
- Настройте внешний вид диаграммы, подписи и другие параметры по необходимости.
- Нажмите "UPDATE CHART", чтобы обновить диаграмму.
- Добавьте имя диаграммы и нажмите "Save", чтобы сохранить её в панели мониторинга.
При работе с Manticore Search через Apache Superset вы можете:
- Просматривать и выполнять запросы к данным из таблиц Manticore Search
- Создавать различные типы визуализаций на основе данных Manticore
- Строить и настраивать панели мониторинга с использованием этих визуализаций
Типы данных Manticore Search сопоставляются с типами данных MySQL при работе с Apache Superset. Обратитесь к документации Manticore Search для получения подробной информации о поддерживаемых типах данных и их сопоставлениях.
- Некоторые расширенные функции MySQL могут быть недоступны при работе с Manticore Search через Apache Superset.
- Некоторые операции с данными могут быть ограничены по сравнению с работой напрямую с базами данных MySQL.
Следуя этим шагам и рекомендациям, вы сможете эффективно интегрировать Manticore Search с Apache Superset для мощных возможностей исследования и визуализации данных.
Пожалуйста, обратитесь к следующим ресурсам для получения дополнительной информации об Apache Superset и Manticore Search: