从ELK到EFK 结合Flink 和 Elasticsearch新特性重构全观测方案

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 朱杰 Elastic资深解决方案架构师

image.png

上图展示了日志应用的几个阶段。目前有很大一部分企业都处于 level 3 level 4 两个阶段中,其中level 3 占据更大部分。检索级意味着日志很少做结构化抽取,通过一个平台实现所有运维数据的全局搜索,无法做关联分析。分析级个前置条件,需要对原始文本日志进行较好的处理,能够非结构化信息里提取出有用的结构化信息,日志海量涌现时更加难以支撑

如果企业能够实现非常好的结构化日志,能够产生大量有意义的列,可以为分析提供很好的支撑。但是当结构化不足时,则只能做简单搜索。

image.png

很多企业日志量巨大日志质量不高,应用中存在大量没有意义日志或有意义的日志但没有被完整记录,没有暴露出可观测性。另外,日志输出非常随意,完全没有结构化,甚至直接输出文本,对重要信息进行提取时,只能通过正则表达式方式提取最后运维和开发分离,运维不理解开发输出的日志

很多运维人的目标是先将日志收进,收进日志只包含非常有限结构化字段,只对采集器自带的结构化字段做索引,无法提取出关键信息。而当日志需求变得如此简单,对日志做索引也变得不再必要只要求提供全文索引即可

事后诊断,比如根据 error code 时间段搜索即使使用暴力计算也可以快速得出结果。

image.png

因此,业内产生了日志“新”势力,核心为降低成本。比如不建索引,直接暴力计算;使用云上最便宜的存储对象,不用 SSD 磁盘等,提高压缩率,但这必定会牺牲一定的性能,因为查询需要解压缩。

但以上思路存在明显缺点,海量日志不做索引纯粹扫描需要一定的时间。需要对时间做索引,对原始文本打 tag 做索引。

image.png

 针对以上需求,Elasticsearch官方推出了异步搜索。搜索下发后,可以在后台慢慢运行搜索,分批地将结果取回。搜索错误日志时,可以先将前面 100 条结果返回,一定时间后再将后续 100 返回

image.png

Elasticsearch的另一新功能为运行时字段Runtime Field不建索引但依然可以支持各种搜索。

定义一个 script暴力计算,从 string 取出想要的信息相当于一个虚拟字段。有了虚拟字段,所有 ES 查询语句都可以像正常字段一样进行查询其本质依然是暴力计算。如果将时间段缩小运行速度也能够基本满足用户需求

image.png

此前社区做法是将很远期日志做 Snapshot存到对象里,但仅作做备份无法进行查询。如果要查询,则需要将对象恢复到集群,需要很多人为工作而我们期望的理想状况是在对象里直接进行查询。因此Elasticsearch开发了官方功能Searchable Snapshot ,将日志存放在对象里日志随着生命周期变得越越冷,可以直接查询。无法快速返回结果一般通过异步搜索进行查询此功能非常适用于大型企业超长时间段日志搜索。

阿里云也提供了类似的功能OpenStore ,由阿里云自研,可以基于阿里云基础设施做更强大优化。多级缓存实现机制与官方原版不太一样,利用 SSD 或旋转磁盘做多级缓存,因此搜索速度会比官方原版更好。

image.png

image.png

Flink 能在tag索引时起到很好作用ES 官方是 Logstash但现在 EFK可以使用 Flink 代替 Logstash Logstash  不是集群,而是一个多实例 load balance 。但是 Flink 集群性能精确一次投递等特性都优于Logstash

因此 Flink 在很多场景的应用都更有优势,比如多行日志合并,可以通过 Flink 窗口将多行日志合并一行中;比如维度添加,Flink可以帮助查询很多结构化数据,补全到日志流中,最后产生结构化的信息。只有标签和维度更全面,才能将暴力计算 scan 缩小到最小,使得既不牺牲太多性能,又能够大幅降低成本。

image.png

Flink 对于存指标降采样都是很好的选择。

image.png

EFKElasticsearch+Flink+LibanaFlink 替代了原先的Logstash,且整条链路全托管,可以快速搭建日志全观测解决方案。

image.png

海量日志写入时,处理问题比如标签提取等,Flink的处理能力强于其他同类产品。大量并发写入时,承载能力是很大问题,ES为其提供了解决方案。另外,OpenStore能够帮助解决日志存储成本高的问题同时,此套开源生态可扩展性很强,上下游接入能力非常强。

image.png

如今的IoT 场景会产生大量日志会进,写入存储都会面临巨大压力

而阿里云为其提供了解决方案,迁移成低,基于 ES Flink 可以轻松兼顾云下和云上,将两端打通。阿里云 ES OpenStore 可以将远日志存到 OSS 切实降低了成本。高并发写入下 Flink 处理能力也为其提供了很好的支撑

image.png

大促时,写入流量一定会存在峰值和波谷,而在云上可以轻松实现削峰填谷。

image.png

阿里云 ES Indexing Service 提供了海量 ES 流量可以打内,支撑海量写入ES Indexing Service 构建好索引并转移到 ES 集群ES 集群只需提供搜索能力即可通过ES Indexing Service 可以更好地匹配峰值,无需预留过多ES计算实例。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
235 1
|
2月前
|
SQL JSON API
ELK技术栈 - Elasticsearch 学习笔记(三)
ELK技术栈 - Elasticsearch 学习笔记(三)
39 0
|
29天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
79 0
|
2月前
|
机器学习/深度学习 消息中间件 算法
Flink ML的新特性解析与应用
本文整理自阿里巴巴算法专家赵伟波,在 Flink Forward Asia 2023 AI特征工程专场的分享。
129265 4
Flink ML的新特性解析与应用
|
2月前
|
JSON 流计算 数据格式
【天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch
【天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch
|
2月前
|
算法 搜索推荐 关系型数据库
Elasticsearch算分优化方案之rescore_query
Elasticsearch算分优化方案之rescore_query
29 0
|
2月前
|
存储 JSON API
ELK技术栈 - Elasticsearch 学习笔记(二)
ELK技术栈 - Elasticsearch 学习笔记(二)
206 0
|
2月前
|
存储 SQL JSON
ELK技术栈 - Elasticsearch 学习笔记(一)
ELK技术栈 - Elasticsearch 学习笔记(一)
180 0
|
4月前
|
消息中间件 NoSQL 数据挖掘
2021年最新最全Flink系列教程__Flink高级特性和新特性(八)
2021年最新最全Flink系列教程__Flink高级特性和新特性(八)
28 0
|
4月前
|
存储 SQL 监控
从 Elasticsearch 到 SelectDB,观测云实现日志存储与分析的 10 倍性价比提升
SelectDB 助力观测云完成日志数据存储和分析架构升级,实现整体性价比 10 倍提升,为日志存储和分析场景服务提供强大动力。

相关产品

  • 实时计算 Flink版