开发者社区> 李俊涛> 正文

基于阿里云云监控的企业级监控平台构建

简介: 随着阿里云云监控产品的日渐完善,基于云计算的IT资产监控越来越方便,结合已经开放的API和外部回调接口等功能,企业级客户的监控系统可以变得更加强大。传统需要在主机上装agent的监控体系,例如zabbix以及类似其他的商业软件都不再适用云IT资产,主要体现在: 除了ECS可以继续安装agent以外,类似云RDS,云Redis,MaxCompute等云产品根本没有提供这种agent数据采集的入口。
+关注继续查看

随着阿里云云监控产品的日渐完善,基于云计算的IT资产监控越来越方便,结合已经开放的API和外部回调接口等功能,企业级客户的监控系统可以变得更加强大。传统需要在主机上装agent的监控体系,例如zabbix以及类似其他的商业软件都不再适用云IT资产,主要体现在:

  1. 除了ECS可以继续安装agent以外,类似云RDS,云Redis,MaxCompute等云产品根本没有提供这种agent数据采集的入口。
  2. 云平台的系统事件,例如RDS主机发生了主备切换这些事件,只有云平台本身才会感知,除非集成云平台本身的API,任何外部监控体系没法探测到这些事件。

所以当企业客户的IT资产逐步云化的过程中,至少Iaas层面的监控体系必须依赖于云平台本身的监控体系来做,这不仅仅限于阿里云的云监控,AWS用户中CloudWatch也一样成为了第一选择,大量的商业监控Saas工具围绕云平台本身的监控数据来做,这也是阿里云喊着“被集成”的最好案例。 本文结合阿里云云监控现有功能,以RDS for MySQL为例,列出了在控制台,API以及和自有监控体系对接的最佳实践。

1.基础实践

云监控中RDS 监控频率设置

云监控关于RDS的监控频率分为三档: 5 秒/次 60 秒/次 300 秒/次

· 基础版及内存小于8G的数据库实例不支持5 秒/次的采集频率。

· 默认为5分钟一次

· 修改为1分钟一次

RDS开通1分钟监控频率的实例检测

image001

配置告警规则

NO. 规则名称 报警规则 备注
1 连接数使用率 连接数使用率 >=80% Warn 连续3次就报警
2 只读实例延迟 只读实例延迟 >=5 秒 Warn 连续3次就报警 基础版除外,配置了也不生效
3 IOPS使用率 IOPS使用率 >=80% Warn 连续3次就报警
4 CPU使用率 CPU使用率 >=80% Warn 连续3次就报警
5 磁盘使用率 磁盘使用率 >=80% Warn 连续3次就报警

RDS 初始化告警规则明细

image002

这样报警规则生成后,监控和报警就会按照正常的设定进入到报警阶段,监控数据会在报警规则触发后发送到相应的告警联系人。

2.进阶实践

结合云监控中应用分组,告警模板,告警联系人等功能可以做更多高阶功能的使用,如下图所示

image003

步骤概览

  1. 新增告警联系人中的电话和邮件需要验证码,钉钉机器人可以不配置;
  2. 默认会有一个报警联系组:组名为阿里云主账号;联系人为主账号中填写的人和电话;
  3. 创建应用分组时可以将相同业务的云资源分配到一个组,例如生产环境、测试环境、开发环境;
  4. 当服务器和其他云产品实例非常多时,首先建议按照业务视角为资源创建不同的应用分组,然后通过应用分组来批量管理资源;
  5. 目前告警模板中支持“同比环比”的一些方法;
  6. 报警模板说明

ü 报警模板只能和应用分组配合使用,即报警模板只能使用在资源范围为应用分组的报警规则上。

ü 每个云账号最多能创建100个模板。

ü 每个模板最多包含30个监控项。

ü 报警模板只是创建报警规则的快捷方式,报警模板和报警规则不是一一绑定的关系,即修改报警模板后通过报警模板生成的规则不会被修改。

ü 如果需要批量修改分组的规则,需要将修改后的模板重新应用到分组上。

添加告警联系人

image004

配置告警组

image005

image006

创建应用分组

image007

image008

包含了“事件告警”,针对RDS,有如下RDS系统事件:

事件名称 事件含义 事件状态 事件等级
Instance_Failover 实例主备切换 Executed WARN
Instance_Failure_Start 实例故障开始 Executing CRITICAL
Instance_Failure_End 实例故障结束 Executed CRITICAL

image009

配置报警模板

可以在一个模板上添加多个云产品的告警规则;此处我选择分产品创建模板,方便各云产品负责人维护更新对应模板。

image010

image011
image012

告警表达式包括以下:
image013
image014

除了普通的数值对比外,增加了“同比环比”。

image015
image016
image017
image018
image019

3.API生成模板实践

上述实践中的实施都是基于控制台的手动配置,结合云监控已有的API借口,可以把这些配置规则全部脚本化,方便批量部署,结构如下

image020

No. Action CMS API URL
1 添加告警联系人 PutContact 创建或者修改报警联系人信息
2 配置告警组 PutContactGroup 创建或者修改报警联系人组
3 创建应用分组 CreateMonitorGroup 创建一个应用分组
CreateMonitorGroupInstances 添加资源到应用分组
4 配置报警模板 CreateMetricRuleTemplate 创建报警规则模板
5 应用模板生效 ApplyMetricRuleTemplate 将报警模板应用到分组,生成报警规则

需要提前准备的数据清单:

报警联系人

ContactName String 报警联系人姓名
Describe String 描述
Channels.SMS String 电话
Channels.Mail String Email地址
Channels.DingWebHook String 钉钉机器人Webhook
Channels.AliIM String 旺旺联系方式

示范数据 展开源码

{
    "Contacts": {
        "Contact": [
            {
                "Channels": {
                    "DingWebHook": "https://oapi.dingtalk.com/robot/send?access_token=***",
                    "Mail": "test1@cloudcare.cn",
                    "SMS": "186****3996"
                },
                "Name": "test1",
                "Desc": "test1"
            },
            {
                "Channels": {
                    "DingWebHook": "https://oapi.dingtalk.com/robot/send?access_token=98d8ca511f903cdce23c6ba77559e5ef4316a621b19e7698f572f551ae102ffd",
                    "Mail": "test2@cloudcare.cn",
                    "SMS": "186****3090"
                },
                "Name": "test2",
                "Desc": "test2"
            }
        ]
    }
}

如果API添加联系人时,同时添加联系人的邮件或手机,阿里会发送邮件或短信给联系人进行确认。此处与控制台配置的验证方式不同。

image021

报警联系人组

ContactGroupName String 报警联系组的名称。
ContactNames.N RepeatList 报警联系人名称。N的取值范围为 1~100。
Describe String 报警联系组描述信息。

示范数据 展开源码

{
    "ContactGroupName": "Test",
    "Describe": "测试",
    "ContactNames": ["test1", "test2"]
}

应用分组名

GroupName String 应用分组名称。
ContactGroups String 报警联系人组。应用分组的报警通知会发送给此处指定的报警联系人组

示范数据 展开源码

{
    "GroupName": "生产A",
    "ContactGroups": "TestGroup,云账号报警联系人"
}

应用分组资源明细

GroupId Long 应用分组ID。
Instances.N.Category String 资源实例所属的云产品名或者产品的规格 目前支持的产品有: 展开源码 ECS(包括阿里云和非阿里云主机),`RDS(云数据库RDS版),ADS(分析型数据库),SLB(负载均衡),VPC(弹性IP),APIGATEWAY(API网关),CDN,CS(容器服务Swarm版),DCDN(全站加速),DDOS,EIP(弹性公网IP),ELASTICSEARCH,EMR(E-MapReduce),ESS(弹性伸缩),HBASE,IOT_EDGE(iot边缘计算),K8S_POD(k8s pod),KVSTORE_SHARDING(Redis集群版),KVSTORE_SPLITRW(Redis读写分离版),KVSTORE_STANDARD(Redis标准版),MEMCACHE,MNS(消息服务),MONGODB(MongoDB 副本实例),MONGODB_CLUSTER(MongoDB集群版本),MONGODB_SHARDING(MongoDB分片集群),MQ_TOPIC(消息服务TOPIC),OCS(旧版云数据库Memcache),OPENSEARCH(开放搜索),OSS(对象存储OSS),POLARDB,PETADATA(HybridDB for MySQL),SCDN(安全加速),SHAREBANDWIDTHPACKAGES(共享带宽包),SLS(日志服务),`VPN(VPN网关)。
Instances.N.InstanceId String 资源实例ID。
Instances.N.InstanceName String 实例名称。
Instances.N.RegionId String 实例所在的RegionId,例如cn-hangzhou。

示范数据 展开源码

{
        "Resource": [
            {
                "Category": "ECS",
                "InstanceId": "i-uf669udf3ficd8huv1q3",
                "RegionId": "cn-shanghai",
                "InstanceName": "财务人工管理系统FMS"
            },
            {
                "Category": "RDS",
                "InstanceId": "rm-uf66dbs496flz4118",
                "RegionId": "cn-shanghai",
            }
        ]
}

报警规则

报警规则 example 展开源码

{
    "Resource": {
        "Name": "生产数据库模版v.19.05.28.01",
        "Description": "针对生产环境的数据库自定义的监控模板",
        "AlertTemplates": {
            "AlertTemplate": [
                {
                    "Category": "rds",
                    "MetricName": "ConnectionUsage",
                    "Namespace": "acs_rds_dashboard",
                    "Selector": {},
                    "RuleName": "连接数使用率",
                    "Escalations": {
                        "Critical": {
                            "Statistics": "Average",
                            "Threshold": "90",
                            "Times": 3,
                            "ComparisonOperator": "GreaterThanOrEqualToThreshold"
                        },
                        "Info": {
                            "Statistics": "Average",
                            "Threshold": "70",
                            "Times": 3,
                            "ComparisonOperator": "GreaterThanOrEqualToThreshold"
                        },
                        "Warn": {
                            "Statistics": "Average",
                            "Threshold": "80",
                            "Times": 3,
                            "ComparisonOperator": "GreaterThanOrEqualToThreshold"
                        }
                    }
                },
                {
                    "Category": "rds",
                    "MetricName": "DiskUsage",
                    "Namespace": "acs_rds_dashboard",
                    "Selector": {},
                    "RuleName": "磁盘使用率",
                    "Escalations": {
                        "Critical": {
                            "Statistics": "Average",
                            "Threshold": "90",
                            "Times": 3,
                            "ComparisonOperator": "GreaterThanOrEqualToThreshold"
                        },
                        "Info": {
                            "Statistics": "Average",
                            "Threshold": "70",
                            "Times": 3,
                            "ComparisonOperator": "GreaterThanOrEqualToThreshold"
                        },
                        "Warn": {
                            "Statistics": "Average",
                            "Threshold": "80",
                            "Times": 3,
                            "ComparisonOperator": "GreaterThanOrEqualToThreshold"
                        }
                    }
                }
            ]
        }
    }
}

应用模板生效

GroupId Long 应用分组ID。
TemplateIds String 报警模板的ID。
ApplyMode String o GROUP_INSTANCE_FIRST:实例分组优先, 即应用报警模板的时候,以分组实例优先,如果分组中不存在这种实例则忽略模板中的规则。 o ALARM_TEMPLATE_FIRST:模板实例优先,即应用报警模板的时候,不管分组中是否存在这种实例,都创建出这种规则。
EnableEndTime Long 报警生效的结束时间周期, 选值为00-23,表示00:59 到23:59。
EnableStartTime Long 报警生效的起始时间周期, 选值为00-23,表示00:00 到23:00。
SilenceTime Long 通道沉默周期,单位为秒。默认86400秒(1天)。监控数据持续超过报警规则阈值时,每个沉默周期内只发送1次报警通知。
Webhook String 报警发生时会回调指定的URL地址。向URL发送POST请求。

示范数据 展开源码

{
    "SilenceTime": 86400,
    "EnableStartTime": 00,
    "EnableEndTime": 23,
    "ApplyMode": "GROUP_INSTANCE_FIRST",
    "Webhook": "https://oapi.dingtalk.com/robot/send?access_token=98d8ca511f903cdce23c6ba77559e5ef4316a621b19e7698f572f551ae102ffd",
    "TemplateIds": "139182,139185",
    "GroupId": 5217650
}
 
 

报警结果验证

返回数据格式 展开源码

{
    "Resource": {
        "AlertResults": [
            {
                "RuleId": "applyTemplate0fb2127a-98df-4cf6-b563-22f19d16ced6",
                "Success": true,
                "RuleName": "连接数使用率",
                "Code": 200,
                "GroupId": 5217650
            },
            
            {
                "RuleId": "applyTemplate06d81824-e95d-4d94-839a-a9d32f35e8a8",
                "Success": true,
                "RuleName": "CPU使用率",
                "Code": 200,
                "GroupId": 5217650
            }
        ],
        "GroupId": 5217650
    },
    "RequestId": "1E754CA9-932C-4859-B814-69E7460508BA",
    "Success": true,
    "Code": 200
}

以上是基于RDS的阿里云云监控最佳实践,其他阿里云产品监控体系都可以围绕云监控展开。此外,云监控的数据展现和告警可以和企业自有的IT监控体系做深度结合,把中间件,日志,容器等对象的监控指标和图形展示结合,构建完整统一的监控平台。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于阿里云 CloudMonitor云监控自定义监控大盘对 EMR 自定义监控实践
本文旨在分享 EMR 平台大数据服务基于阿里云 CloudMonitor 的监控实践,给客户提供除了 EMR 平台默认监控以外,自建监控方式,适用于统一多个阿里云服务的监控监控场景。
111 0
云监控-主机监控功能介绍|学习笔记
快速学习云监控-主机监控功能介绍
44 0
云监控-创建 Dashboard 监控大盘|学习笔记
快速学习云监控-创建 Dashboard 监控大盘
51 0
云监控-创建Dashboard监控大盘|学习笔记
快速学习云监控-创建Dashboard监控大盘
38 0
云监控中通过HTTP上报事件监控数据
云监控中通过HTTP上报事件监控数据
86 0
使用云监控进行跨账号监控
前言云监控的跨账号监控依赖资源目录RD(Resource Directory),RD的具体操作见其官方文档。需要前当前登录的账号是RD的主账号MA(Master Account)或者是云监控的委派管理员DA(DelegatedAdminAccount)才能进行跨账号监控数据管理。主账号MA无需进行任何设置,只需登陆云监控的控制台正常操作就行。但如果需要某个成员账号也能在云监控上管理其他账号的数据,
2869 0
云监控 -- 站点监控
站点监控是一款定位于互联网网络探测的监控产品,主要用于通过遍布全国的互联网终端节点,发送模拟真实用户访问的探测请求,监控全国各省市运营商网络终端用户到您服务站点的访问情况
309 0
云监控 --- 自定义监控
自定义监控为您提供了自定义监控项和报警规则的功能,您可以通过上报监控数据接口,将自己关心的业务指标上报至云监控,并在云监控上添加监控图标和设置报警规则,对于故障指标发送报警通知,便于您及时处理故障,保障业务的正常运行。
268 0
使用云监控来监控线下IDC(及其它云)的Mongodb,Redis,Mysql等中间件
背景当前很多用户的服务部署在混合环境中,比如同时使用多个云厂商,或者云加线下IDC等。而对于线下IDC的监控主要是使用开源的系统来自建。带来的问题就是需要花费较大精力来维护自建监控系统并且和云上的监控数据也无法打通。针对这种混合云环境,云监控推出了企业版监控服务,可以实现在阿里云上对下线IDC或其它云服务上部署的中间件进行监控。线下IDC中间件监控实现在云监控上对下线IDC的中间件进行监控,主要实
187 0
+关注
李俊涛
上海驻云科技,技术与服务中心负责人,参与实施了近白家中大型企业IT云化的架构设计,迁移实施,托管服务,对企业云化后的技术服务体系有丰富实战经验与深入理解。
文章
问答
来源圈子
更多
阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖阿里云 MVP 奖项为我们提供了这样一个机会,向杰出的意见领袖表示感谢,更希望通过 MVP 将开发者的声音反映到我们的技术路线图上。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
Elastic与阿里云合作宣传信息白皮书
立即下载
阿里云&信通院《Serverless数据库技术研究报告》
立即下载
降本增效,阿里云数据治理Workshop上海站
立即下载