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

Posted zhisheng_blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流利说统一可观察性平台实践相关的知识,希望对你有一定的参考价值。

在线教育行业现状
随着 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.为了能够实现自动化,我们开发了一套适用于云上场景的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的利用率(如下表格所示),以此能够判断每个部门的资源使用情况,推进各部门优化成本。

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

全方位日志采集

SLS支持Log/Metric/Trace统一采集,支持服务器/Kubernetes/应用/移动设备/网页/IoT等数据源接入,支持阿里云产品/开源系统/云间/云下日志数据接入,核心特点有:

  1. 便捷:40+成熟接入方案,多客户端统一采集,支持内网、公网、全球加速传输等多种传输方式

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

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

Prometheus时序方案

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

实时数据分析

查询分析提供关键词、SQL92、AIOps函数等多种方式,支持面向文本+结构化数据实时查询分析,异常巡检与智能分析。主要特点如下:
1.高性能:秒级分析十亿级数据,且完整支持SQL、PromQL等分析接口,HTTP、Kafka、JDBC、Prometheus等协议
2.稳定可靠:企业级设计,多租户隔离,PB级容量设计,数万企业用户选择
3.智能:经过阿里经济体实践的AIOps能力,支持智能异常巡检与根因分析数据加工

数据加工通过灵活语法,在不编写代码情况下支持各种复杂数据提取、解析、富化、分发等需求,支持结构化分析。数据加工的主要特点如下:
1.灵活:提供丰富算子、开箱即用的场景化UDF(Syslog、非标准json、AccessLog UA/URI/IP解析等)。可扩展语法应对各种复杂格式
2.免运维:全托管云上服务,无须投入额外运维资源。支持自动根据流量弹性伸缩
3.可扩展:支持多层嵌套、分流等逻辑,支持复杂的数据分派与编排需求

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

end






Flink 从入门到精通 系列文章
基于 Apache Flink 的实时监控告警系统关于数据中台的深度思考与总结(干干货)日志收集Agent,阴暗潮湿的地底世界

公众号(zhisheng)里回复 面经、ClickHouse、ES、Flink、 Spring、Java、Kafka、监控 等关键字可以查看更多关键字对应的文章。

点个赞+在看,少个 bug ????

以上是关于流利说统一可观察性平台实践的主要内容,如果未能解决你的问题,请参考以下文章

AI和大数据结合,智能运维平台助力流利说提升核心竞争力

数字敏捷性上海道宁与​SolarWinds为您提供全面的可观察性IT 服务管理和数据库管理

统一的可观察性:指标日志和跟踪

提高CI/CD可观察性的4 个最佳实践

流利说 TypeScript 实践

云原生 - Istio可观察性之监控