日志报警方案

518 阅读1分钟

最近想做一个功能,就是监控日志,遇到error日志就推送到钉钉。最简单的方案就是在全局异常处理中,针对异常调用钉钉的webhook。 只是我们系统是集成了ELKSkywalking的,我就想着能不能基于这两个服务进行处理。

  1. skywaling自带的告警。
  2. 基于 elkelastalert

skywalking 报警

  1. 自带告警功能,只需配置规则即可。
  2. 并且可以接入各类配置中心,动态更新告警规则。
  3. 支持各种常用的通知方式 钉钉、微信等,配置也简单。
  4. 规则上需要学习 oal语法,自定义规则,比较灵活。
  5. 报警信息有限,我看消息模板只有 id,name两个字段。

具体的使用方式我是看这个博客,很实用。 blog.51cto.com/knifeedge/5…

效果大概这样

image.png

起初我想着可以将异常堆栈、TID 等信息都推送到钉钉。实际上只能添加 ID、NAME两个变量。 skywalking 把重要的数据都写在name中。

oap 消息格式化代码 image.png

elastalert 报警

这个项目就好像是一个定时任务。重点是其灵活的规则rule.根据去不断地查询es数据,然后再分析这些数据,根据规则去报警。规则可以自定义es查询语句,还是很方便的。

我找到了一个封装成 docker 的github。文档十分详细,入门肯定没问题。https://github.com/anjia0532/elastalert-docker

最终也没有选择这个项目。因为我们项目使用全局异常拦截做流程处理,会有很多异常日志,容易误报。

后续

。。 暂时没找到合适的处理方式。