基于云函数的日志机器人

2021-01-04 20:17:54 浏览数 (1)

背景

研发和运维经常会干的一件事情是,在日志系统里面查找异常日志记录,然后分析系统异常的原因。在这个过程,查找异常日志这个动作拥有固定的流程和频率,具体来说,查找异常日志可以分解为打开es、确定检索条件、获取查找结果,频率为半天一次或者每天一次。从这点出发,可以考虑使用腾讯云云函数将日志检查这个操作自动化。

原理

腾讯云云函数是事件驱动的,这意味着事件的产生会触发函数的执行。同时,它支持定时触发器(Timer)作为事件,因此日志机器人的核心思路可以被解释为将打开es、确定检索条件、获取查找结果编写成云函数,同时使用定时触发器来确定云函数的执行规则。在这里,由于查找结果保存在函数中,方案还需要一个设计来保证结果能够被传达到工程师,在此可以考虑使用企业微信机器人作为结果推送组件,即当云函数获得结果后,将其转发给企业微信机器人,由机器人将消息转发到特定群组里。如图所示:

这个方案的好处如下:

  • 全自动化。时间投入成本低,只需要部署成功,后续程序运维由服务端完成。
  • 时效性强。可以根据需求自定义查询频率,异常能够及时推送到相关人员。
  • 推送范围灵活。只需要简单配置机器人,即可修改推送范围。

方案详细设计

以Python语言为例,首先需要创建一个云函数,然后修改代码

代码语言:txt复制
# -*- coding: utf8 -*-
def main_handler(event, context):
# 创建es客户端
# 查询数据
# 将数据推送到企业微信机器人的回调地址

接着需要创建企业微信机器人,企业微信机器人的工作原理很简单,即

在终端某个群组添加机器人之后,可以获取到webhook地址,然后开发者用户按以下说明构造post data向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。

最后,在完成函数代码的编写后,需要配置函数的触发器。触发器遵循cron表达式语法。

验证

在部署后,即可在有机器人的企业微信群里等待机器人推送消息。

0 人点赞