介绍:事件源是事件驱动的基石,如何获取更多的事件源也是EventBridge一直在探索和尝试的方向。针对市场上其他云厂商和垂直领域的SaaS服务,EventBridge发布了HTTPSource能力,提供简单易集成的三方事件推送,帮助客户更高效便捷地实现业务上云。作者:ChangFeng简介EventDrivenArchitecture(EDA)是一种异步架构设计模型,它以事件为纽带来解耦不同的系统。在EDA中,事件驱动的操作流程自然而然地划分了各个系统的业务语义,用户可以根据需求灵活定制事件以及对事件的响应,这使得基于EDA构建一个高度可扩展的系统变得容易建筑学。应用。根据DaitanGroup的研究报告,早在2017年,UBER、Deliveroo、Monzo等公司就已经采用EDA来设计他们的系统。为了方便用户基于EDA开发应用,阿里云在2020云栖大会上正式推出了EventBridge。EventBridge是一种无服务器事件总线服务,使用标准化的CloudEvents1.0协议在应用程序之间路由事件。目前,EventBridge已经集成了很多成熟的阿里云产品。用户可以用低代码甚至零代码完成阿里云各种产品和应用之间的连接,轻松高效地构建分布式事件驱动架构。事件源是事件驱动的基石,如何获取更多的事件源也是EventBridge一直在探索和尝试的方向。针对市场上其他云厂商和垂直领域的SaaS服务,EventBridge发布了HTTPSource能力,提供简单易集成的三方事件推送,帮助客户更高效便捷地实现业务上云。HTTPSource概述访问EventBridge应用的情况有很多种:自定义应用,阿里云服务,其他云厂商服务,或者其他SaaS产品。对于自定义应用,用户可以使用EventBridge官方API接口、多语言客户端、CloudEvents社区的开源客户端完成接入。对于阿里云的云产品,EventBridge原生支持,用户可以在默认的事件总线中选择对应的云产品及其相关的触发事件。对于其他云厂商和SaaS产品,EventBridge也提供了方便的接入方式供用户集成,HTTPSource事件源就是典型的接入方式。具体来说,HTTPSource事件源是EventBridge支持的事件源之一。它以Webhook的形式暴露发布事件的HTTP请求地址。用户可以在有URL回调的场景下配置HTTPSource事件源,也可以直接使用最简单的HTTP客户端来完成事件的发布。HTTPSource事件源提供了支持HTTP和HTTPS、公网和阿里云VPC等不同请求方式、不同网络环境的webhookURL,方便用户集成到各种应用中。访问时无需使用客户端,只需要保证应用能够访问到相应的WebhookURL即可,访问过程简单高效。EventBridge在将HTTP请求转换为CloudEvent时,会将请求的header和消息体放在CloudEvent字段中,其余字段根据用户EventBridge资源属性和系统默认规则填写。用户可以在事件规则中过滤提取需要的内容,最终根据模板组装需要的消息内容,下发给事件目标。HTTPSource事件源目前支持3种安全设置,分别是请求方式、源IP、请求源域名。请求方式:用户在请求该事件源时可以配置合法的HTTP请求方式。如果方法类型不符合配置规则,请求将被过滤,不会传递给事件总线。源IP:用户访问该事件源时可以设置合法的源IP(支持IP段和IP)。当请求源IP不在设置范围内时,请求会被过滤掉,不会传递给事件总线。请求源域名:HTTP请求的referer字段。当请求的referer与用户配置不匹配时,请求将被过滤,不会被传递到事件总线。首先,下面将介绍如何使用HTTPSource构建SaaS应用集成的最佳实践,帮助您快速上手SaaS集成解决方案。SaaS集成最佳实践钉钉监控GitHub代码推送事件GitHub提供Webhook功能,当代码仓库发生某些特定操作(push、fork等)时,回调可以帮助用户完成特定功能。对于多人开发的项目,将GitHub事件推送到特定的钉钉群,可以帮助成员有效关注代码变更,提高协作效率。本节将展示钉钉监控GitHub代码推送事件的最佳实践,主要包括以下步骤:创建钉钉机器人;创建EventBridge相关资源:事件总线、事件源(HTTPSource类型)、事件规则、事件目标(钉钉);创建自定义事件总线;选择GitHub代码仓库创建Webhook;将代码变更推送到GitHub代码仓库;钉钉群收到代码推送信息。1)创建钉钉机器人参考钉钉官方文档[1]创建群机器人。创建集群机器人时,请勾选安全设置中的“签名”,并将密钥和后续生成的机器人webhook地址妥善保管。2)创建EventBridge相关资源创建EventBus事件总线创建事件源。事件源配置完成后,点击跳过,接下来我们具体配置事件规则和目标。创建完成后,进入事件源详情页面,保存新生成的WebhookURL。在EventBridge控制台页面,点击进入新建的EventBus详情页面,在左侧栏的“EventRules”选择“CreateRule”。制定时间目标。选择钉钉,填写钉钉机器人的webhook地址和key,推送内容端可以根据需要设计。我们将模板变量填写为:{"repo":"$.data.body.repository.full_name","branch":"$.data.body.ref","pusher":"$.data.body.pusher.name"}templateis:{"msgtype":"text","text":{"content":"Githubpusheventistriggered.repository:${repo},gitreference:${branch},pusher:${推手}。”}}3)在GitHub代码仓库中创建Webhook登录GitHub,在GitHub代码仓库的“设置”中选择左侧的“Webhooks”,选择新建Webhook。在创建Webhook的配置项中填写HTTPSource事件源的Webhook地址,Contenttype部分选择“application/json”,选择“Justthepushevent”。对于下面的触发事件类型,然后点击“添加Webhook”完成创建。4)将代码推送到GitHub代码仓库在本地仓库做一定的改动,commit后推送到GitHub。5)钉钉群收到本次推送的相关信息。异步消费监控告警信息业务中存在告警信息异步消费的场景,如告警内容的备份、根据告警频率自适应调整告警阈值等。另外,对于多云服务的用户,如何整合跨云服务的告警信息也是一个比较头疼的问题。依托HTTPSource,用户可以将不同的云厂商(腾讯云、华为云等)、不同的监控产品(Grafana、Zabbix、Nagios等)集成到EventBridge平台中,方便异步消费告警信息。本节介绍如何使用EventBridge集成Grafana实现异步消费监控和告警信息。Grafana是一款开源的数据可视化工具,同时具备监控和报警功能。具体使用方法可以参考Grafana官方文档[2]。本节主要包括以下步骤:创建MNS队列;创建EventBridge相关资源;在Grafana上配置Webhook;测试接收结果。创建MNS队列在MNS控制台,选择“队列列表-创建队列”。创建EventBridge相关资源同上文所述,这里仅举例创建事件目标时的相关配置。在Grafana上配置Webhook点击Grafana控制台左侧的“Alerting-Notificationchannels”,选择“Addchannel”。在“类型”栏选择“Webhook”,填写HTTPSource事件源的Webhook地址URL,点击下方“测试”。将测试接收结果登录到MNS控制台,进入队列详情页面,点击页面右上角的“发送和接收消息”,可以看到MNS已经收到Grafana刚刚发送的消息。点击对应的消息详情,可以看到消息内容,说明消息消费成功。更多集成HTTPSource支持三方集成,包括Prometheus、Zabbix、Skywalking、Grafana、Open-Falcon、Cacti、Nagios、Dynatrace、Salesforce、Shopify、Gitee等SaaS应用。通过Webhook的简单配置,无需开发即可实现事件接收能力。总结本文重点介绍EventBridge的新特性:HTTPSource事件源。EventBridge作为一个Serverless事件总线服务,将阿里云产品管控链路数据和消息产品业务数据整合到事件源生态中,提高了云端用户业务集成的便利性。开放的API和多语言SDK支持,为客户接入EventBridge为其自身业务提供便利。在此基础上,HTTPSource事件源更进一步,以Webhooks的形式开放了对其他云厂商和SaaS应用的集成能力。无需修改代码,简单配置即可完成EventBridge集成操作。原文链接本文为阿里云原创内容,未经许可不得转载。
