通过open API迅速搭建基于应用分组+报警模板的基本监控体系

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 云监控的功能庞杂,涉及云产品众多, 对于企业用户来说,面对茫茫多的云上资源,建立监控体系时可能第一时间感到无从下手,本文将通过云监控的openAPI,利用 "应用分组" + "报警模板" 的功能,迅速为海量的资源搭建起基本的监控体系。

背景

云监控的功能庞杂,涉及云产品众多, 对于企业用户来说,面对茫茫多的云上资源,建立监控体系时可能第一时间感到无从下手,本文将通过云监控的openAPI,利用 "应用分组" + "报警模板" 的功能,迅速为海量的资源搭建起基本的监控体系。

前置条件

  1. 首先你需要有一个阿里云账号
  2. 准备好ak (access_key_id, access_key_secret)

    • image
    • 建议使用子账号,安全性更好。(参见RAM访问控制)
    • 使用子账号时确保已经授权了AliyunCloudMonitorFullAccess

开始搭建监控体系啦

1. 设置联系人和联系人组

手动通过云监控控制台创建联系人和联系人组,设置正确的邮件,手机信息以便接受报警通知。

image

假设联系人组为"ops_group"

String contactGroups = "ops_group";
logger.info("manually create contact groups on CMS console...");

2. 创建应用分组

应用分组是云监控下资源管理的一个逻辑分组概念,可以将感兴趣的资源放在同一个分组下集中管理。具体划分逻辑可以根据业务需求灵活指定,比如将某一个服务的所有依赖资源放到一个分组。

更多信息参见:

云监控推出应用分组,帮你在阿云上跨地域、跨产品从业务角度管理资源,提高运维效率!
动态应用分组发布,实现从云资源生产到监控报警配置的全自动化
快速入门->应用分组

2.1 创建一个空的应用分组

CreateMyGroupsRequest request0 = new CreateMyGroupsRequest();
request0.setAcceptFormat(FormatType.JSON);

request0.setGroupName("demo-app-group");
request0.setContactGroups(contactGroups);
CreateMyGroupsResponse response0 = client.getAcsResponse(request0);
long groupId = response0.getGroupId();
logger.info("application group created, groupId = {}", groupId);

2.2 设置自动匹配ECS实例,批量管理ECS资源。

云监控暂时只支持动态添加ECS实例到应用分组,可根据ECS实例的自定义名称,通过startWith, endWithcontains规则匹配,并结合andor的逻辑控制符来设定。后续会支持更多资源类型。

PutGroupDynamicRuleRequest request1 = new PutGroupDynamicRuleRequest();
request1.setGroupId(groupId);
request1.setGroupRuleArrayJson("["
    + "  {"
    + "    \"category\": \"ecs\","          // 暂时只支持ECS
    + "    \"filterRelation\": \"and\","    // 同时满足以下规则(或者使用or 来匹配以下任意规则)
    + "    \"filters\": ["
    + "      {"
    + "        \"function\": \"contains\","  // 额外还支持startWith, endWith
    + "        \"name\": \"hostName\","      // hostName代表ecs实例的自定义主机名称
    + "        \"value\": \"test\""          // 实际匹配的值,本例表示ecs主机名称中包含test的实例
    + "      }"
    + "    ]"
    + "  }"
    + "]");
client.getAcsResponse(request1);
logger.info("set dynamic rules for ECS instances");

2.3 添加ECS外的其他类型资源到应用分组

对于不支持动态添加到分组的资源类型,或者动态分组并不能满足需求,还可以显式的指定加入分组的资源。此方法适用于所有资源,前提是需要先通过调用各个云产品对应的接口,获取实例的instanceId, categoryreginId

AddMyGroupInstancesRequest request2 = new AddMyGroupInstancesRequest();
request2.setGroupId(groupId);
request2.setInstances("["
    + "  {"
    + "    \"instanceId\": \"<your_instance_id>\","    
    + "    \"category\": \"RDS\","                          // 资源类型,比如ECS, RDS, SLS, SLB, ...
    + "    \"regionId\": \"cn-qingdao\""                    // 资源所在的regionId
    + "  }"
    + "]");
client.getAcsResponse(request2);

至此,所有感兴趣的资源都可以被加入到分组中集中管理。

2.4 为应用分组设置子账号权限 (可选)

应用分组可以和子账号的授权体系结合,支持将某个子账号授权为指定应用分组的只读/读写权限,从而满足企业级客户的多样权限管理需求。

UpdateMyGroupMembersRequest request2 = new UpdateMyGroupMembersRequest();
request2.setGroupId(groupId);
// 授予子账号分组的管理员权限。
request2.setMasters("<sub_account_id_1>,<sub_account_id_2>");
// 授予子账号分组的只读权限。
request2.setReaders("<sub_account_id_3>,<sub_account_id_4>");

3. 创建报警模板

报警模板是预先定义好的一批报警规则,可以被批量应用到应用分组中,避免重复的创建大量相同报警规则。

更多信息参见:

用户指南 -> 报警服务
预设监控项参考

当前暂不支持通过openAPI创建报警模板,为了更好的理解报警规则,建议通过云监控控制台手动创建报警模板,毕竟对于同一类需求的报警规则,通过报警模板只需要创建一次就好了。入口如下:

image
image
image

记录下报警模板的id,假设id = "12345"

String templateIds = "12345";
logger.info("manually create alarm templates, and get template ids");

4. 应用报警模板到应用分组

应用分组 + 报警模板 可以解决大部分的监控需求,一次创建,反复使用。
良好的分组和报警模板配置管理可以极大的简化监控的配置和维护,建议在创建和使用时综合考虑自己的业务场景合理配置。

ApplyTemplateRequest request3 = new ApplyTemplateRequest();
request3.setGroupId(groupId);
request3.setTemplateIds(templateIds);            // 可以同时应用多个模板,用逗号分隔,e.g., "123,456"
request3.setApplyMode("ALARM_TEMPLATE_FIRST");   // 两种应用模式:  1) ALARM_TEMPLATE_FIRST代表模板优先,不管分组中是否有对应资源都会创建报警规则; 2) GROUP_INSTANCE_FIRST 代表分组实例优先,只会创建分组中存在对应资源的报警,如果不存在则不创建。
client.getAcsResponse(request3);
logger.info("apply templates to application groups");

5. 完成!

至此一个基本的监控体系就搭建完成了,资源被管理在一个应用分组中,报警规则通过模板应用到分组下的每个实例上,一旦有实例触发报警规则,报警就会通知给分组中设置的报警联系人组中的每一个联系人。

完整示例代码请参考:github

了解更多

上面示例只是一个最简单的场景,云监控的openAPI提供大量的参数满足各种不同的业务需求,具体api的使用请参见如下在线文档:

云监控openAPI 概览
Aliyun OpenAPI Explorer
云监控openAPI示例代码on Github

相关实践学习
RocketMQ监控/告警一站式搭建应用
RocketMQ监控/告警一站式搭建演示
目录
相关文章
|
2月前
|
缓存 JavaScript 算法
活用 Composition API 核心函数,打造卓越应用(下)
活用 Composition API 核心函数,打造卓越应用(下)
|
2月前
|
存储 JavaScript API
活用 Composition API 核心函数,打造卓越应用(上)
活用 Composition API 核心函数,打造卓越应用(上)
|
10天前
|
设计模式 Java API
Java 可扩展 API 设计:打造灵活的应用架构
【4月更文挑战第27天】设计可扩展的 API 是构建灵活、易于维护的应用程序架构的关键。Java 提供了丰富的工具和技术来实现这一目标,使开发者能够构建具有高度可扩展性的应用程序。
30 4
|
10天前
|
存储 缓存 安全
API在Visual Basic中的应用:连接外部服务与扩展功能
【4月更文挑战第27天】本文探讨了在Visual Basic中使用API连接外部服务和扩展功能的方法,涵盖了API的基本概念、种类及如何使用本地和Web API。通过DllImport调用本地API,利用HttpClient和WebClient与Web API交互,同时强调了第三方API的使用和SOA架构中的API角色。安全性、性能优化和错误处理是实践中的关键点。案例研究和最佳实践有助于开发者更有效地利用API,提升Visual Basic应用程序的功能和灵活性。随着API技术的发展,Visual Basic将持续支持开发者创造更强大的应用。
|
2月前
|
人工智能 关系型数据库 Serverless
Serverless 应用引擎常见问题之API生成的函数镜像改为自定义的镜像如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
39 3
|
1天前
|
JSON API 数据格式
淘宝商品评论数据获取:从API调用到应用实践
在电商的世界里,用户评论是洞察商品质量的一扇窗。淘宝,作为中国最大的在线购物平台,其海量的商品评论数据尤为宝贵。本文将带您走进淘宝商品评论数据的获取之旅,从API调用的基础知识到实际应用的代码示例,一探究竟。
|
7天前
|
机器学习/深度学习 算法 安全
深度学习在图像识别中的应用与挑战构建高效可扩展的RESTful API:后端开发的实战指南
【4月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习在图像识别领域取得了显著的成果。本文将探讨深度学习技术在图像识别中的应用及其所面临的挑战。首先,我们将介绍深度学习的基本原理和关键技术,然后分析其在图像识别中的优势和应用案例。最后,我们将讨论当前深度学习在图像识别领域所面临的主要挑战和未来的发展趋势。
|
8天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里函数计算中开启函数计算 API 接口如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
107 6
|
8天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用阿里云API或SDK从函数计算调用ECS实例的服务如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
34 4
|
9天前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之阿里函数计算中。将本地电脑上的项目文件部署到阿里云函数计算(FC)上并实现对外提供API和WebUI如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
27 1