背景
研发和运维经常会干的一件事情是,在日志系统里面查找异常日志记录,然后分析系统异常的原因。在这个过程,查找异常日志这个动作拥有固定的流程和频率,具体来说,查找异常日志可以分解为打开es、确定检索条件、获取查找结果,频率为半天一次或者每天一次。从这点出发,可以考虑使用腾讯云云函数将日志检查这个操作自动化。
原理
腾讯云云函数是事件驱动的,这意味着事件的产生会触发函数的执行。同时,它支持定时触发器(Timer)作为事件,因此日志机器人的核心思路可以被解释为将打开es、确定检索条件、获取查找结果编写成云函数,同时使用定时触发器来确定云函数的执行规则。在这里,由于查找结果保存在函数中,方案还需要一个设计来保证结果能够被传达到工程师,在此可以考虑使用企业微信机器人作为结果推送组件,即当云函数获得结果后,将其转发给企业微信机器人,由机器人将消息转发到特定群组里。如图所示:
这个方案的好处如下:
- 全自动化。时间投入成本低,只需要部署成功,后续程序运维由服务端完成。
- 时效性强。可以根据需求自定义查询频率,异常能够及时推送到相关人员。
- 推送范围灵活。只需要简单配置机器人,即可修改推送范围。
方案详细设计
以Python语言为例,首先需要创建一个云函数,然后修改代码
代码语言:txt复制# -*- coding: utf8 -*-
def main_handler(event, context):
# 创建es客户端
# 查询数据
# 将数据推送到企业微信机器人的回调地址
接着需要创建企业微信机器人,企业微信机器人的工作原理很简单,即
在终端某个群组添加机器人之后,可以获取到webhook地址,然后开发者用户按以下说明构造post data向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。
最后,在完成函数代码的编写后,需要配置函数的触发器。触发器遵循cron表达式语法。
验证
在部署后,即可在有机器人的企业微信群里等待机器人推送消息。