通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警

更新时间:

本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。

场景简介

本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。

背景知识

本场景主要涉及以下云产品和服务:

  • 轻量消息队列(原MNS)

    轻量消息队列(原MNS)是一款易集成、高并发、可弹性扩展的轻量消息队列服务。消息服务的轻量队列模型、按量后付费的计费模式、自动适应高并发的弹性可扩展能力,让开发者低成本快速构建分布式、松耦合系统,高效地传递数据和通知消息。

  • 应用实时监控服务ARMS

    应用实时监控服务ARMS作为云原生可观测平台,应用实时监控服务提供全栈性能监控告警与端到端追踪诊断能力。覆盖浏览器、小程序、APP等客户端环境,观测与分析用户行为、页面性能,精准把握用户体验。覆盖分布式、微服务等应用架构与容器、Serverless等部署环境,对服务调用、系统负载等进行监控与调用链分析,全面洞察与优化应用性能。

方案优势

  • 触发云产品任务执行的可靠数据通道:轻量消息队列(原 MNS)的核心优势诸如异步解耦、可靠传输及削峰填谷能力,能确保通知内容能够被稳定且高效地传递,实现应用和云产品服务的松散耦合,保障在高并发请求下系统的平稳运行。

  • 多元化的告警通知渠道:支持通过电话、短信、电子邮件以及即时通讯平台(如钉钉、飞书和企业微信)中的群聊或机器人发送告警信息。

  • 灵活的内容格式支持:对于告警内容的格式没有限制,支持普通文本内容、JSON等格式。

  • 可定制的通知策略:您可以根据自身需求定义不同的通知规则,包括但不限于告警级别、时间窗口、重复次数等参数设置,从而实现更加精准有效地传递信息。

方案架构

image

方案效果

例如,将以下内容同时发送到邮箱、短信、钉钉三个渠道。

通知内容:欢迎使用<a href="">轻量消息队列(原 MNS)</a>产品作为云产品间消息通信的首选通道。

三个渠道收到的内容效果如下所示:

image

前提条件

云起实验室将在您的账号下开通本次实操资源,资源按量付费,需要您自行承担本次实操的云资源费用。

重要

本实验使用轻量消息队列(原MNS)和应用实时监控服务ARMS,实验总费用不超过2元。包含收发消息次数40万次。未开通告警管理时,每个账号每天提供15次免费短信通知,3次电话通知。用量超过免费额度后告警管理将不再通过对应的通知方式发送告警通知。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

进入实操前,请确保阿里云账号满足以下条件:

  • 已通过实名认证并且账户余额充足。

  • 云资源产生的费用需您自行承担,云起实验室不会向您征收额外费用。

  • 所有实验操作将保留至您的账号,请谨慎操作。

  • 实操结束后,您可以选择继续付费保留资源,或参考手册自动/手动释放资源。

在告警管理中创建钉钉机器人(可选)

  1. 获取钉钉机器人Webhook地址。

    设置钉群或在联系人中设置钉钉机器人时需要先在钉钉群中获取自定义机器人Webhook地址。本章节将介绍如何获取钉钉机器人Webhook地址。请按照以下步骤在钉钉群中添加自定义钉钉机器人并获取Webhook地址。

    重要

    已创建用于接收告警通知的钉钉群。

    1. PC版钉钉上打开您想要添加报警机器人的钉钉群,并单击右上角的群设置image图标。

      image

    2. 群设置面板中单击机器人,然后单击添加机器人

    3. 智能群助手面板单击添加机器人,继续单击添加机器人,然后选择添加自定义

      image

    4. 机器人详情对话框单击添加

    5. 添加机器人对话框中执行以下操作。

      说明

      更多关于钉钉机器人的操作,请参见自定义机器人接入

      1. 设置机器人头像和名字。

      2. 安全设置选中自定义关键词,设置关键词为告警。

      3. 选中我已阅读并同意《自定义机器人服务及免责条款》

      4. 单击完成

        image

    6. 复制生成的机器人Webhook地址,然后单击完成

      image

  2. 创建告警通知钉群。

    ARMS告警管理中创建钉钉机器人后,您可以在通知策略中指定对应的钉钉群用于接收告警。当通知策略的匹配规则被触发时,系统会自动向您指定的钉钉群发送告警通知。钉钉群收到通知后,您可以在钉钉中对告警进行管理。

    重要

    前提条件:

    • 已在钉钉客户端创建用于接收告警通知的钉钉群。

    • 已添加自定义钉钉机器人并获取Webhook地址,具体操作,请参见获取钉钉机器人Webhook地址

    1. 登录ARMS控制台,在左侧导航栏选择告警管理 > 通知对象

      image

    2. 单击钉钉/飞书/企微页签,然后单击钉钉

      image

    3. 在弹出的面板设置以下参数,然后单击确定

      参数

      说明

      名称

      自定义钉钉机器人的名称。

      签名密钥

      可选,如配置了密钥则会通过加签的方式进行钉钉认证。如果没有配置密钥,默认使用关键字白名单的方式进行认证,白名单关键字为告警。更多信息,请参见钉钉官方文档

      机器人地址

      输入钉钉机器人的Webhook地址。

      机器人是否发送每日统计

      选中后,需要输入每日统计信息发送的时间点,使用英文逗号(,)分隔多个发送时间点,时间点格式为HH:SS。ARMS告警管理将在设置的时间点发送今日产生告警的总数、解决数和待解决数。

      卡片内容配置

      自定义告警通知卡片样式和内容。

      image

在告警管理中创建联系人

  1. 登录ARMS控制台,在左侧导航栏选择告警管理 > 通知对象

    image

  2. 联系人页签单击新建联系人

    image

  3. 新建联系人对话框中根据实际需求设置以下参数,然后单击确认

    重要
    • 手机号码和邮箱至少填写一项,每个手机号码或邮箱只能用于一个联系人。

    • 新版联系人不支持设置钉钉机器人,如果您需要创建钉钉机器人,请在钉钉/飞书/企微页签新建钉钉机器人。具体操作,请参见钉钉机器人。已在旧版联系人中创建的钉钉机器人则保留不变。

    参数

    说明

    姓名

    自定义联系人姓名。

    手机号

    设置联系人的手机号码后,可以通过电话和短信的方式接收告警通知。

    说明

    仅验证过的手机号码可以在通知策略中使用电话的通知方式,验证手机号的操作,请参见联系人

    邮箱

    设置联系人的邮箱地址后,可以通过邮箱接收告警通知。

    联系人组

    选择联系人需要加入的联系人组。创建联系人组的操作,请参见联系人组

    电话通知失败补发类型

    选择电话通知失败后,通知补发类型。

    您可以在联系人页签设置全局默认值,具体操作,请参见下文联系人

    用户标识

    在企业内使用的IM工具(目前支持钉钉、飞书、企业微信)对应的用户ID,如钉钉号、企微号等。

    该字段可用于群内告警卡片@联系人的功能。如您需要使用该功能,请正确填写对应IM工具的ID号。

    目前飞书、企业微信的@联系人功能必须依赖该字段,钉钉暂不依赖该字段。

    image

  4. 仅验证过的手机号可以在通知策略中使用电话的通知方式。

    1. 联系人页签上,选择为一个或多个联系人验证手机号。

      • 如需为单个联系人验证手机号:单击未验证手机号右侧的未验证

        image

      • 如需为多个联系人批量验证手机号:在复选框中选中需要验证手机号的联系人,然后单击批量验证。系统将会给各联系人发送验证手机号短信。

        image

    2. 使用浏览器打开短信中的链接。

      验证手机号短信

    3. 在验证页面确认手机号信息,然后单击验证

    4. 进入邮箱单击打开阿里云发送的邮件,点击链接前往认证。

      image

    5. 进入告警运维中心页面,确认邮箱无问题后,单击验证

创建轻量消息队列(原MNS)主题

  1. 登录轻量消息队列(原 MNS)控制台

  2. 在左侧导航栏,选择主题模型 > 主题列表

    image

  3. 在顶部菜单栏,选择地域(本实验示例为华东1(杭州))。

  4. 主题列表页面,单击创建主题,然后在创建主题面板设置名称为demo-topic,其他默认单击确定

    image

将主题中的消息推送到ARMS

重要
  • 本章节以控制台方式发送消息为例,您也可以通过客户端SDK方式发送消息,详情请参见客户端SDK

  • 使用控制台发送消息时默认不对消息体进行编码,当使用客户端SDK发送消息时,编码方式请选择“非Base64编码”。

  • 消息推送到ARMS后,您可以在ARMS控制台上根据收到的消息字段配置事件映射,详情请参见使用ARMS告警管理功能,解析消息体内容并配置通知策略

  1. 登录ARMS控制台,在左侧导航栏选择告警管理 > 集成。在告警集成页签,单击自定义集成

    image

  2. 新建自定义事件集成对话框中输入集成名称描述,然后单击保存并配置。在集成详情页面的接口配置区域复制其URL地址。

    imageimage

  3. 返回轻量消息队列(原 MNS)控制台,在左侧导航栏,选择主题模型 > 订阅列表

  4. 订阅列表页面,在顶部菜单栏,选择地域(本实验示例为华东1(杭州)),单击创建订阅,然后在创建订阅面板设置以下参数,其他参数保持默认即可。

    参数

    说明

    示例

    主题名称

    选择上文创建轻量消息队列(原MNS)主题章节中已创建的主题。

    demo-topic

    订阅名称

    填写订阅名称。

    testsubscription

    订阅类型

    选择HTTP

    HTTP

    接收端地址

    填写上文复制的集成地址。

    https://alerts.aliyuncs.com/api/v1/integrations/custom/J3aaq2qQza****

    消息格式

    如果消息体内容为非JSON格式,则选择JSON;如果消息体内容为JSON格式,则选择SIMPLIFIED。这样可以保障推送到ARMS的完整内容为JSON格式。

    JSON

    image

  5. 主题列表中找到创建轻量消息队列(原MNS)主题章节中已创建的主题,单击其右侧操作列的发布消息

    image

  6. 在体验发向主题发布消息页面中,输入以下参数后,单击发送消息

    参数

    示例

    消息内容

    欢迎使用<a href="">轻量消息队列(原 MNS)</a>产品作为云产品间消息通信的首选通道。

    推送订阅类型

    HTTP

    image

使用ARMS告警管理功能,解析消息体内容并配置通知策略

  1. ARMS控制台告警集成列表中,找到将主题中的消息推送到ARMS章节中创建的自定义事件集成,单击其右侧操作列的编辑

    image

  2. 在集成详情页面的事件映射区域配置映射。本例中将订阅名称(SubscriptionName)映射为告警名称(alertname),告警级别设置为MAX(P1级别),消息体(Message)内容映射为告警描述(message),然后单击保存

    image

  3. 在自定义集成右侧操作列,选择更多 > 新建通知策略,为集成创建通知策略。

    image

  4. 单击下一步通知对象页签,在通知对象页签配置以下内容后,单击下一步行动集成页签保存,其他页签保持默认配置即可。

    • 通知对象:在①处设置前提条件中创建的钉钉机器人作为告警通知对象,②处设置前提条件中创建的联系人作为告警通知对象,通知方式选择短信邮箱

      image

    • 告警恢复后是否发送恢复通知:选择不发送恢复通知

      image

    • 通知模板:分别修邮箱、短信、钉钉的通知内容为如下参数。

      {{ for .alerts }} {{ .annotations.message }} {{ end }}

      image

      image

      image

结果验证

  1. 返回轻量消息队列(原 MNS)控制台

  2. 主题列表中找到创建轻量消息队列(原MNS)主题章节中已创建的主题,单击其右侧操作列的发布消息

    image

  3. 在体验发向主题发布消息页面中,输入以下参数后,单击发送消息

    参数

    示例

    消息内容

    欢迎使用<a href="">轻量消息队列(原 MNS)</a>产品作为云产品间消息通信的首选通道。

    推送订阅类型

    HTTP

    image

  4. 查看联系人邮箱、短信及钉钉机器人是否接收到告警。

清理资源

  • 在完成实验后,如果无需继续使用资源,请根据以下步骤,先删除相关资源后,再结束实操,否则资源会持续运行产生费用。

    • 删除主题。

      1. 进入轻量消息队列(原MNS)控制台。

      2. 在页面右上角,地域切换至华东1(杭州)。在右侧导航栏中单击主题列表,找到创建的主题,单击右侧更多 > 删除

        image

      3. 请仔细阅读弹出的提示对话框,确认无误后单击确认

        image

    • 删除消息订阅。

      1. 进入轻量消息队列(原MNS)控制台。

      2. 在页面右上角,地域切换至华东1(杭州)。在右侧导航栏中单击订阅列表,找到创建的订阅,单击右侧删除

        image

      3. 请仔细阅读弹出的提示对话框,确认无误后单击确认

        image

    • 删除集成。

      1. 进入ARMS控制台。

      2. 在左侧导航栏选择告警管理 > 集成,找到刚刚创建的集成,单击右侧删除

        image

      3. 在弹出的对话框中单击确认

        image

    • 删除通知对象。

      1. 进入ARMS控制台。

      2. 在左侧导航栏选择告警管理 > 通知对象 > 联系人,找到刚刚创建的联系人,单击右侧删除,在弹出的对话框中单击确认

        image

      3. 在左侧导航栏选择告警管理 > 通知对象 > 联系人,找到刚刚创建的钉钉对象,单击右侧删除,在弹出的对话框中单击确认

        image

    • 删除通知策略。

      1. 进入ARMS控制台。

      2. 在左侧导航栏选择告警管理 > 通知策略,找到刚刚创建的通知策略,单击右侧删除

        image

    • 删除相关资源后,单击结束实操。在结束实操对话框中,单击确定

      image

  • 在完成实验后,如果需要继续使用资源,您可跳过释放相关资源的操作,直接单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。

    image