阿里云监控体系现状概览

  • 杨赛

2014 年 10 月 14 日

话题:云计算DevOps阿里云

本文根据 InfoQ 中文站跟阿里云产品技术部产品总监马劲的在 2014 年 10 月初的一次电话交流整理而成,褚霸对本采访内容亦有所贡献。在本次沟通中,马劲对阿里云监控体系的现状进行了简单介绍,涉及到监控的覆盖面、监控粒度、故障识别、OpenAPI 的开放进度等方面。

嘉宾简介

马劲,花名竹蜓,来自阿里云产品技术部,是阿里云四大主题(云服务器,存储和多媒体、数据平台、中间件)的产品总监之一,负责阿里云所有中间件产品管理,目前负责管理的产品有 OCS(缓存)、MQS(消息队列)、ACE(云引擎)、ESS(弹性扩展)、PTS(性能测试)、Open Search(开放搜索)、ONS(开放消息服务)、云监控。竹蜓之前在 IBM 有 13 年工作经历,曾经担任云计算软件全球产品总监、大中华区软件 VIP 客户服务总监、大中华区软件培训负责人、攻城狮、程序猿等多个职位。

背景概述

监控体系是云计算基础架构最重要的组成部分之一。阿里云监控体系有两个视角:运维自己的集群监控体系,由技术保障部主导;以及用户视角的监控产品(如云监控服务),由产品技术部主导。运维的工作着眼于掌握每个服务的可用性、可靠性数据,提升发现问题解决问题的速度;客户的需求则是可以方便的看到自己阿里云资源的状态,包括资源的稳定情况和资源消耗情况等,以及客户基于阿里云的应用的状态,例如应用是否可用,性能如何。

当然,无论是何种角度的监控,底层基础架构是共享的。

过去一年主要完成的相关工作包括:

  • 为阿里云的各个产品逐步建立全链路监控,完成对所有服务各个模块端到端的数据采集(运维视角)
  • 在 2014 年 4 月开始“云监控”产品的公测,目前包含站点监控、ECS 监控以及自定义监控。ECS 的 CPU、内存、IO、存储等资源的状态,现在所有人都可以通过 API 项获取(用户视角)
  • RDS、SLB 在“云监控”上的接入正在实现当中(用户视角)

RDS 的监控

褚霸:RDS 全链路监控现在基本都做完了。RDS 较早做到全链路监控,是因为用户对数据库的 QPS 和 RT 变化非常敏感,倒逼着我们对系统更深入把控。

这就要求我们能够从网络(交换机)、操作系统、LVS、中间层、数据库整个链路能够从用户的视角收集到详尽的数据,通过流计算平台聚合、对比来看到异常,先于用户发现变坏的趋势,在更短的时间内做出响应。

全链路是个麻绳,需要整个链条上的每个部件都暴露出足够多的信息(特别是用户触发的行为动作),透过这个麻绳串起来。比如说 RDS 中间层统计数据在内存中按照树状组织的,基本上所有的内部模块都有详细的运行状态,日志和诊断代码在中间层中占比达到 30%。这些状态都在内存中,抓取统计数据的代价是恒定的,精细到每个用户的链接,再聚合成用户级别,主机级别,集群级别在监控系统界面上关联展现,指标超过 150 个,基本可以做到白盒,对系统的运行了如指掌。

监控粒度

ECS 上的 CPU 争抢情况已经按秒级采集数据,而对于 IO 访问的访问请求监控是更细粒度,统计到每个 IO 访问的响应延时。

监控的目的提供稳定的服务,在出了问题以后能尽快处置,即使做到十毫秒级,如果还是基于事件,问题报警,也是事后诸葛亮。监控希望能做到事前分析与预测,所谓后发先至,避免发生影响服务的事件,这本身是一个 IT 数据的大数据应用的课题,例如我们正在分析 VM 的 CPU 消耗周期变化尽可能把 CPU 密集的 VM 均匀分布到不同的物理机器上,同时正在开发动态热点迁移技术进一步提高用户体验。

做到秒级不是目标,做到主动预测、主动干预化解问题,避免服务对外不可用,才是我们的目标。

故障预测

基于全链路的监控与分析平台,我们对每一次的故障进行 review,将故障原因的相关指征提取出来,形成预警方法。有些故障是由软件更新的 bug 触发,不过 bug 触发的问题如果能够提取为指征,也可以回归到预警系统。另外,通过异常分析也可能找出可能未知的问题,报警让人来分析。

全链路监控与分析平台现在在 RDS 上得到应用已经取得不错的效果,ECS、SLB 和 CDN 等正在应用该平台。

弹性计算服务

阿里云正在做 Elastic Scaling Service 弹性计算服务,原计划 8 月发布,但是觉得还达不到公测的质量水平标准,所以有所延迟,预计近期(10 月)会推出邀请测试。

第三方监控服务

其实公测阶段的云监控产品目前还不太完善。比如 ECS 实例监控,现在还需要客户手动下载安装 Agent,这对于 ECS 服务器数量多的客户是工作量很大的,可以做得更加自动化。

阿里云的云监控会提供更多服务,同时也欢迎第三方能够针对阿里云开发一些高级的监控。目前市场上已经有客户自己安装了第三方监控可以在阿里云上使用,包括商业监控软件和开源监控软件对阿里云资源的监控,也有客户自己订阅了监控 SaaS 服务来监控他们跑在阿里云上的应用,包括一些国外的 SaaS 监控(如 New Relic)。

阿里云的云监控提供 OpenAPI,目前已经在针对小部分可信用户进行内测。内测资格目前只有经过单独审批才能拿到,主要针对企业客户。因为 API 涉及到权限、流量等安全因素,所以这方面会非常谨慎的逐步公开,一方面要借助内测用户的尖锐批评来改进,减少 bug、提升用户体验,另一方面也需要把文档更加完善起来,具体的时间表尚未确定。

总结

阿里云是非常技术的产品,但归根结底是为了让客户用的爽,解决客户的问题。阿里云总裁菲青经常带阿里云的管理者去跟客户沟通,管理者也被鼓励尽量带着一线员工出去了解客户。现在每次阿里云发新的 feature 之前,产品经理都会先把 demo 发到客户群里,这样在上线之前就能收集到部分反馈。今年 9 月初,阿里云管理者大会上搞了“火线 24 小时”的活动,全员自由组了几十个队伍去研究客户工单,在 24 小时内针对工单内容设计解决方案,最后选拔出来的 8 支队伍提供的方案在大会上讲演之后立刻往下迭代,不需要立项、审批、排期。这样的活动还会不定期的搞下去,只要客户有问题,阿里云就有动力持续的努力解决。

做阿里云,技术上固然有很多挑战,但最大的挑战还是对客户的理解。因为业务是很丰富的,比如客户提一个要查看某一个监控项比如缓存命中率的需求,我技术上实现不难,但做出来的东西未必是客户想要的,客户可能查看数据主要的目的是找到应用出了什么问题,具体观察的时间,观察到以后如何处理。唯有真的去客户那里和客户交流,深入了解客户使用的场景,了解客户的痛点,才能做出真正满足客户需求的服务。

工单,论坛都是是很重要的产品改进输入,我们的产品经理和管理者会认真看工单,不断转化为产品改进。恳请大家把您的问题告诉我们,“向客户学习,陪伴客户成长”是我们的理念。

云计算DevOps阿里云