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

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

目录
相关文章
|
4月前
|
供应链 搜索推荐 数据挖掘
探秘京东 API 接口的神奇应用场景
京东API如同数字钥匙,助力商家实现商品、库存、订单等多平台高效同步,提升效率超80%。支持物流实时追踪,增强用户满意度;赋能精准营销与数据分析,决策准确率提升20%以上,全面优化电商运营。
160 1
|
5月前
|
人工智能 自然语言处理 机器人
使用 API 编程开发扣子应用
扣子(Coze)应用支持通过 API 编程,将 AI 聊天、内容生成、工作流自动化等功能集成至自有系统。主要 API 包括 Bot API(用于消息交互与会话管理)及插件与知识库 API(扩展功能与数据管理)。开发流程包括创建应用、获取密钥、调用 API 并处理响应,支持 Python 等语言。建议加强错误处理、密钥安全与会话管理,提升集成灵活性与应用扩展性。
1686 0
|
6月前
|
监控 供应链 搜索推荐
电商数据开发实践:深度剖析1688商品详情 API 的技术与应用
在电商数字化转型中,数据获取效率与准确性至关重要。本文介绍了一款高效商品详情API,具备全维度数据采集、价格库存管理、多媒体资源获取等功能,结合实际案例探讨其在电商开发中的应用价值与优势。
|
6月前
|
API 定位技术 调度
实现精准定位的—坐标系经纬度转换API技术说明和行业应用
在地图服务、物流调度等应用中,多源地理位置数据因采用不同坐标系(如WGS84、GCJ02、BD09)需统一转换,以避免位置偏移影响路径规划与分析精度。本文介绍坐标转换背景、技术方案及Python调用示例,强调其在智慧交通与物流系统中的重要性。
679 0
|
4月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
217 11
|
5月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
741 11
|
4月前
|
XML JSON 监控
微店商品详情API助力多店铺管理和竞品监控
微店商品详情API(micro.item_get)可获取商品名称、价格、库存、图片等20余项信息,支持GET/POST请求,返回JSON或XML格式数据,适用于电商开发、库存管理与跨平台展示。
|
7月前
|
存储 机器学习/深度学习 API
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
1153 31
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
|
5月前
|
安全 API 数据安全/隐私保护
【Azure 环境】Microsoft Graph API实现对Entra ID中应用生成密码的时间天数
本文介绍如何通过 Azure 的 App Management Policy 限制用户在创建 AAD 应用程序的 Client Secret 时设置最长 90 天的有效期。通过 Microsoft Graph API 配置 defaultAppManagementPolicy,可有效控制密码凭据的生命周期,增强安全管理。
170 4
|
5月前
|
Java API 开发者
揭秘淘宝详情 API 接口:解锁电商数据应用新玩法
淘宝详情API是获取商品信息的“金钥匙”,可实时抓取标题、价格、库存等数据,广泛应用于电商分析、比价网站与智能选品。合法调用,助力精准营销与决策,推动电商高效发展。(238字)
209 0