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

本文涉及的产品
云监控,每月短信1000条
简介: 云监控的功能庞杂,涉及云产品众多, 对于企业用户来说,面对茫茫多的云上资源,建立监控体系时可能第一时间感到无从下手,本文将通过云监控的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

相关实践学习
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
目录
相关文章
|
12天前
|
存储 缓存 搜索推荐
Lazada淘宝详情API的价值与应用解析
在电商行业,数据是驱动业务增长的核心。Lazada作为东南亚知名电商平台,其商品详情API对电商行业影响深远。本文探讨了Lazada商品详情API的重要性,包括提供全面准确的商品信息、增强平台竞争力、促进销售转化、支持用户搜索和发现需求、数据驱动决策、竞品分析、用户行为研究及提升购物体验。文章还介绍了如何通过Lazada提供的API接口、编写代码及使用第三方工具实现实时数据获取。
32 3
|
29天前
|
缓存 数据挖掘 API
商品详情API接口的应用实践
本文探讨了商品详情API接口在电商领域的应用实践,介绍了其作为高效数据交互方式的重要性,包括实时获取商品信息、提升用户体验和运营效率。文章详细描述了API接口的特点、应用场景如商品展示、SEO优化、数据分析及跨平台整合,并提出了缓存机制、分页加载、异步加载和错误处理等优化策略,旨在全面提升电商运营效果。
|
16天前
|
监控 搜索推荐 数据挖掘
淘宝 API 接口的调用频率限制是否会因应用类型而异?
淘宝API调用频率限制依应用类型而异。电商管理类如商家后台、商品批量上传工具,调用频次较高;数据分析类如市场调研、店铺分析工具,频次较严;导购推荐类如第三方导购平台、社交媒体导购应用,依据规模与信誉设定;其他如开发者测试、个人小型应用则限制较宽松。
|
9天前
|
JSON 供应链 API
京东商品评价API的获取和应用
京东商品评价API是电商数据分析的重要工具,帮助开发者和商家获取商品的用户评价数据,包括评分、评论内容和购买时间等。通过分析这些数据,商家可以优化产品和服务,提升客户满意度,制定更有效的营销策略。本文介绍了获取和应用京东商品评价API的详细步骤,包括注册账号、获取权限、阅读文档和编写代码调用API。示例代码展示了如何使用Python调用API并处理响应数据。
33 2
|
9天前
|
JSON API 开发者
淘宝商品评价API的获取与应用
在数字化时代,电商平台如淘宝成为消费者购物的主要渠道。本文介绍如何使用淘宝开放平台的商品评论API获取并利用评论数据,以优化产品和服务,提升用户体验。内容涵盖API的重要性、准备工作、调用流程及代码实现,帮助开发者高效获取和分析数据。
31 3
|
10天前
|
缓存 数据挖掘 API
淘宝商品类目API的获取与应用探索
淘宝商品类目API是淘宝开放平台提供的关键服务,允许开发者获取淘宝商品的类目信息,包括根类目、子类目及属性信息。本文介绍API的获取方法、应用场景及使用技巧,帮助电商从业者和开发者更好地利用类目数据,提升商品管理、搜索推荐及数据分析等能力。
23 1
|
14天前
|
安全 API 数据安全/隐私保护
商品详情API接口的优势分析与应用价值
在数字化时代,商品详情API接口为商家和开发者提供了实时更新、高效集成、丰富功能、安全稳定、易于扩展及提升用户体验的解决方案,助力提高运营效率、降低成本并增强市场竞争力。
|
16天前
|
安全 数据挖掘 API
快手小店详情API接口的获取与应用
在数字化时代,电商平台竞争激烈,API接口作为连接不同系统和服务的桥梁,已成为电商生态中不可或缺的一部分。本文详细介绍快手小店详情API接口的获取与应用,帮助开发者和企业提升业务效率和用户体验。涵盖API接口定义、主要应用场景、注册与认证流程、调用方法及实际应用案例,提供最佳实践建议。
45 1
|
20天前
|
前端开发 API
Context API 实战应用
【10月更文挑战第8天】在 React 应用开发中,状态管理至关重要。本文介绍了 `Context API` 的基础概念、基本用法,以及常见问题和易错点的解决方法。通过代码示例,详细讲解了如何在组件间高效共享状态,优化性能,处理嵌套 Context 和副作用。
11 1
|
26天前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
80 9