需求描述
实现鸿鹄与飞书的双向集成,依赖鸿鹄的告警机制,可以发送用户关心的信息到飞书。同时依赖飞书强大的卡片消息功能,在飞书消息里面能够通过链接(如下图)返回到鸿鹄以方便用户进一步排查和分析问题。
解决方案
1. 第一步创建告警
依据文档鸿鹄如何与飞书集成
(https://yanhuang.yuque.com/staff-sbytbc/rb5rur/kgihmq)
一步一步操作即可. 为了能够让告警更精确的触发,根据你的硬件配置和使用情况,设置一定的延时时间,一般来说30S是足够了。
2. 第二步构建消息模版
2.1 初探鸿鹄的告警token
根据文档创建告警|炎凰数据平台鸿鹄社区版
http://www.yanhuangdata.com/honghu_manual/docs/alerting/create/#token-lists, 可以获取很多有意义的告警相关的token,如下图
利用这些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就能从飞书返回到鸿鹄。
2.5 最终效果图
如下卡片消息包含了namespace, application name,error message和可返回鸿鹄的超链接。
鸿鹄价值
能够及时地推送告警信息,目前支持邮件和Webhook,当前大部分软件都包含Webhook功能,因此鸿鹄对接收端的支持应该是非常丰富的。
内生的tokens加上Jinja2渲染引擎,可以构建出各种接收端的消息主体
接收端能够返回鸿鹄,双向集成,方便了用户收到告警消息后,可以进一步探索当时的上下文,提供了排查得便利性。
后续工作
在告警这块,个人觉得鸿鹄在以下几个方面,可以进一步改进:
- 告警的实时性:目前采用定时任务来产生告警信息,在某些情况下,消息不能实时地传达到接收端,可能会造成运维故障。
- 告警的编辑页面需要进一步提升友好性
比如如上的编辑页面,负载这个地方只是一个input输入框,在消息模版比较复杂的情况下,是很难在此编辑的。我目前的做法是先用本地编辑器编辑好,然后复制到此输入框。
最好的方案可能是,鸿鹄提供一个消息模版的编辑界面,允许用户上传和在鸿鹄上编辑消息模版,在告警这个界面只要链接到某个消息模版即可。
- 由于采用定时任务来触发告警,某个时间段可能存在多条alert logs,目前接收端只能收到最新的一条log。不过通过"返回鸿鹄"按钮,用户在对应的查询界面,可以看到所有的alert logs。鸿鹄可以试着优化此功能,或者建议用户返回鸿鹄查看更多的信息。
开发环境
Vector: 0.28.1
鸿鹄: 2.9.0
飞书: 6.0.5