在这个系列的课程中一直在想都包括哪些云服务,如果挑选7项肯定包含云服务器、负载均衡、对象存储、云数据库。安全中的产品肯定要选一项,WAF和DDoS都经常见到,实验环境更简单的是WAF,所以就选择WAF了。除此之外还选择了使用云服务中非常重要的IAM,最后一项服务选哪个一直在纠结,最后还是选择了云监控,能够对云平台中各项资源和服务的运行状况了如指掌。

进行业务架构设计时需要考虑对所有云资源的监控与告警,没有监控就无法感知资源状态、业务运行状况,没有告警就无法及时响应处理。云主机可能会宕机、云硬盘可能会损坏、应用系统可能会遭受网络攻击,没有合理的监控告警,就如蒙眼行路。除了对云资源进行监控,还要对系统平台产生的事件、用户应用数据、用户自行采集收集的数据等进行监控。本节仅介绍云平台提供的标准监控告警能力。

1. 监控告警概述

        云平台提供监控、告警、Dashboard等功能,如图9-2所示。云资源的监控包括云主机、云硬盘、云数据库、网络等资源,云监控收集云资源中的各类数据(具体监控项见云服务商官方文档,并且云平台承诺不会查看和收集用户未授权的数据),在产品详情页面及云平台Dashboard中进行展示。除了对云资源按照固定监控项进行监控,用户还可以通过API、CLI等方式自行收集数据,并按照云平台约定的消息格式推送给云平台,实现自定义监控,自定义监控的数据同样可以整合到Dashboard中。

        除了对云资源的监控、告警,云平台还提供了多种资源监控项的告警模板,如云主机CPU超过80%、弹性IP出口带宽连续三次检测超过10Mbps。选用云平台提供的告警模板或自定义监控模板对云资源监控数据进行匹配,对符合告警条件的进行告警通知,告警通知包括个人电话、短信、邮件等方式,也包括触发自动伸缩、推送事件,之后再触发一系列扩缩容或函数处理等。

7天7项云服务 | 07-云监控 Cloud Monitoring_云平台

图9-2  云监控告警全景图

2. 资源监控

        基本上每个云产品都提供监控功能,监控内容非常丰富,云主机的监控指标如下表所示。其他产品的监控还有EIP的出口带宽、云数据库的磁盘使用率、CDN的流量等。只有掌握这些数据才能及时对一些资源故障情况及时发现、及时响应处理。如果底层的资源出现故障,会对上层架构设计的健壮性产生挑战,为了避免对业务和架构设计产生影响,需要及时监控资源、发现异常情况。监控会以图表的形式进行展示,EIP监控截图如图所示。

7天7项云服务 | 07-云监控 Cloud Monitoring_云平台_02

表  云主机的监控指标

7天7项云服务 | 07-云监控 Cloud Monitoring_云平台_03

图9-3  EIP监控截图


3. 事件监控

        事件监控是对云平台或资源产生的一些通知或操作类事件的监控,事件监控是指对这些事件进行收集和告警,事件监控如图9-4所示,事件监控包括以下几种类型。


l 操作类事件:进行云资源操作时会产生一些操作类的事件,如创建云主机、云硬盘挂载成功、EIP绑定到云主机等。


l 系统自动触发类事件:网络带宽达到购买上限、迁移失败。


l 云平台类事件:云平台故障、网络抖动、服务计费变更通知、新品功能即将下线、产品API版本升级等。

7天7项云服务 | 07-云监控 Cloud Monitoring_云服务_04

 图9-4  事件监控

4. 自定义监控

        云平台监控数据仅仅收集授权采集和上传的数据,对于用户业务数据、非授权的数据等,云平台无权收集和使用,用户可通过自定义监控上传需要统一监控和统一展示的数据,这也是对云平台提供的监控的补充。自定义监控支持用户通过CLI、API的方式来上传数据到云平台中。云平台还支持自定义Dashboard,自行选择需要展示的云监控、自定义监控数据,通过折线图、饼图、条形图、仪表盘、热力图、数字、表格等形式将收集到的自定义监控数据展现出来。自定义监控数据格式如表9-5所示,通过API上传示例的请求如下。



POST https://{云监控的终端节点}/V1.0/{project_id}/metric-data


7天7项云服务 | 07-云监控 Cloud Monitoring_云服务_05

表  自定义监控数据格式

5. 告警通知

        监控服务负责按照各类监控模板来检测和发现云资源指标的异常数据,并通过告警消息、回调函数等方式进行告警通知和响应,云资源事件告警如图9-5所示。先了解一下几个核心概念。

  • 告警策略

        触发告警的条件集合,要限定在不同的云资源的监控指标中,如云主机的CPU的监控条件。云主机的监控指标“CPU利用率”在“统计粒度1分钟”“>”“80%”“持续5个数据点”的条件(if)下,将会每5分钟产生一次告警。

  • 告警通知组

        告警通知人的邮件、短信、电话等方式的组合,如为系统定义普通告警通知组、紧急告警通知组、运维团队通知组、运维总监通知组、回调函数自动处理通知组等。

  • 告警通知模板

        告警通知方式的集合,最基础的告警方式有邮件、短信、回调函数,不同云服务商还支持电话告警、钉钉、微信接收告警信息等。

7天7项云服务 | 07-云监控 Cloud Monitoring_云服务_06 

图9-5  云资源事件告警



最佳实践

不同事件类型和紧急程度选择不同的告警组和告警方式,如根据事件的严重程度可分为紧急、严重、中度、低度、通知等级别,不同级别的告警选择不同的接收人、不同的告警方式


        云平台通过回调函数进行告警,可以触发程序实现自动运维,如重启云主机、增加网络带宽、触发数据备份等。回调函数可以是用户在云主机中运行的程序,也可以通过Serverless函数计算的方式进行运维操作。云平台通过回调函数进行告警的消息格式参见以下内容,用户自行接收消息并进行处理。

        通过回调函数进行告警的系统消息:



{
SessionID: "xxxxxxxxxxxxxxxxxxxxxxx",
Region: " cn-north-03",
ResourceType: "uhost",
ResourceId: "uhost-xxxx",
MetricName: "MemUsage",
AlarmTime: AT,
RecoveryTime : RT
}



注意

告警时间AlarmTime不为零且为正常时间戳则为告警消息,恢复时间RecoveryTime不为零且为正常时间戳则为事件恢复正常的消息,这两者不会同为零

6. 延伸思考

  • 有了对资源和服务的云监控,该如何对部署在云平台中的应用进行监控呢?
  • 告警通知到相关人员是非常重要的,但是响应相对较慢,如何对告警进行自动化处理呢?

7. 动手实验

  • 选择一个云平台,创建对云主机/云服务器的监控,配置界面进行截图;
  • 使用stress工具模拟云主机/云服务器CPU跑满的情况,在监控到信息页面进行截图。