共计 3453 个字符,预计需要花费 9 分钟才能阅读完成。
文 | 戴强 网易云信数据平台资深开发工程师
导语:数据在很多业务中都至关重要,对于网易云信,咱们通过数据来晋升服务并促成业务持续增长。借助于服务监控平台的能力,咱们能够很直观的感触到线上服务的运行状况,本文将详细分析网易云信的服务监控平台具体是如何实现的。
引言
通常人类的恐怖都来源于对事实世界的未知。
现实生活中存在很多的不确定性,恐怖是因为咱们以后的认知无奈对其作出正当解释。例如这次的疫情的忽然暴发,人们对死亡的恐怖一直蔓延。世界存在很多的不确定性,什么是不确定性?假如须要对今天的股票指数是涨是跌作出判断,在没有任何数据作撑持的状况下,咱们只能像抛硬币一样都是百分之 50 的概率。在这种场景下,咱们做出的所有判断都是不可信的,并且会对本人的决定感到不安。
如果人们理解了所有波及某种行将产生的事件的因素,那么他们就能够准确地预测到这一事件;或者相同,如果产生了某个事件,那么就能够认为,它的产生是不可避免的,这便是拉普拉斯的信条(又名决定论)。
正如以上的实践所表白的意思,数据能够帮忙咱们指引方向,并且验证咱们的方向是否正确。同样,数据对于网易云信的倒退来说也至关重要,咱们须要通过数据来晋升咱们的服务,并促成业务持续增长。
网易云信是集网易 20 年 IM 以及音视频技术打造的 PaaS 服务产品,咱们始终致力于提供 稳固牢靠的通信服务,而如何保障稳固牢靠呢?
服务监控平台 就是其中重要的一环,其就相当于布加迪威龙上的仪表盘,汽车的时速是多少,油量是否足够,以后的转速是多少,这些在仪表盘上高深莫测,能够帮忙咱们做出判断:是不是还能够踩一点油门,必要的时候是不是该刹一下车。服务监控平台的指标和价值就在这里,它也就相当于网易云信这辆布加迪威龙的仪表盘,能够通知咱们以后的服务质量怎么样,是不是须要多加点“油”,是不是须要踩一下“油门”或者“刹车”,给咱们和客户提供更多的信息,帮忙咱们提供最优质的、最牢靠、最稳固的服务。
本文就来详细分析网易云信的服务监控平台具体是如何实现的,将从整体架构登程,简略介绍网易云信服务监控平台的框架,再仔细分析包含数据采集、数据预处理、监控告警、数据利用四个模块的实现。
零碎架构
当初网易云信的音视频数据根本都来源于客户端和服务端日志,所以整个数据的采集链路是其中十分重要的一环,决定了数据的有效性和时效性。
首先,咱们来看一下网易云信采集监控平台的整体架构,如下图:
采集监控平台整体架构次要分为数据采集、数据处理、数据利用、监控告警四局部,整个解决流程如下:
数据采集:
- 咱们次要的数据起源为业务 SDK 和应用服务器,这些数据能够通过 HTTP Api、Kafka 两种形式接入采集服务。
- 采集服务对数据进行简略校验和拆分,而后通过 Kafka 传输到数据荡涤服务。
- 数据处理:数据处理服务次要负责对接管到的数据进行解决而后发给上游服务应用。其中咱们提供了 JOSN 等简略的数据格式化能力,另外也提供了脚本解决模块,以反对更灵便更弱小的数据处理能力,该能力也使得咱们监控平台的数据处理能力更富多样性。
- 监控告警:监控告警模块对于咱们一开始提到的服务监控能力来说,是最重要的一环。咱们对于采集到的数据进行分维度聚合统计和剖析,应用丰盛的聚合算法、灵便多变的规定引擎来最终达到服务预警和问题定位的目标。
- 数据利用:荡涤后的数据能够间接写入时序数据库供问题排查平台应用,也能够通过 Kafka 接入 es、HDFS、流解决平台,最终供应用层应用。例如:品质服务平台、通用查问服务、问题排查平台等。
接下来咱们会对上述四个模块进行具体的剖析。
数据采集
数据采集是服务监控平台的入口,也是整个流程的第一步,下图是数据采集模块的架构图。
上文也有提到,为了便于用户接入,咱们提供了 HTTP API 和 Kafka 两个通道给业务方。
- HTTP API 多用于端侧或服务器中偏实时的数据上报场景,用以反对秒级的数据接入。
- Kafka 多用于高吞吐量、数据实时性要求不太高的场景。
- 数据过滤预处理模块,提前将一些非法数据进行过滤,并事后数据拆分等解决。
最初通过 Kafka 传输到数据处理服务,接下来就是数据处理阶段的介绍了。
数据处理
实现数据采集阶段后,即进入数据处理阶段,具体流程如下:
- 任务调度,次要负责数据处理线程的生命周期治理,从启动到敞开。
- 消费者,在获取数据后应用外部的队列进行解耦,从而达到横向扩大的能力以进步数据处理线程的并行度。
处理单元,能够依据须要设置并行度:
- 数据处理能力分成两种,通用规定和自定义脚本。通用规定就是简略的 JSON 转换、字段提取等,这些根本能够满足 80% 的需要,然而为了撑持相似多字段关联计算、正则表达式、多流关联解决等简单业务,咱们也提供了自定义脚本进行数据处理的能力。
- 维度表的应用次要是针对多数据流关联解决的场景,为了解决数据量和并发高的问题应用了本地 + 第三方缓存的计划。
- 时序数据库输入:时序数据库咱们应用的是 NTSDB,NTSDB 是网易云基于 influxdb 做的集群化计划,有高可用、高压缩比、高并发等特点。
数据处理完之后,接下来一个比拟重要的阶段就是监控告警。
监控告警
上面这张图简略展现了监控告警的流程:
监控告警阶段分为指标聚合模块以及告警模块。
指标聚合模块反对指定字段分组统计、灵便的聚合窗口工夫、数据过滤、细粒度的算子级别的数据过滤、数据提早最大工夫。最重要的是咱们反对了十分丰盛的聚合算子:累加、最小 / 最大值、firstValue/lastValue、平均数、记录数、去重计数、TP 系列(TP90/TP95/TP99)、环比、标准差等,同时还反对在第一次指标聚合后进行复合计算的能力(复合指标)。这些丰盛的算子为咱们实现更多灵便的监控规定提供了保障。
另外咱们将原有的一阶段聚合改成了两阶段聚合,为什么呢?因为在数据处理的过程中咱们常常会遇到的一个问题:数据热点问题导致的歪斜。所以这里咱们减少了预处理阶段,在这一阶段利用随机数进行打散,保证数据的平衡,而后预聚合的数据在第二阶段进行总的聚合解决。
告警模块和指标聚合模块从原有的一个模块拆分为两个,指标模块更多的关注如何做数据聚合,而不是和告警模块耦合在一起作为告警模块的一部分。而告警作为一个附加的性能,只须要依据接管到的数据,做一些告警的规定校验、频控校验、告警信息封装、对接音讯平台发送告警音讯,同时反对了外部 IM 平台、短信、电话等音讯通道,多样的音讯通道是为了能够第一工夫感知到问题的呈现。
数据利用
数据利用现有的平台:数据可视化、品质服务平台、ELK 日志平台、在线离线剖析等。上面,咱们针对每个平台简略介绍一下。
数据可视化
数据可视化这部分,咱们和大部分公司一样应用 Grafana 来实现。须要做可视化的数据能够先同步到 NTSDB 中,而后再应用 NTSDB 作为数据制作图表和大盘。另外对于不反对的图表,咱们针对 Grafana 做了二次开发以反对更多的可视化需要。
下图皆是针对音视频问题排查场景做的一些仪表盘:
品质服务平台
该平台旨在为客户提供直观、高效、全面、实时的问题定位排查工具,客户在收到问题反馈之时,能够第一工夫发现、定位问题,并最终反馈用户和进行优化。
ELK 日志平台
ELK 技术栈蕴含 Logstash、ES、Kibana 三个组件,是一整套日志采集、存储、查问及可视化的解决方案。以后在咱们的体系中,更多的用于具体日志的查问。
在线离线剖析
这里咱们应用 Kafka 作为数据管道,借助 Flink 平台对日志数据进行切分和归档。将这部分数据同步到离线数仓后,能够进行后续的数据挖掘剖析工作,同样这里也不扩大探讨。
结语
以上就是本文的全副介绍,剖析了网易云信服务监控平台的设计和实际,其中次要介绍了整个服务监控平台的零碎架构,并且针对数据采集、数据处理、监控告警、数据利用四个点做了一些论述。
网易云信的整个数据采集监控体系从 2020 年初上线至今,从原有的十几个采集工作增长到了 300 多个,100+ 的要害用户行为和零碎事件、300+ 的外围音视频指标,每日解决百万行的数据、T 级的数据量。整个平台的并发量、吞吐量都在一直地回升,这都得益于云信业务的一直增长,但也使得咱们对平台的稳定性和扩展性提出了更高的要求。将来,咱们将借助于平台的能力为客户们提供更加优质的服务。
作者介绍
戴强,网易云信数据平台资深开发工程师,始终从事数据平台相干工作,从 0 到 1 搭建了网易云信的实时和离线数仓体系,同时负责服务监控平台、数据利用平台、品质服务平台的设计开发工作。
更多技术干货,欢送关注【网易智企技术 +】微信公众号