说说云监控策略的的管理效率

腾讯云监控,作为云产品的监控手段,不知道有多少开发者没有设置,然后突然有一天发现自己的 redis 满了,或者是 kafka 的堆积的数量过多的时候,造成事故。再来补救。

小规模资源情况

如果是小规模的资源量,那么通过腾讯云提供的一键告警策略,能够快速的覆盖各个产品的告警情况。

大规模资源情况

但是如果是大规模的资源,尤其是,账号下的资源,是分给不同的业务用的,不同的业务又有不同的告警需求,那么告警策略维护起来就十分的麻烦了。比如,我们使用到的云产品有 20+ 个,需要设置的告警策略,就需要有 20+个,甚至,有一些云产品,比如 Redis 的告警,不仅仅要设置针对实例的,还需要针对 Proxy 和 节点 分别设置。这样需要管理的告警策略也就更多了。

单独手动的在云控制台设置一遍, 告警策略信息,告警渠道,告警触发条件,告警关联实例范围还好。但是一旦后续需要修改期中的任何一个内容,就需要先把之前设置的告警策略再搜出来进行修改。这个过程就十分的痛苦了。

为了解决这个问题,基于腾讯云 API 开发了一个工具,能够通过 yaml 声明的方式,持续管理云产品告警策略。

比如配置如下:

代码语言: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 内容。