运维咖啡吧

追求技术的道路上,我从不曾停下脚步

基于多云构建监控告警系统

之前有一个系列的文章来讲我们多云系统的设计与落地,多云系统实现了云上资源的统一管理,同时基于关联关系构建了清晰的资源拓扑,其中基于业务的资源拓扑应用最为广泛,也就是我们通常所属的服务树,许多的使用场景都依赖服务树来提供基础数据

如何保证多云系统提供的基础数据是准确的?其中一个非常有效的方式就是让上层应用强依赖多云系统数据,例如服务部署所获取的服务器列表来源于多云系统提供,那么要想服务部署没有问题的话就需要首先保证多云数据准确,再比如我们基于多云来做的监控告警系统基础资源数据全都来自于多云,还有后续一些列新的业务或服务都要基于多云提供的基础数据来实现,这篇文章重点介绍下基于多云的监控告警

之所以会基于多云来构建监控告警系统,是因为我们很大一部分资源监控是依赖云上监控告警的,这里所说的监控告警系统也不是通常理解的Zabbix、Prometheus之类的监控告警系统的构建,更多的应该是云上监控告警与我们多云系统的融合,多云系统的扩展功能

我们的监控告警系统主要用来实现基础资源的监控,同时整合多云资源、云上事件、云上告警等信息,以业务为维度构建可视化的监控大盘和告警大盘,提供资源和业务的可观测性,形成平台化的运维监控能力。主要包含三大核心功能,分别是资源图表、监控大盘和告警大盘

资源图表

资源图表主要是将资源的监控指标以图表的形式展示出来,便于观察指标的变化情况。指标数据本身来自于云上,所以指标的丰富程度跟准确度与云上无异。不同云厂商或者云资源类型的云上监控图表展示甚至是打开监控的路径都有不同,我们优化了图表的展示效果,所有资源的所有指标采用统一的样式进行展示,并对图表展示做出优化,重点资源监控图表优先展示,资源监控图表页面加载优化,指标数据并发请求,实测展示速度要比云上快很多

与多云服务树融合,无需配置,使用起来非常方便,想要查看某个项目下某种资源的性能变化情况,只需要切换到对应的项目查看服务树,点击资源列表的监控按钮即可查看,无需提前知道项目下的资源ID或名称再去云控制台中检索查看,体验顺畅且友好

监控大盘

监控大盘会以项目为维度,结合多云服务树,将相关资源、指标汇聚在大盘中便于查看,同时支持导出报表。监控大盘与云监控的Dashboard类似,但会与多云服务树深度融合,自动汇聚业务节点下所有实例的监控数据于同一图表中,同时可以将不同云厂商不同云账号不同资源类型的监控图表在一个页面内展示,配置更加简单,使用更加方便

一个项目下可以按照环境/用途等维度创建多个监控大盘,不同的监控大盘都可以选择项目下任意个数的关系节点,便于不同人不同时期关注不同的监控内容

一个监控大盘内可以包含多个不同云厂商下的资源节点,一个大盘内也可以包含多个不同账号下的资源节点,当然一个监控大盘内也可以包含多个不同资源类型的节点,并且一个监控大盘内的资源节点数量是没有限制的

节点添加起来也很简单,只需要填写显示名称,选择云厂商、资源类型以及关系节点,确定展示顺序即可,其中关系节点就取自于多云服务树,选择某个节点后,会自动聚合这个节点下的所有资源于一个图表中,可以对比观察节点下资源监控变化,当节点下资源变更时也无需更新监控大盘的配置。同样的对于监控大盘的展示我们也做到了统一和优化,加载速度快,体验丝般顺滑

监控大盘还可导出报表,能够直观的看到项目下各服务角色的配置、数量以及一段时间内的监控汇总数据,更为重要的是会同时结合费用账单以月为维度输出资源费用情况,为资源缩减成本控制提供支持

告警大盘

告警大盘主要用来实现告警信息统一展示和检索,整体把控项目的运行状态。对于告警比较重要的是通知,保证通知及时有效,并能第一时间作出反应,告警大盘将不同云厂商不同云账号下的告警信息汇聚到一起统一展示,并与多云相结合,可以快速定位资源所属项目及服务,加速问题的处理

告警管理还纳入了告警策略管理和事件管理,可以将策略和事件分配到项目,细化权限,并对策略进行状态变更等

由此基于多云构建的监控告警系统初步完成