编者按随着互联网业务的迅速发展,用户对系统的要求也越来越高,而做好监控为系统保驾护航,能有效提高系统的可靠性、可用性及用户体验。监控系统是整个运维环节乃至整个项目及产品生命周期中最重要的一环。百分点大数据技术团队基于大数据平台项目,完成了百亿流量、约+台服务器集群规模的大数据平台服务的监控,沉淀了一套适合自身业务和技术特点的监控架构设计思路、设计方法和落地方案。本文主要从监控系统整体设计和技术方案落地两大部分阐述了大数据监控平台的建设过程,旨在帮助大家了解监控系统设计思路,对于监控系统建设提供专业指导。
一、整体设计
在整体监控设计中,百分点大数据团队采用“去中心化”、“服务透明化”的设计思路,同时具备极强的扩展能力、自动化能力和高可靠性设计思路。
去中心化设计:由于要同时监控18个异地的数据中心,开始百分点大数据团队考虑过18个中心各自监控,但是整体性差、不直观且维护成本高。综合考虑了链路带宽、监控工具性能和数据量多维度指标,百分点大数据团队决定只在一个主中心建立从监控数据采集到数据可视化的能力,其它中心只是监控数据的输送者,最终形成“1Server+18Slaves”覆盖18个数据中心的监控框架。
服务透明化设计:通过将每个组件的存储、处理、查询能力标准量化,保证稳定可控。具体来说,对每个组件容量、每项性能指标阈值进行设计,并将组件的能力指标和当前的状态以可视化的形式展现,通过标准值建立预警机制和对应处理措施,过程对于用户是无感知的。
扩展及自动化能力设计:接入一个数据中心的监控数据并完成监控指标的调试,在0.5天即可完成,而且此设计能够无缝集成多个数据中心的监控数据。
1.1监控设计方法
评价一个监控系统的好坏最重要三要素是:监控粒度、监控指标完整性、监控实时性,从系统分层体系可以把监控系统分为三个层次:
业务层:业务系统本质目的是为了达成业务目标,因此监控业务系统是否正常最有效的方式是从数据上监控业务目标是否达成。对业务运营数据进行监控,可及时发现程序bug或业务逻辑设计缺陷,比如数据趋势、流量大小等。业务系统的多样性决定了应由各个业务系统实现监控指标开发。
平台层:对应用的整体运行状况进行了解、把控,如果将应用当成黑盒子,开发和运维就无从知晓应用当前状态,不能及时发现潜在故障。应用监控不应局限于业务系统,还包括各种中间件和计算引擎,如ClickHouse、ElasticSearch、redis、zookeeper、kafka等。常用监控数据:JVM堆内存、GC、CPU使用率、线程数、TPS、吞吐量等,一般通过抽象出的统一指标收集组件,收集应用级指标。
系统层:实时掌握服务器工作状态,留意性能、内存消耗、容量和整体系统健康状态,保证服务器稳定运行。监控指标:内存、磁盘、CPU、网络流量、系统进程等系统级性能指标。
在重要监控指标项章节,我们将详细介绍每一层级组件的监控指标含义和阈值等。
1.2系统设计
工欲善其事必先利其器,根据对一些监控产品的调研以及对监控的分层介绍、所需解决的问题,可以发现监控系统从收集到分析的流程架构:采集-存储-分析-展示-告警。
数据采集:通过SNMP、Agent、ICMP、SSH、IPMI等协议对系统进行数据采集。
数据存储:主要存储在MySQL上,也可以存储在其他数据库服务。
数据分析:当事后需要复盘分析故障时,监控系统能给我们提供图形和时间等相关信息,方面确定故障所在。
数据展示:Web界面展示(移动APP、java_php开发一个web界面也可以)。
监控报警:电话报警、邮件报警、