Elasticsearch / Kibana: 应用端连接查询

11

使用 Kibana(最好是光彩夺目的新版本 4 beta)可以执行应用程序端联接吗?

我知道 ES/Kibana 不是用来取代关系数据库的,通常最好是对数据进行去规范化。但在这种情况下,这不是最佳方法,因为索引大小正在爆炸,而且性能正在下降:

我正在索引数十亿个文档,其中包含网络流会话信息,例如源 IP、源端口、目标 IP、目标端口和时间戳。

现在,我还想为每个 IP 地址收集其他信息,例如地理位置、ASN、反向 DNS 等。将此信息添加到每个会话文档中会使整个数据库无法管理:有数百万个文档具有相同的 IP 地址,将相同的附加信息添加到所有这些文档中会导致大量膨胀,并且即使在具有数百 GB RAM 的群集上,用户体验也会变得不响应。

相反,我想创建一个仅包含唯一 IP 地址和我已收集到的元数据的单独索引。

问题是:如何仍然使用 Kibana 分析我的数据?对于查询返回的每个文档,Kibana 应该在 ip-index 中执行查找,并使用此信息“虚拟丰富”每个 IP 地址。类似添加虚拟字段,以便结构看起来像这样(即光彩夺目):

源 IP、源端口、源国家、源 ASN、源 FQDN

我知道这将带来多次查询的代价。


出于好奇,您是否在使用doc_values来缓存非分析字段?个人而言,在尝试规范化数据之前,我会尝试切换到doc_values以查看是否有所帮助。您还可以考虑全局序数(例如https://www.elastic.co/guide/en/elasticsearch/reference/1.6/fielddata-formats.html),但对于高基数数据,我实际上认为那不是一个很好的主意... - Evan Volgas
1个回答

3
我认为这样的东西并不存在,但你可以尝试使用过滤器进行操作:
1.创建漂亮简单的数据可视化,对不同类型进行筛选,并仅显示一个简单的数据。
2.将这些不同的可视化呈现在仪表板中,以显示与一种类型的连接相关联的所有数据。
3.您可以使用过滤器作为连接键,并使用完整的仪表板(由不同面板组成)来获取特定连接键(您的情况下为IP或会话)的洞察力。
您需要为要进行的每种类型的连接创建1个仪表板。
请注意,您需要协调不同文档中字段的名称和映射!
保持更新,这是一个有趣的问题,我想知道处理这么多文档会出现什么情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接