Elasticsearch 全观测技术解析与应用(二):技术原理与生态

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文从理论和技术层面介绍了全观测的技术,包括全观测与可观测的区别,如何实 现可观测,如何构建可观测,可观测每一步所存在的问题,以及全观测如何解决这些问题, 它又有哪些工具可以使用等进行了介绍。

点击免费下载
《Elasticsearch 全观测技术解析与应用》>>>

分享嘉宾:朱杰

本文主要从理论和技术的层面介绍全观测的技术。

首先,监测和监控是有很大的区别的。

监控主要负责最上面两层的告警和系统概况,它的信号总量比较小。但是拿到监控后,我们 并不知道系统发生了什么,所以需要结合日志系统、指标系统甚至 APM 系统进行排查,找 到线索并进行剖析,甚至找出服务间的依赖关系。因此从可观测性的角度讲,我们要探查的 内容要远大于监控范畴,且获得的信号总量也层层递增,数据量越来越大。

image.png

在谈全观测之前,我们先谈谈可观测。

构建可观测性有 4 个步骤。第 0 阶,我们会构建检查各个系统健康状况的检查机制。之后, 我们会搭建采集系统各种性能的指标。然后,搭建集中化的日志平台,把所有系统的日志进 行汇总并做一定程度的关联,帮助解决问题。最后,是涉及到应用的分布式性能的追踪,它 要求更高,往往能从代码层面、API 层面直接度量性能的各方面指标。

image.png

一、每一步具体是如何做的?

首先是健康检查。

健康检查有几种方法,第一是广播的形式,也就是把自己系统和邻居系统的状态信息发送到 网络上,而接收端在收到广播包后就会获得这个系统的性能状态;

第二个模式是注册表,就是把服务的状态注册到中央的注册表系统里,比如 etcd 或者 Zk。 当把服务状态写进去后,就相当于把自己的观测性暴露了,所以监测系统就可以从中心系统 获得信息。这种模式在分布式系统中非常常用,可以通过查询中央注册表获得集群中每一个 节点的状态;

第三种模式是暴露。我们在实现自己的应用服务器时,可能会设置一组查询健康度的 API 对外暴露,通过外部工具轮巡、调用 API 就可以获得这个系统的观测性。

Elasticsearch 就有这样一组 API 去暴露它的健康度。

image.png

第二是指标,我们能在指标里观察些什么?

在建指标系统的时候我们会收集这几类指标。第一是最基础的系统指标,包含 CPU、网络、 磁盘等,这些性能指标至关重要;

系统层之上是应用级别的指标,我们在做应用开发的时候要有意识地暴露很多指标,否则就 不太好观测。这里面包含出错率、延迟、饱和度等应用的性能指标。它的暴露方式也可以用 API 的形式来调用,让外围系统轮巡,但更常用的是通过日志的方式去打指标。比如在交易 系统中,我们会把与这笔交易相关的原数据打到日志中,然后能通过日志分析了解系统的健 康度。另外,现在流行的做法是打成像 Json 这样的结构化日志,这对后续的日志处理有很 大帮助;

再上面,是业务性的指标,它会涉及到很多 BI 的分析,比如处理的订单的数量、营业额等。 如果有业务指标的暴露,就可以反映系统支撑的各种业务量数据,这对运营人员比较重要。

image.png

如何从指标获得观测性?有哪些方式?

当前,像 Prometheus 这种系统应用得比较多,它的原理就是 Prometheus 提供的 agent 从各个采集点采集结构化数据,写入 Prometheus 数据库,然后基于一些开源的工 具进行指标的可视化展现。从告警的角度,它也可以写一些告警的规则,通过 webhook 等对外告警。

这是做指标系统比较常用的一套堆栈。

image.png

第三是日志。如何从日志获得可观测性?

日志很多就是一串字符串,所以要从这里面获得可观测性,很重要的一步就是进行结构化的抽取工作。从下面的图中,我们可以看到各种各样的字段,比如IP地址、时间戳、进程号,以及具体请求的URL。对于日志系统而言,就需要把文本的字符串变成结构化数据。

image.png

而要获得更好的观测还要注意,你的日志能够暴露多少状态,就意味着对你的监测程度能做得多好。比如下面这个例子,除了常规的发生时间、日志信息外,还有它提供的服务、它的开发团队信息、谁受到了影响等。这些对后续的分析、运维和提升服务质量都非常有帮助。所以从运维角度,要追踪哪些性能、哪些数据应该打在日志里是开发人员要进一步探索的。

image.png

第四,分布式追踪。如何从分布式的调用中获得可观测性?

APM是从微观的代码层面捕获各种数据,所以它获得观测性的关键就在于安装APM探针。它能从每个代码块的层面帮我们度量每一步花费的时间、捕获报错等等。比如能把一笔事务处理的链路追踪到每个系统中,把它串联成一个瀑布图呈现给大家。这对开发人员去追踪问题,运维人员去定位问题都是非常重要。

image.png

说完如何获得可观测性,下面讲讲如何去建设。

前两个level比较简单,比如做日志,把日志集中化归档到文件服务器上就算做完了。当我们上了ELK,把日志集中化之后,我们就能很轻易地在日志中做检索,达到检索级。

不过检索级是事后的故障分析,从运维角度,我们要获得趋势的预测就要达到分析级的目标,分析级的特征是我们能看到各种分析图标。而从检索级到分析级的鸿沟在于,数据的结构化程度有多高,结构化程度越高,能呈现的图表和编写规则就越多。APM系统因为采集的已经是结构化的数据,所以不需要复杂的加工,难点在于对日志的结构化提取。如果能够实现,后续就能进行聚合运算,产生丰富的图表,并编写很多规则。

有了分析图标和各种规则,就能建立一套预防的运维机制,这样系统初现端倪时就可以进行告警。而到了更高级,就可以通过加入机器学习等技术实现更智能化的预测。

构建可观测系统就是从初级开始,一步步走上高级。

image.png

另外,从每个维度看,每一个级别里处理的内容会不太一样。

数据收集角度,从初级的日志集中化和分析,到中级的结合日志和指标综合判断系统状态,再到高级的融合日志、指标、APM数据进行判断;数据准备角度,从初级的不抽取,到中级逐渐积累和解决故障、编写规则、实现少量结构化,再到高级积累更多数据、规则和告警,以及引入机器学习等帮助异常检测。

image.png

以上,我们谈了怎么可观测,以及如何去建设,下面谈谈全观测。

全观测其实是对传统运维的改进。

像上面所讲,传统运维是一步步进行搭建的,每一步都会出一个开源或商业产品,这会导致产品间出现数据孤岛的状况,非常割裂;第二是有各种厂商的工具,导致很难做自动化统一分析,甚至它们的API都不一样,严重制约了我们构建各方面观察的自动化平台;第三,每个方面只能提供一方面的观察,而故障往往是立体的,可能要多方面观察才能定位到具体的故障;最后,很多系统只是做了收集,没有真正进行分析,没有发挥出大数据的价值,也没有改进运维质量。

image.png

所以Elastic提倡的全观测,核心就是把包括日志、指标、APM甚至Uptime这些数据汇总到一个平台上,让运维人员、开发人员,甚至是业务人员都可以在统一的大数据的平台之上,对所有的数据从统一的视角进行观察,进行统一的告警,以及进行统一的可视化。

这套平台建立在Elastic Stack之上,核心是Elasticsearch,而之上的Kibana也会提供像日志、指标、APM各种应用。同时,Elasticsearch也推出了像Elastic Common Schema这样的一个命名的规范,能够更好地去分析各个数据的来源。

image.png

打通数据有哪些优势?

第一,统一的可视化分析视图。可以把日志、指标、APM的分析图表放在一个页面进行统一的分析和趋势呈现;

第二,统一的监控和告警。由于所有的数据都在这儿,所以在构建监控和告警规则的时候可以综合日志、指标、APM的数据进行综合判断,减少误报;

第三,统一的机器学习监测。机器学习可以帮助监测大量指标,不管是分散在日志、指标还是APM,都可以统一监测。

image.png

现在很多厂商也在想打通数据,比如日志厂商想融合指标和APM,APM厂商想把日志和指标融合进来。但这是否容易实现呢?实际上有几个难点。

实现全观测有哪些的难点?

首先最大的难点在数据量。日志、指标这些数据量都很大,这就需要一个分布式的系统去做。另外因为因为要检测很多东西,所有要有数据的关联,进行多维度的分析。这个地方的要求更高,不仅要能够动态地生成字段,所有的列要能够索引,而且要能够灵活地写各种各样的查询。

所以,很多厂商会选择Elasticsearch作为底层数据引擎,因为Elasticsearch本身是分布式的,能够容纳海量的数据。第二个,它也有大量的多维分析的灵活度存在。同时,它还能进行智能化的检测。

image.png

要做这样一套全观测的系统,有哪些技术可以用到?

在数据采集生态中,我们可以用到以下这些工具,包括日志采集工具、指标采集工具和APM采集工具。

image.png

同时,数据存储搜索工具生态有如下工具,包括关系型数据库、时序数据库和ES搜索引擎,我们能从下面这张图看到它们各自的优势和劣势。

image.png

以下是分析展示工具。比如日志数据分析展示的Kibana,配合Prometheus的Grafana,还有专门做APM数据分析展示的Skywalking。

现在我们讲究集成到一个平台上,这样日志、指标和APM就可以进行分析的联动和跳跃,而Kibana现在就能做到在一个平台纳入分析这三方面的数据,并且进行数据的跳跃和联动。

image.png

最后,是全观测的主要流程。它包含数据采集阶段、数据处理、数据搜索存储和可视化几个步骤。

在数据采集层,我们能用上面的各种工具对日志、指标、APM进行采集,然后将其汇聚到Kafka;在数据处理层,用相应的数据处理工具从Kafka进行消费;随后,数据经过各种各样的处理,流入到数据存储层,在Elasticsearch里对数据进行索引;最后,可以通过Kibana或第三方工具进行可视化展现。不过,可视化只是帮助我们进行人工监控,如果要做到自动化,就一定要安装各种各样的规则,能够进行基于规则的和基于机器学习的监控和告警。

image.png


image.png

阿里云Elastic Stack】100%兼容开源ES,独有9大能力,提供免费 X-pack服务(单节点价值$6000)

相关活动


更多折扣活动,请访问阿里云 Elasticsearch 官网

阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费
下载白皮书:Elasticsearch 八大经典场景应用


image.png

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
59 10
|
4天前
|
机器学习/深度学习 人工智能 运维
阿里云技术公开课直播预告:基于阿里云 Elasticsearch 构建 AI 搜索和可观测 Chatbot
阿里云技术公开课预告:Elastic和阿里云搜索技术专家将深入解读阿里云Elasticsearch Enterprise版的AI功能及其在实际应用。
阿里云技术公开课直播预告:基于阿里云 Elasticsearch 构建 AI 搜索和可观测 Chatbot
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
秒级响应 + 99.9%准确率:法律行业文本比对技术解析
本工具基于先进AI技术,采用自然语言处理和语义匹配算法,支持PDF、Word等格式,实现法律文本的智能化比对。具备高精度语义匹配、多格式兼容、高性能架构及智能化标注与可视化等特点,有效解决文本复杂性和法规更新难题,提升法律行业工作效率。
|
10天前
|
数据采集 存储 JavaScript
网页爬虫技术全解析:从基础到实战
在信息爆炸的时代,网页爬虫作为数据采集的重要工具,已成为数据科学家、研究人员和开发者不可或缺的技术。本文全面解析网页爬虫的基础概念、工作原理、技术栈与工具,以及实战案例,探讨其合法性与道德问题,分享爬虫设计与实现的详细步骤,介绍优化与维护的方法,应对反爬虫机制、动态内容加载等挑战,旨在帮助读者深入理解并合理运用网页爬虫技术。
|
16天前
|
机器学习/深度学习 自然语言处理 监控
智能客服系统集成技术解析和价值点梳理
在 2024 年的智能客服系统领域,合力亿捷等服务商凭借其卓越的技术实力引领潮流,它们均积极应用最新的大模型技术,推动智能客服的进步。
51 7
|
17天前
|
机器学习/深度学习 搜索推荐 API
淘宝/天猫按图搜索(拍立淘)API的深度解析与应用实践
在数字化时代,电商行业迅速发展,个性化、便捷性和高效性成为消费者新需求。淘宝/天猫推出的拍立淘API,利用图像识别技术,提供精准的购物搜索体验。本文深入探讨其原理、优势、应用场景及实现方法,助力电商技术和用户体验提升。
|
22天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
49 3
|
23天前
|
编译器 PHP 开发者
PHP 8新特性解析与实战应用####
随着PHP 8的发布,这一经典编程语言迎来了诸多令人瞩目的新特性和性能优化。本文将深入探讨PHP 8中的几个关键新功能,包括命名参数、JIT编译器、新的字符串处理函数以及错误处理改进等。通过实际代码示例,展示如何在现有项目中有效利用这些新特性来提升代码的可读性、维护性和执行效率。无论你是PHP新手还是经验丰富的开发者,本文都将为你提供实用的技术洞察和最佳实践指导。 ####
28 1
|
24天前
|
供应链 算法 安全
深度解析区块链技术的分布式共识机制
深度解析区块链技术的分布式共识机制
47 0
|
24天前
|
存储 供应链 算法
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
49 0

相关产品

  • 检索分析服务 Elasticsearch版
  • 推荐镜像

    更多