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, список топиков, группу потребителей и структуру сообщений.
Определите схему, используя типы полей 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 |
хост:порт [, ...] |
Указывает URL-адреса брокеров Kafka |
topic_list |
строка [, ...] |
Список топиков Kafka для потребления |
consumer_group |
строка |
Определяет группу потребителей 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 | Источник | Буфер | МВ | Назначение |
|---|---|---|---|---|
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 без удаления МП, он автоматически приостановится. После воссоздания источника снимите приостановку МП вручную с помощью команды ALTER.
В настоящее время можно изменять только материализованные представления. Чтобы изменить параметры source, удалите и создайте источник заново.
- SQL
ALTER MATERIALIZED VIEW view_table suspended=1Query OK (0.02 sec)Вы также можете указать partition_list для каждой темы Kafka.
Одним из основных преимуществ такого подхода является возможность реализации шардинга вашей таблицы через 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/<пустой пароль>в качестве учетных данных для аутентификации
Поскольку 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" в качестве типа базы данных.
- На странице настройки укажите следующие данные:
- Имя базы данных: имя для базы данных (например, "Manticore")
- Хост: хост сервера Manticore Search
- Порт: порт, на котором запущен Manticore Search
- Имя пользователя: ваше имя пользователя Manticore Search
- Отображаемое имя: отображаемое имя для подключения
- Нажмите "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: