腾讯云监控,作为云产品的监控手段,不知道有多少开发者没有设置,然后突然有一天发现自己的 redis 满了,或者是 kafka 的堆积的数量过多的时候,造成事故。再来补救。
小规模资源情况
如果是小规模的资源量,那么通过腾讯云提供的一键告警策略,能够快速的覆盖各个产品的告警情况。
大规模资源情况
但是如果是大规模的资源,尤其是,账号下的资源,是分给不同的业务用的,不同的业务又有不同的告警需求,那么告警策略维护起来就十分的麻烦了。比如,我们使用到的云产品有 20+ 个,需要设置的告警策略,就需要有 20+个,甚至,有一些云产品,比如 Redis 的告警,不仅仅要设置针对实例的,还需要针对 Proxy 和 节点 分别设置。这样需要管理的告警策略也就更多了。
单独手动的在云控制台设置一遍, 告警策略信息,告警渠道,告警触发条件,告警关联实例范围还好。但是一旦后续需要修改期中的任何一个内容,就需要先把之前设置的告警策略再搜出来进行修改。这个过程就十分的痛苦了。
为了解决这个问题,基于腾讯云 API 开发了一个工具,能够通过 yaml 声明的方式,持续管理云产品告警策略。
比如配置如下:
secret:
# loadFromEnv = true
# 从环境变量中获取调用腾讯云 api 的 id 和 key,这里声明的是环境变量的 name
# loadFromEnv = false
# 从配置文件读取
# 建议:优先推荐放到环境变量,而不是放到配置文件中,如果放在配置文件中,请保障配置文件不提交到 git 仓库中
loadFromEnv: true
secretID: MyCloudSecretId
secretKey: MyCloudSecretKey
policies:
- namespace: redis_mem_edition # 云产品类型, https://cloud.tencent.com/document/product/248/50397 查看全部
conditionID: 8362782 # 触发条件模板 id,https://console.cloud.tencent.com/monitor/alarm/template 查看
noticeIDs: # 通知渠道模板 id,https://console.cloud.tencent.com/monitor/alarm/notice 查看
- notice-4uks09xe
name: 基础Redis实例告警 # 告警策略名称,创建时候使用,更新时候也会用这个查询后修改
remark: 维护 by tcop cmd # 备注
tags: # 监控策略的 tag 用于管理监控,监控的实例无关
- key: 用途
value: 魔法
resourceTags: # 监控覆盖的资源标签的 tag
- key: 用途
values:
- 魔法
- 测试
我们需要手动的工作为:
1. 设置一个告警渠道,并记录下这个通知渠道的 id
2. 给这个云产品设置告警条件的模板并记录 id,这个步骤由于不同的云产品,支持的条件不同,所以需要到控制台上设置,云 API 也没有开放编辑相关的接口,只有一个查询接口
3. 维护好不同的云产品的告警策略配置,告警关联的资源,使用标签的方式进行圈定。也就是说不同业务的资源,需要挂上不同的标签,这个资源要治理好。
完成以上工作之后,执行工具,工具会根据配置中的内容进行告警策略的创建,如果有同名的策略,那么也会直接更新这个策略。
这样,在之后,比如说某个告警策略需要更换触发条件,就可以在配置中直接更换,或者是在业务标签中,需要增加某个业务的覆盖,那么也可以直接修改配置(当标签很多的时候,在云控制台操作,搜索过程就比较慢了)提升效率,节约生命!
工具地址:https://github.com/vissong/TCOP-Policy-CMD,使用指南参考 README 内容。