Kibana 是一个可视化界面,允许您探索、可视化并为日志数据创建仪表盘。将 Kibana 与 Manticore Search 集成,可以使 Kibana 可视化加载速度比 Elasticsearch 快最多 3 倍,如此 演示 所示。此集成使用户能够通过交互式仪表盘、自定义可视化和实时搜索功能无缝分析数据。它还通过支持 Logstash 和 Filebeat 等工具简化了处理多样化数据源的过程,实现了流畅的数据摄取,是日志分析工作流的理想选择。
- 下载 Kibana:确保下载与 Manticore 兼容的 Kibana 版本。目前,推荐并测试的版本是 7.6.0。其他 7.x 版本可能可用,但可能会引入问题。不支持 8.x 版本。
- 验证 Manticore:确保您的 Manticore 实例正在运行且其 HTTP API 可访问(默认地址:
http://localhost:9308)。
- 打开 Kibana 配置文件 (
kibana.yml)。 - 设置您的 Manticore 实例的 URL:
elasticsearch.hosts: ["http://localhost:9308"] - 启动 Kibana 并在浏览器中打开
http://localhost:5601。如有必要,将localhost替换为您的服务器 IP 或主机名。
注意:Manticore 在与 Kibana 配合使用时不需要设置认证。同时请注意,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 支持通过 Kafka 源和物化视图与 Apache Kafka 实时数据摄取集成,实现实时数据索引和搜索。目前,apache/kafka 版本 3.7.0-4.1.0 已测试并支持。
开始之前,您需要:
- 定义源: 指定 Manticore Search 将读取消息的 Kafka 主题。此设置包括代理的主机、端口和主题名称等详细信息。
- 设置目标表: 选择一个 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 [, ...] |
指定 Kafka 代理 URL |
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 | 源 | 缓冲区 | 物化视图 | 目标表 |
|---|---|---|---|---|
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)您还可以为每个 Kafka 主题指定 partition_list。
这种方法的主要优点之一是能够通过 Kafka 实现表的 sharding(分片)。
为此,您应为每个分片创建一条独立的链: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)策略分发消息。
- 若要在发送数据时实现类似轮询的分发,请确保您的 Kafka 生产者配置了:
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 以与操作 MySQL 数据库相同的方式处理存储在 Manticore 表中的数据。目前,推荐使用并测试过的版本是 25.2.0。其他版本可能可用,但可能会引入问题。
要开始在 DBeaver 中使用 Manticore,请按照以下步骤操作:
- 在 DBeaver 的界面中选择
New database connection选项 - 选择
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 数据类型,但这需要启用 Manticore 的 Buddy。否则,尝试操作这些类型将导致错误。
请注意,TIME 类型不被支持。
-
DBeaver 的
Preferences->Connections->Client identification选项不得关闭或被覆盖。 为了正确与 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”添加新数据库。
- 选择“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”将其永久保存到仪表板中。
通过 Apache Superset 使用 Manticore Search 时,您可以:
- 查看和查询 Manticore Search 表中的数据
- 基于 Manticore 数据创建各种类型的可视化
- 使用这些可视化构建和自定义仪表板
在通过 Apache Superset 使用时,Manticore Search 的数据类型会映射到 MySQL 数据类型。有关支持的数据类型及其映射的更多详细信息,请参阅 Manticore Search 文档。
- 通过 Apache Superset 使用 Manticore Search 时,某些高级 MySQL 功能可能不可用。
- 与直接使用 MySQL 数据库相比,某些数据操作可能受到限制。
通过遵循这些步骤和指南,您可以有效地将 Manticore Search 与 Apache Superset 集成,实现强大的数据探索和可视化功能。
有关 Apache Superset 和 Manticore Search 的更多信息,请参阅以下资源: