可观测系统存储分析最佳实践

本文涉及的产品
性能测试 PTS,5000VUM额度
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 分享在北京云峰会智能运维场的主题

由来

提到可观测性这个词语,很多人或许会不削一顾,:"这个不就是旧瓶装新酒吗?和监控有什么差别吗?" 。带着这个问题,我们先来看看这个词诞生的时代背景。

随着近几年云计算、云原生的出现,我们发现花在标准化部署、上线的周期被大大缩短。但数字化技术的出现,却对背后研发、运维和运维的工程师们提出了更高的要求,例如:

  • 研发和上线的过程中,需要尽可能模拟真实的情况,对测试环境系统进行对比,判别
  • 在上线后的过程中,需要大量的配套监控,确保业务稳定性
  • 在业务支撑的过程中,一方面需要关注系统是否有认为的漏洞,造成入侵、刷单等,引起经济损失。另外一方面也需要做好运营支撑工作,更了解用户是否按我们的预期在使用系统。

在这些活动的背后,包含的大量围绕系统、应用、客户行为的观测+分析活动:
image.png

那可观测性与传统监控有什么区别呢?

我们来看一个例子:海恩法则(Heinrich's Law)指出: 每一起严重事故背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。

这背后表达了非常朴素的道理,在人为构建的系统中,大部分过程实际上是连续的。一个t3时间点的问题并不是一蹴而就,而是由一大堆t0-t2时间段的事件叠加而成。我们对一个系统是否正常的监控实际上是一个结果,可观测性则是通过大数据的思想,通过细粒度、多维度数据对系统进行建模,用以提前推导出可能的风险。

image.png

除了我们熟悉的监控场景外,我们还可以把工程师关于观测工作做一个大致的细分:能看到无论是开发、运维、安全、还是运营,很多时间都在和数据分析打交道,整个过程实际上是有一套方法论在支撑:

  • 采集多种多用的数据源
  • 集中式存储数据
  • 对数据分析、展示成可以理解的指标
  • 根据指标计算的结果,通过自动化的方式进行各种动作

image.png

将可观测数据和平台统一

既然所有的观测动作可以通过一套方法论来构建,那我们是否可以通过一套平台来构建这套观察体系呢?答案肯定是Yes,事实上一些类似的场景正在发生类似的变化:

让我们以2020年火热的 “智能电气化汽车”来做一个例子:

五年前 现在
智能化方法 各种独立的外挂系统 传感器+总线+中央处理器
例子 胎压检测仪,通过传感器+蓝牙显示在驾驶位的小屏幕上;倒车影像,摄像头+屏幕;电子狗;导航等等 统一摄像头

毫米波雷达/激光雷达
各种传感器 |
| 数据流动 | 传感器+显示器 | 总线 |
| 决策方式 | 依赖人(视觉+决策) | 算法+算力辅助人 |
| 主要问题 |

  1. 独立系统
  2. 数据孤岛
    |
  3. 接口统一
  4. 数据互通
    |

| 增加传感器 | 驾驶者负担增大 | 更准确的决策 |

image.png
我们以监控软件模式也是如此,如果按这个模式发展,未来所有孤立的软件是没有竞争力的,需要有一个统一、具备强大算力的平台来统筹。

如何构建平台

我们可以把整个过程做一个抽象,左边是数据源,右边是决策者(人)。从信息论的角度,系统构建的目标是从杂乱、无需、无关联的数据中洞察系统的规律。因此我们需要设计:

  • 一套对接个数数据源的采集接口
  • 为异构数据提供一套灵活的存储模型
  • 为数据处理打造流批一体的分析引擎
  • 一套能驱动处理与反馈的机制

image.png

阿里云SLS(原日志服务)产品就是为此场景设计的系统,除提供上述的功能外,平台还兼具弹性、低成本、开放等特点,我们来分模块看看系统的构成:

1. 采集系统

数据采集从来源上可以分为:

  • 主动式采集:例如拨测技术、移动端探测
  • 被动采集:例如采集系统的输出
  • 辅助数据:一些非运行时数据,但对我们后期也是有帮助的。例如系统的架构与分布

一套完整采集系统必须能够完整对接以上数据,方便实时地去把数据拿到系统中。为此SLS提供了60+种采集的方式,在全球接入了30+个接入点,并提供一张自动加速的传输网络来对接各种数据源。
image.png

2. 存储系统

当采集完这些数据后,我们需要为后期的分析给这些数据提供一套完整的存储引擎。我们以DevOps领域最常见的三种数据为例(Trace/Log/Metric),目前主流的做法是提供三种类型的存储引擎,当需要转换时,通过Queue进行数据的拷贝。

image.png
为了解决这类数据孤岛问题,SLS设计了一套类似数据库的“表”存储模型,通过排序索引、子表、列存、倒排索引等技术把针对这三类不同数据的需求,统一成SQL访问接口。这个带来的好处是,用户不需要为不同引擎去学习不同API,只需要改变Query即可灵活访问。
image.png
从架构角度而言,这种存储模式让整个数据流也变得简洁。过去我们为了从系统采集Trace、Log、Trace数据,我们需要搭建一套采集系统,并且通过ETL流程对数据进行分发与转存。最麻烦的是,当需要使用时我们必须得去4个不同的系统,使用4个API来访问。但在SLS存储中,我们只需要一套访问接口。存储引擎自动会支持弹性伸缩、冷热分层等功能。

image.png

3. 分析系统

在存储之上,我们针对数据处理构建了三种能力来解决三个问题,分别是

  • 把各种异构数据规整:数据加工
  • 对规整后的结构化数据提供灵活分析能力:查询接口
  • 对高维数据进行分析:各种开箱即用的算法

image.png

以查询接口为例子,在面向“表”的查询分析语言设计上,我们遵循SQL92标准,但同时通过子查询把PromQL等语法进行了融入。这样就可以在一个SQL中进行数据查询,规则与建模预测。降低了数据获取与分析的难度。
image.png
通过统一的SQL,我们可以在存储统一基础上,通过Query变化,把Trace/Log/Metric这些数据的组合查询进行有效的统一与关联。
image.png

全貌

以下是阿里云云原生观测分析平台全貌,目前该平台一天处理30PB数据量,支持来自用户15亿次每天的分析活动,每天服务10W+用户。
image.png

对我们工作感兴趣的,可以通过如下方式了解更多,谢谢关注:)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
运维 监控 Cloud Native
|
1月前
|
Web App开发 监控 Go
阿里云可观测 2024 年 10 月产品动态
阿里云可观测 2024 年 10 月产品动态。
|
3月前
|
网络协议
阿里云可观测 2024 年 8 月产品动态
阿里云可观测 2024 年 8 月产品动态。
|
4月前
|
Prometheus 监控 Cloud Native
阿里云可观测 2024 年 7 月产品动态
阿里云可观测 2024 年 7 月产品动态
280 19
|
4月前
|
数据可视化 数据挖掘 数据处理
数据平台问题之想提高指标获取效率要如何实现
数据平台问题之想提高指标获取效率要如何实现
|
5月前
|
存储
测试问题之可观测性的本质是什么,SLS在可观测性领域采取了什么样的策略
测试问题之可观测性的本质是什么,SLS在可观测性领域采取了什么样的策略
|
7月前
|
SQL 运维 监控
阿里云可观测 2024 年 3 月产品动态
阿里云可观测 2024 年 3 月产品动态
677 17
|
7月前
|
SQL 监控 测试技术
阿里云可观测 2024 年 2 月产品动态
阿里云可观测 2024 年 2 月产品动态
619 14
|
7月前
|
人工智能 Prometheus 算法
阿里云可观测 2023 年 12 月产品动态
阿里云可观测 2023 年 12 月产品动态
205 10
|
存储 数据采集 监控
从存储统一到数据融合,SLS在可观测场景的思考和行动
介绍SLS在可观测数据融合分析的一系列技术升级,融合Trace、全栈监控、Continuous Profiling、移动端监控等功能,帮助大家更快速地构筑全栈、自动化的观测能力。
127964 52