流利说统一可观察性平台实践

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: 流利说利用日志服务SLS构建统一可观察性平台最佳实践

在线教育行业现状
随着 90 年代互联网的引入,在线教育产品也依托于互联网诞生。随着互联网技术的发展,在线教育产品也开 始了出现新的模式。在线教育从最初单纯的文字形式,开始往图片、音频方面开始发展。 教育在线化也进一步促进了数据化的发展,内容作为教育企业的核心资产,无论是数据化程度还是数据化规模都在不断提升。同时用户使用时长的提升,又为教育 AI 提供了大量源数据。据统计今年 3 月份在线教育用户日均在线 时长,超过 200 万天。如此海量的数据为行业的智能化发展提供了良好的土壤,推动了教学内容、课程营销、师资 管理、质量评估等智能分析的发展。

流利说公司介绍
流利说是世界领先的科技驱动的教育公司,作为智能教育的倡行者,流利说拥有一支业内领先的人工智能团队,经过多年积累,流利说已拥有巨型的“中国人英语语音数据库”,累积实现记录大约 37 亿分钟的对话和 504 亿句录音。
2013年流利说推出了第一款产品“英语流利说”,集成了语音识别、打分和自适应学习等多种核心技术。具有上下文情景对话、发音指导课程等丰富内容,并提供人工智能英语老师和游戏化的学习体验,为用户在英语学习中获得更多乐趣。这款有趣又有效的产品很快就占领了当时的市场并获得了用户的高度认可。
但业务快速发展,用户数大幅度增长,平台的用户数量已从当初的百万级,增长至过亿,因此业务的高低峰期数据流量变化、业务复杂度和分析难度都给给 IT 架构带来了巨大的挑战。

流利说统一监控平台的相关挑战
作为一个没有单独运维部门的公司,基础平台的统一监控平台主要由cloud-infra团队的研发来完成,而团队的核心诉求也不仅仅是SLA、性能的监控、告警和提供问题定位的相关数据,还包括cloud-infra的技术价值运营,例如利用率、成本节约、业务关系网络等。在这些核心诉求下,对于统一监控平台会具高的要求:
1.采集、监控各种异构数据源,包括K8s、ECS上的机器指标、利用率、Istio相关的调用日志、自建中间件相关指标、云服务提供的指标、业务的Trace数据等,此外还要包括各类成本数据的实时采集。
2.各类资源的动态发现与动态采集,包括组织关系等部门相关的数据也需要实时更新,以便能够实时反馈出最准确的相关指标和归属关系。
3.大规模的数据存储与分析,由于流利说的业务规模大,使用的各类云资源以及业务产生的数据量非常巨大,每天在数十TB,方案需要满足在此规模上的实时分析和展现的能力。
4.监控平台负责的是稳定性问题,本身的稳定性也需要做好,因此需要消除各个部分的单点问题,并且具备异常快速恢复的能力。

技术选型
统一监控平台不仅仅是时序相关的数据,其中非常核心的业务可用性数据需要通过各类日志进行计算和分析,因此整体上需要选择Logs和Metrics两种数据方案。对于这两类数据都分别有不同的社区方案或商业方案,例如ES、Loki、SLS、Prometheus、OpenTSDB、InfluxDB等。最终日志方案选择了阿里云SLS,时序方案选择了Prometheus+SLS,主要的原因如下:
1.SLS具备各类数据统一存储、分析的能力,能够在SLS上去关联到Metrics、Logs数据,这是其他平台所不具备的
2.SLS平台能够适应非常大的数据规模,相比ES来说性能要好很多,也是免运维的服务,省去了自己维护ES高可靠的问题
3.时序方案以Prometheus为主,Prometheus的生态非常完善,而且PromQL使用起来也简介。SLS的时序库可以作为Prometheus的远端高可靠存储,能够解决Prometheus的可靠性问题
4.SLS的方案中有数据加工的功能,可以和外部的数据源去做Join分析和加工,能够更好的来处理各种复杂的日志,把日志加上catalog相关的信息

整体架构
流利说图片 1.png
当前流利说统一监控平台的架构如上图所示:

1.为了能够实现自动化,我们开发了一套适用于云上场景的IaaS、PaaS资源动态发现的机制,能够实时将新购买、创建的资源加入到监控、采集中,避免大部分的人工操作

2.日志相关:
•不同业务的日志直接通过SLS的Logtail采集到不同的日志库中
•并不是所有的日志都需要长时间存储和索引,因此我们对于日志进行归类,对于其中需要有审计需求的,会投递到OSS上做长期存储;业务排查问题的日志只保存2周,并开启全文索引;AccessLog只开启部分字段的索引,可以节省很多的索引费用。
•对于需要计算SLA、PXX指标的NGINX访问日志,会使用数据加工,配合已经在RDS中存储的一些映射规则、部门、应用等Catalog信息,将NGINX访问日志中的URL映射成对应的部门、应用、方法等。

3.监控相关
•监控方案选择了Prometheus,针对于流利说的场景,我们开发了一些Exporter用于从各类云上产品、自建组件中获取Metrics
•同时为了更好的使用Prometheus,和内部的CICD系统集成,我们在Prometheus上增加了一个Sidecar,监听Git仓库的变更,并根据变更动态的Reload Prometheus配置
•Prometheus上为了提高查询速度,配置了各类Recording Rule,这些都统一使用Git管理
•AlertManager的告警直接对接内部的告警中心,可以做排版、升级等高级功能
•为了解决Prometheus单点的问题以及后面和Catalog进行关联分析的问题,我们使用SLS的时序库,直接让Prometheus Remote Write到SLS的时序库中

4.指标计算
•核心指标的计算一部分来源于NGINX的AccessLog,从入口就可以拿到各个业务的QPS、错误率、Latency(平均、PXX等),对于业务没有任何的侵入性
•资源利用率、中间件、基础设施等指标来源于Prometheus写入的时序库,基于Catalog可以聚合计算出每个部门、业务的相关指标
•计算完成后的指标信息,由于数据量非常小,可以很容易的存储在MySQL、ES中,并且投递一份到OSS上备份

相关成果
目前这套监控平台几乎承载了公司所有的核心监控,在上线后一直稳定运行,并且在各类活动期间也能够非常轻松的应对数据量的突增。整体的业务价值主要体现在:
1.监控:监控的第一价值是做各类的监控和告警,尤其是SLA相关,由于将数据已经关联到了具体的部门和业务应用,可以很容易的得到每个部门、应用的SLA,并进行公司范围内统一的推进和改进
2.问题排查与故障隔离:基于Istio的访问日志,配合Catalog信息,可以计算出每个应用的调用关系,因此可以实时的生成业务关系网格,并能够知道每个关系(边)的质量情况。了解到业务的关系后,在出现问题的时候也可以快速的定位根源和故障隔离
3.FinOps:在Cloud Infra部门,被挑战最多的就是开销问题。因此成本优化也是我们的一个核心工作,主要的做法是:计算每个部门、团队的资源利用率,包括平均利用率以及各类PXX的利用率(入下表格所示),以此能够判断每个部门的资源使用情况,推进各部门优化成本。

image.png

流利说统一监控背后的技术
流利说统一监控基于阿里云SLS进行构建,SLS定位为云原生观测分析平台,为Log/Metric/Trace等数据提供大规模、低成本、实时平台化服务。一站式提供数据采集、加工、分析、告警可视化与投递功能,全面提升研发、运维、运营和安全等场景数字化能力。其中统一监控使用到了多种SLS的核心功能,主要包括:

全方位日志采集
流利说图片2.png

SLS支持Log/Metric/Trace统一采集,支持服务器/Kubernetes/应用/移动设备/网页/IoT等数据源接入,支持阿里云产品/开源系统/云间/云下日志数据接入,核心特点有:
1.便捷:40+成熟接入方案,多客户端统一采集,支持内网、公网、全球加速传输等多种传输方式

  1. 可靠:阿里经济体自用基础设施,历经多次双十一,春晚活动考验。支持断点续传,可根据业务流量实现弹性伸缩

3.开放:多协议(HTTP/Syslog/Prometheus/OpenTelemetry)无缝接入,完整对接开源生态

Prometheus时序方案
流利说图片3.png
SLS时序存储从设计之初就是为了解决阿里内部与众多头部企业客户的时序存储需求,并借助于阿里内部多年的技术积累,使之可以适应绝大部分企业级时序监控/分析诉求。SLS时序存储的特点主要有:
1.丰富上下游:数据接入上SLS支持众多采集方式,包括各类开源Agent以及阿里云内部的监控数据通道;同时存储的时序数据支持对接各类的流计算、离线计算引擎,数据完全开放
2.高性能:SLS存储计算分离架构充分发挥集群能力,尤其在大量数据下端对端的速度提升显著
3.免运维:SLS的时序存储完全是服务化,无需用户自己去运维实例,而且所有数据都是3副本高可靠存储,不用担心数据的可靠性问题
4.开源友好:SLS的时序存储原生支持Prometheus的写入和查询,并支持SQL92的分析方法,可以原生对接Grafana等可视化方案
5.智能:SLS提供了各种AIOps算法,例如多周期估算、预测、异常检测、时序分类等各类时序算法,可以基于这些算法快速构建适应于公司业务的智能报警、诊断平台

实时数据分析
流利说图片4.png
查询分析提供关键词、SQL92、AIOps函数等多种方式,支持面向文本+结构化数据实时查询分析,异常巡检与智能分析。主要特点如下:
1.高性能:秒级分析十亿级数据,且完整支持SQL、PromQL等分析接口,HTTP、Kafka、JDBC、Prometheus等协议
2.稳定可靠:企业级设计,多租户隔离,PB级容量设计,数万企业用户选择
3.智能:经过阿里经济体实践的AIOps能力,支持智能异常巡检与根因分析数据加工
流利说图片5.png
数据加工通过灵活语法,在不编写代码情况下支持各种复杂数据提取、解析、富化、分发等需求,支持结构化分析。数据加工的主要特点如下:
1.灵活:提供丰富算子、开箱即用的场景化UDF(Syslog、非标准json、AccessLog UA/URI/IP解析等)。可扩展语法应对各种复杂格式
2.免运维:全托管云上服务,无须投入额外运维资源。支持自动根据流量弹性伸缩
3.可扩展:支持多层嵌套、分流等逻辑,支持复杂的数据分派与编排需求

在云原生时代,数字化正在各行业推动业务创新。只有提升用户体验、加速创新、更新基础设施与架构、利用好多样化的数据,才能在整体大环境中脱颖而出。阿里云推出的智能运维平台,不仅仅是要帮助工程师减少工作量,更多的是希望让运维工程师们从各种机械化的工作中解脱。我们将会包揽所有的“脏活累活”,让故障的时间大幅缩小,让运维人将更多创造力,放在数字创新以及企业业务创新上,为企业提供提供更优的竞争力。

**2021.7.16|北京·8KM coffee (望京店)
数智创新行(北京站)——智能运维专场**

针对日常运维工作中出现的问题,阿里云邀请多位大咖和大家聊聊关于智能运维相关话题
阿里云带来云原生智能运维解决方案,满足海量事件有效感知、高效响应,可观测数据统一分析、故障定位,以及基于AI的异常检测等需求,助力企业构建自己的运维平台,成为开发、运维人员高效可靠的助手

👇👇点击报名👇👇


数智创新行(北京站)——智能运维专场

了解更多详情,欢迎点击:
https://developer.aliyun.com/topic/osssalon

相关文章
|
并行计算 TensorFlow 调度
推荐场景GPU优化的探索与实践:CUDA Graph与多流并行的比较与分析
RTP 系统(即 Rank Service),是一个面向搜索和推荐的 ranking 需求,支持多种模型的在线 inference 服务,是阿里智能引擎团队沉淀多年的技术产品。今年,团队在推荐场景的GPU性能优化上又做了新尝试——在RTP上集成了Multi Stream,改变了TensorFlow的单流机制,让多流的执行并行,作为增加GPU并行度的另一种选择。本文详细介绍与比较了CUDA Graph与多流并行这两个方案,以及团队的实践成果与心得。
|
机器学习/深度学习 边缘计算 自动驾驶
【初探GSConv】轻量化卷积层直接带来的小目标检测增益!摘录于自动驾驶汽车检测器的架构
【初探GSConv】轻量化卷积层直接带来的小目标检测增益!摘录于自动驾驶汽车检测器的架构
1020 0
【初探GSConv】轻量化卷积层直接带来的小目标检测增益!摘录于自动驾驶汽车检测器的架构
|
算法
ECCV 2024:盲视频去闪烁通用方法BlazeBVD来了,美图&国科大联合提出
【8月更文挑战第15天】随着多媒体的兴起,视频成为信息传播的关键媒介,但视频中的闪烁问题影响观看体验。美图与中国科学院大学联合研发的BlazeBVD算法,采用直方图辅助方法简化学习过程,提高了视频去闪烁的质量与速度。该算法通过2D网络恢复纹理,3D网络修正时间一致性,实现了高效能与高保真度。实验结果显示,BlazeBVD在多种视频类型上表现优秀,推理速度提升显著。尽管如此,算法在处理局部闪烁和复杂场景时仍存在局限性,未来有进一步优化的空间。[论文链接](https://arxiv.org/pdf/2403.06243v1)
234 1
|
机器学习/深度学习 存储 算法
Python 机器学习算法交易实用指南(一)(2)
Python 机器学习算法交易实用指南(一)
360 2
|
机器学习/深度学习 人工智能 运维
【机器学习】Adaboost: 强化弱学习器的自适应提升方法
在机器学习领域,集成学习是一种通过结合多个弱模型以构建更强大预测模型的技术。Adaptive Boosting,简称Adaboost,是集成学习中的一种经典算法,由Yoav Freund和Robert Schapire于1996年提出。Adaboost通过迭代方式,自适应地调整数据样本的权重,使得每个后续的弱学习器更加关注前序学习器表现不佳的样本,以此逐步提高整体预测性能。本文将深入探讨Adaboost的工作原理、算法流程、关键特性、优势及应用场景,并简要介绍其实现步骤。
563 1
|
存储 监控 NoSQL
Redis是如何保证高可用的?
通过这些机制,Redis可以在主节点故障或其他异常情况下保持高可用性,确保数据的可靠性和可用性。不过,为了实现高可用性,需要仔细规划和配置Redis集群,并确保监控和故障恢复机制的可靠性。
455 6
|
计算机视觉
论文阅读笔记 | Transformer系列——Transformer in Transformer
论文阅读笔记 | Transformer系列——Transformer in Transformer
422 0
论文阅读笔记 | Transformer系列——Transformer in Transformer
|
机器学习/深度学习 Python
Python将深度学习的输入数据打乱顺序
本文介绍基于Python语言,实现机器学习、深度学习等模型训练时,数据集打乱的具体操作~
382 1
|
安全 Java 数据安全/隐私保护
【Java】保护你的应用:深入探讨Spring Security的应用与最佳实践
【Java】保护你的应用:深入探讨Spring Security的应用与最佳实践
291 0
|
监控 前端开发 JavaScript
使用JavaScript实现实时报警功能的办公电脑上网监控软件:前端代码
在今天的数字化时代,监控软件已成为许多组织和企业必不可少的一部分,用于保护数据和确保系统的正常运行。本文将介绍如何使用JavaScript编写前端监控软件,包括实时报警功能的实现。我们将探讨一些关键的代码示例,以展示如何构建这样的系统。最后,我们还会讨论如何自动将监控到的数据提交到一个网站。
429 4