百亿级访问量的实时监控系统如何实现? - 黑龙江安防监控培训学校
【51CTO.com原创稿件】笔者自2016年加入WiFi万能钥匙,现任WiFi万能钥匙高级架构师,拥有10年互联网研发经验,喜欢折腾技术。主要专注于:分布式监控平台、调用链跟踪平台、统一日志平台、应用性能管理、稳定性保障体系建设等领域。
在本文中,笔者将与大家分享一下在实时监控领域的一些实战经验,介绍WiFi万能钥匙是如何构建APM端到端的全链路监控平台,从而实现提升故障发现率、缩短故障处理周期、减少用户投诉率、树立公司良好品牌形象等目标。
WiFi万能钥匙开发运维团队的困扰
始于盛大创新院的WiFi万能钥匙,截至到2016年底,我们总用户量已突破9亿、月活跃达5.2亿,用户分布在全球223个国家和地区,在全球可连接热点4亿,日均连接次数超过40亿次。
随着日活跃用户大规模的增长,WiFi万能钥匙各产品线服务端团队正进行着一场无硝烟的战争。越来越多的应用服务面临着流量激增、架构扩展、性能瓶颈等问题。为了应对并支撑业务的高速发展,我们迈入了SOA、Microservice、API Gateway等组件化及服务化的时代。
伴随着各系统微服务化的演进,服务数量、机器规模不断增长,线上环境也变得日益复杂,工程师们每天都会面临着诸多苦恼。例如:线上应用出现故障问题时无法第一时间感知;面对线上应用产生的海量日志,排查故障问题时一筹莫展;应用系统内部及系统间的调用链路产生故障问题时难以定位等等。
综上所述,线上应用的性能问题和异常错误已经成为困扰开发人员和运维人员最大的挑战,而排查这类问题往往需要几个小时甚至几天的时间,严重影响了效率和业务发展。WiFi万能钥匙亟需完善监控体系,帮助开发运维人员摆脱烦恼,提升应用性能。依据公司的产品形态及业务发展,我们发现监控体系需要解决一系列问题:
◆面对全球多地域海量用户的WiFi连接请求,如何保障用户连接体验?
◆如何通过全链路监控提升用户连接WiFi的成功率?
◆随着微服务大规模推广实施,钥WiFi万能钥匙产品服务端系统越来越复杂,线上故障的发现、定位、处理难度也随之增长,如何通过全链路监控提升故障处理速度?
◆移动出海已经进入深入化发展的下半场,全链路监控如何应对公司全球化的业务发展?
◆……
全链路监控
早期为了快速支撑业务发展,我们主要使用了开源的监控方案保障线上系统的稳定性:Cat、Zabbix,随着业务发展的需要,开源的解决方案已经不能满足我们的业务需求,我们迫切需要构建一套满足我们现状的全链路监控体系:
◆多维度监控(系统监控、业务监控、应用监控、日志搜索、调用链跟踪等)
◆多实例支撑(满足线上应用在单台物理机上部署多个应用实例场景需求等)
◆多语言支撑(满足各团队多开发语言场景的监控支撑,Go、C++、PHP等)
◆多机房支撑(满足国内外多个机房内应用的监控支撑,机房间数据同步等)
◆多渠道报警(满足多渠道报警支撑、内部系统对接,邮件、掌信、短信等)
◆调用链跟踪(满足应用内、应用间调用链跟踪需求,内部中间件升级改造等)
◆统一日志搜索(实现线上应用日志、Nginx日志等集中化日志搜索与管控等)
◆……
监控目标
从“应用”角度我们把监控体系划分为:应用外、应用内、应用间。如下图所示:
应用外:主要是从应用所处的运行时环境进行监控(硬件、网络、操作系统等)
应用内:主要从用户请求至应用内部的不同方面(JVM、URL、Method、SQL等)
应用间:主要是从分布式调用链跟踪的视角进行监控(依赖分析、容量规划等)
罗马监控体系的诞生
根据自身的实际需求,WiFi万能钥匙研发团队构建了罗马(Roma)监控体系。之所以将监控体系命名为罗马,原因在于:
1、罗马不是一天成炼的(线上监控目标相关指标需要逐步完善);
2、条条大路通罗马(罗马通过多种数据采集方式收集各监控目标的数据);
3、据神话记载特洛伊之战后部分特洛伊人的后代铸造了古代罗马帝国(一个故事的延续、一个新项目的诞生)。
一个完美的监控体系会涵盖IT领域内方方面面的监控目标,从目前国内外各互联网公司的监控发展来看,很多公司把不同的监控目标划分了不同的研发团队进行处理,但这样做会带来一些问题:人力资源浪费、系统重复建设、数据资产不统一、全链路监控实施困难。目前,各公司在监控领域采用的各解决方案,如下图所示:
正如图中所示,罗马监控体系希望能够汲取各方优秀的架构设计理念,融合不同的监控维度实现监控体系的“一体化”、“全链路”等。
高可用架构之道
面对每天40多亿次的WiFi连接请求,每次请求都会经历内部数十个微服务系统,每个微服务的监控维度又都会涉及应用外、应用内、应用间等多个监控指标,目前罗马监控体系每天需要处理近千亿次指标数据、近百TB日志数据。面对海量的监控数据罗马(Roma)如何应对处理?接下来,笔者带大家从系统架构设计的角度逐一进行剖析。
架构原则
一个监控系统对于接入使用方应用而言,需要满足如下图中所示的五点:
• 性能影响:对业务系统的性能影响最小化(CPU、Load、Memory、IO等)
• 低侵入性:方便业务系统接入使用(无需编码或极少编码即可实现系统接入)
• 无内部依赖:不依赖公司内部核心系统(避免被依赖系统故障导致相互依赖)
• 单元化部署:监控系统需要支撑单元化部署(支持多机房单元化部署)
• 数据集中化:监控数据集中化处理、分析、存储等(便于数据统计等)
整体架构
Roma系统架构如下图所示:
Roma架构中各个组件的功能职责、用途说明如下:
Roma整体架构中划分了不同的处理环节:数据采集、数据传输、数据同步、数据分析、数据存储、数据质量、数据展示等,数据流处理的不同阶段主要使用到的技术栈如下图所示:
百度收录查询:百亿级访问量的实时监控系统如何实现? - 黑龙江安防监控培训学校