利用数据分析告警机制,实现鸿鹄与飞书双向集成

需求描述

实现鸿鹄与飞书的双向集成,依赖鸿鹄的告警机制,可以发送用户关心的信息到飞书。同时依赖飞书强大的卡片消息功能,在飞书消息里面能够通过链接(如下图)返回到鸿鹄以方便用户进一步排查和分析问题。

利用数据分析告警机制,实现鸿鹄与飞书双向集成_第1张图片

解决方案

1. 第一步创建告警

依据文档鸿鹄如何与飞书集成

(https://yanhuang.yuque.com/staff-sbytbc/rb5rur/kgihmq)

一步一步操作即可. 为了能够让告警更精确的触发,根据你的硬件配置和使用情况,设置一定的延时时间,一般来说30S是足够了。

利用数据分析告警机制,实现鸿鹄与飞书双向集成_第2张图片

2. 第二步构建消息模版

2.1 初探鸿鹄的告警token

根据文档创建告警|炎凰数据平台鸿鹄社区版

http://www.yanhuangdata.com/honghu_manual/docs/alerting/create/#token-lists, 可以获取很多有意义的告警相关的token,如下图

利用数据分析告警机制,实现鸿鹄与飞书双向集成_第3张图片

利用这些token,能很容易的知道此次告警的上下文,也就以为这些tokens可以用来组合一条丰富的告警信息。

2.2 熟悉鸿鹄的告警渲染模版

鸿鹄的告警信息渲染引擎,无论是邮件body还是webhook body,都采用Jinja2模版引擎来渲染,结合上面提到的tokens,就可以非常灵活地构建各式的模版,以应用于不同的接收端。Jinja2模版具体的细节可以参考:

https://jinja.palletsprojects.com/en/3.1.x/templates/

2.3 飞书的卡片消息

参考飞书卡片消息搭建工具:

https://open.feishu.cn/document/ukTMukTMukTM/uYzM3QjL2MzN04iNzcDN/message-card-builder

飞书卡片消息,开箱即用,无需太多的学习成本,很快就能制作出业务所需要的卡片消息。

2.4 飞书卡片消息最终模版

关键tokens

  • 获取程序的namespace
  • 获取程序的name
  • 获取alert search job的URL (注意:目前host需要hardcoded), 通过此URL就能从飞书返回到鸿鹄。

利用数据分析告警机制,实现鸿鹄与飞书双向集成_第4张图片

2.5 最终效果图

如下卡片消息包含了namespace, application name,error message和可返回鸿鹄的超链接。

利用数据分析告警机制,实现鸿鹄与飞书双向集成_第5张图片

鸿鹄价值

能够及时地推送告警信息,目前支持邮件和Webhook,当前大部分软件都包含Webhook功能,因此鸿鹄对接收端的支持应该是非常丰富的。

内生的tokens加上Jinja2渲染引擎,可以构建出各种接收端的消息主体

接收端能够返回鸿鹄,双向集成,方便了用户收到告警消息后,可以进一步探索当时的上下文,提供了排查得便利性。

后续工作

在告警这块,个人觉得鸿鹄在以下几个方面,可以进一步改进:

  • 告警的实时性:目前采用定时任务来产生告警信息,在某些情况下,消息不能实时地传达到接收端,可能会造成运维故障。
  • 告警的编辑页面需要进一步提升友好性

利用数据分析告警机制,实现鸿鹄与飞书双向集成_第6张图片

比如如上的编辑页面,负载这个地方只是一个input输入框,在消息模版比较复杂的情况下,是很难在此编辑的。我目前的做法是先用本地编辑器编辑好,然后复制到此输入框。

最好的方案可能是,鸿鹄提供一个消息模版的编辑界面,允许用户上传和在鸿鹄上编辑消息模版,在告警这个界面只要链接到某个消息模版即可。

  • 由于采用定时任务来触发告警,某个时间段可能存在多条alert logs,目前接收端只能收到最新的一条log。不过通过“返回鸿鹄”按钮,用户在对应的查询界面,可以看到所有的alert logs。鸿鹄可以试着优化此功能,或者建议用户返回鸿鹄查看更多的信息。

开发环境

Vector: 0.28.1

鸿鹄: 2.9.0

飞书: 6.0.5

你可能感兴趣的:(飞书)