什么是事件总线:
来自阿里云的介绍:
事件总线EventBridge(EB)是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用、SaaS应用以标准化、中心化的方式接入,并能够以标准化的CloudEvents 1.0协议在这些应用之间路由事件,能帮助我们轻松构建松耦合、分布式的事件驱动架构。
事件流程图:
事件总线EventBridge为阿里云官方事件源产生的所有事件提供Schema。如果是自定义总线的事件,可以自定义Schema,Schema都存储在Schema注册表中,事件目标可以从Schema注册表中下载事件Schema的Code Binding,实现快速访问事件,从而消费事件消息。
我们的实践
事件总线EventBridge(EB)已经使用小半年了,使用EB非常方便,也成功帮我们提前发现了 2 次重要的错误变更,将问题降低到最小范围。
当前在使用的事件总线(主要是阿里云的源):
主要场景之一,对云上产品配置操作变更的感知,因为涉及多位同事使用,有些网络基础变更,比如WAF、SLB、Nat网关、EIP等错误变更,会直接影响生产业务开展。出现故障的时候,我们需要第一时间收集线上变更信息,EB的事件变更可以很好的作为部分故障溯源的参考。传统手工操作控制台的方式,需要获取Action动作比较难,但是接入EB后,使用EB的事件集成能力,很容易做到云上资源变更的感知,以及进一步的事件延伸动作。
举一例:
WEB应用防火墙WAF的事件变更感知,我们直接将当前事件变更传递到 SLS和钉钉里。
SLS 可以收集、存储详细的变更数据。钉钉信息可以迅速传导到每个人,方便判断变更影响范围和故障定位需要。
变量和模版:
{
"type":"$.data.resourceEventType",
"time":"$.time",
"cf":"$.data.configuration",
"cfdiff":"$.data.configurationDiff"
}
"${name} ,Type is ${type}, Config is ${cf}, DiffConfig is ${cfdiff}"
测试:
我们对WAF下的web站点进行源站修改。
收到的钉钉通知
SLS内容,可以通过diff配置,看到详细的变更范围。
但也有些使用上的问题:
1,云事件大盘观察功能缺陷
使用云事件大盘可以很方便观察到云产品的事件源和事件类型变更,
但部分产品的事件源还没有接入到大盘里,希望能再完善下。
查看容器的Arms采集K8S事件
但无法查询到真实数据,只有统计数据。
下载下来也是空的。也希望再完善下。
目前所有数据只能从之前事件变更时传递到SLS上去获取。
2,容器事件采集功能不完善
不支持采集configmap、deploymnet、ingress的事件, EB是采集集群里的事件中心里的事件,但测试发现configmap、deploymnet、ingress的变更 都没有创建到事件中心里,但是会记录到SLS的日志审计里。希望能接入到EB中。
其它使用场景:
我们使用HTTP/HTTPS自定义事件源接入了Grafana,完成事件源对接。
预设了其他场景,待实现:
1,ARMS 监听到应用 API 出现问题(请求过载、故障) ,触发SAE/ 函数计算进行弹性扩容。
2,内部中间件平台,比如配置中心下某些指标参数修改后,通过自定义事件传递告警通知。
有太多场景,有了EB后,我们可以快速实现。
总之,事件总线EventBridge,是一款非常棒的产品,对业务稳定性帮助非常大。
也希望EB能支持更多的功能,比如对事件数据的过滤,转换,富化,规整,合并,传递等,可以下钻到数据安全、分析等领域,帮助中小企业,把控全网的数据变更、安全风险。