基于elasticsearch的自定义业务告警的设计思路

蚀窗多态
• 阅读 2501

A系统与B系统之间有很多接口交互,但是有一段时间接口经常报错,作为开发如果不能第一时间知道问题且及时解决的话就会收到业务投诉,当月绩效凉凉。

如果你也有这种场景,那么你就需要一个及时告警的功能。

实现方案

实现及时告警分以下两种场景:

  • 有ELK日志收集
  • 没有ELK日志收集

没有ELK日志收集的方案

很简单,搭建一个日志收集环境(O(∩_∩)O哈哈~)
需要在业务代码中嵌入硬编码,每次catch到异常直接发送告警信息告警平台进行告警

有ELK日志收集的方案

最核心的是 elasticsearch组件,所有的告警方案前提条件都是告警日志需要进ES,然后定时从ES中检索出符合业务规定的告警日志(比如ERROR日志),如果检索出来的告警日志满足一定条件就触发告警通知。

实现方式主要有以下几种:

  • ES WATCHER

这个是elasticsearch的官方插件,它可以根据数据的变化提供警报和通知,目前是收费的,具体操作配置可以参看官方地址

  • elastalert

是Yelp公司基于python写的告警框架,大家可以去GitHub上查看具体使用方法。elastalert

  • 自定义开发

自定义开发实现

2a43f8ee9948dfbdbfb849947fecb5ff.png

主要由以下几个步骤实现:

  1. 分离出单独的告警日志,与业务日志分离
  2. 在logstash中解析日志,构建格式化的告警日志,需要有以下几个关键参数:

日志级别、日志时间、日志描述、开发模块、关联主键、请求参数、响应参数

  1. 定时任务每隔一段时间去ES中检索符合要求的日志,如果检索到就发送告警通知。

核心代码

  1. 日志格式化

我们直接在客户端构建好格式化的日志,以json的形式输出到日志文件中,这样在logstash解析的时候直接使用json解析即可。
这一步不是必须的,可以自由构建日志格式,然后在logstash解析的时候使用grok语法进行解析。

public class AlarmLog {
    /**日志级别*/
    private String logLevel;
    /**日志描述*/
    private String message;
    /**关联主键 一般使用requestId*/
    private String refCode;
    /**请求参数*/
    private String parm;
    /**响应数据*/
    private String response;
    /**开发模块,根据此参数配置模块负责人*/
    private String module;
    /**日志时间*/
    private long logTime;
    ...
}
  1. 关键查询

在单独的定时器项目中使用如下查询语法就可以检索出具体的告警日志。检索出来就可以根据日志中的模块字段找出具体的模块负责人,然后发送告警通知给负责人。

public List<LogDoc> findRangeLogByLevel(DateTime minRange, DateTime maxRange, String logLevel) {
    //需要强制转换成小写
    logLevel = logLevel.toLowerCase();
    SearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(boolQuery()
                    //module 必须有值才能告警
                    .must(existsQuery("module"))
                    .must(termQuery("logLevel", logLevel))
                    .must(rangeQuery("logTime")
                            .from(minRange.getMillis())
                            .to(maxRange.getMillis())))
            .build();

    return elasticsearchTemplate.queryForList(searchQuery, LogDoc.class);
}

更多内容请关注公众号:JAVA日知录

基于elasticsearch的自定义业务告警的设计思路

点赞
收藏
评论区
推荐文章
zabbix5.0安装以及配置中文
zabbix监控服务作用:1.当出现一些突发情况能及时响应。2.及时捕捉证据,追溯相关问题。监控工具的作用:1.及时定位问题无需认为干预,大大减少人力成本2.通过技术角度,实现实时监控业务,当出现问题及时定位并告警到相关管理人员3.记录并以图形化的方式展示出来,方便管理员进行系统运行性能评估4.出现故障,针对某一个性能指标,自动化执行一个指定操作。监控系统
好买-葡萄 好买-葡萄
3年前
窗体底端 有了这个告警系统,DBA提前预警不是难题
好买网www.goodmai.comIT技术交易平台摘要:告警功能是各大云平台必不可少的模块,个性化的告警配置,为帮助用户和运维人员及时发现问题发挥着重要作用。本文分享自华为云社区《GaussDB(DWS)数据库智能监控系统告警框架上线啦!》,作者:codefulture。本文将从一下几个方面介绍DMS告警框架:数据库智能监控系统告警
Johnny21 Johnny21
4年前
Promethus(普罗米修斯)监控
一、任务背景某某某公司是一家电商网站,由于公司的业务快速发展,公司要求对现有机器进行业务监控,责成运维部门来实施这个项目。任务要求1)部署监控服务器,实现7x24实时监控2)针对公司的业务及研发部门设计监控系统,对监控项和触发器拿出合理意见3)做好问题预警机制,对可能出现的问题要及时告警并形成严格的处理机制4)做好监控告警系统,要求可以实
Application Repository一键启用微信告警通知
前言我们在使用云平台时偶尔会在管理员邮箱中收到系统发出的告警通知,如EC2维护信息,这些邮件很容易淹没在收件箱中,没有得到及时处理。另外对于重要的应用我们可能会在CloudWatch设置一些指标告警并进行邮件通知。如果这些都可以发到微信等即时通信软件,就比邮件通知好多了,毕竟很多人都习惯在即时通信软件上查看消息。具体实现原理并不复杂,我们知道微信等即时通信
Application Repository一键启用微信告警通知
前言我们在使用时偶尔会在管理员邮箱中收到系统发出的告警通知,如EC2维护信息,这些邮件很容易淹没在收件箱中,没有得到及时处理。另外对于重要的应用我们可能会在CloudWatch设置一些指标告警并进行邮件通知。如果这些都可以发到微信等即时通信软件,就比邮件通知好多了,毕竟很多人都习惯在即时通信软件上查看消息。具体实现原理并不复杂,我们知道微信等即时通信工具均
Stella981 Stella981
3年前
CentOS 7安装部署ELK 6.2.4
一、ELK介绍ELK是三款开源软件的缩写,即:ElasticSearchLogstashKibana。这三个工具组合形成了一套实用、易用的监控架构,可抓取系统日志、apache日志、nginx日志、mysql日志等多种日志类型,目前很多公司用它来搭建可视化的集中式日志分析平台。ElasticSearch:是一个分布式的R
Stella981 Stella981
3年前
ELK项目es+kibana+jdk配置问题
简介ELK需求背景业务发展越来越庞大,服务器越来越多各种访问日志、应用日志、错误日志量越来越多开发人员排查问题,需要到服务器上查日志,不方便运营人员需要一些数据,需要我们运维到服务器上分析日志说白了就是日志那么多我要给你们搞牛逼的系统如果有机会再搞日志系统加消息列队eskafka消化来的数据ELK包含Elasti
Wesley13 Wesley13
3年前
Java系统架构
如果你所在的公司/团队还没有应用监控基础设施,如何让系统在上线后及时知道发生了问题?其中一个非常简单的方案就是对日志进行实时扫描监控.怎么做?不管你用的是什么框架,你的日志库应该可以设置日志级别.将日志级别打印在日志行的最开始.例如:ERRORxxxWARNxxx
Stella981 Stella981
3年前
Prometheus监控告警浅析
前言最近有个新项目需要搞一套完整的监控告警系统,我们使用了开源监控告警系统Prometheus;其功能强大,可以很方便对其进行扩展,并且可以安装和使用简单;本文首先介绍Prometheus的整个监控流程;然后介绍如何收集监控数据,如何展示监控数据,如何触发告警;最后展示一个业务系统监控的demo。监控架构Prometheus的整个
Wesley13 Wesley13
3年前
MongoDB 节点宕机引发的思考
!(https://oscimg.oschina.net/oscnet/62c18a18553f5aeb4cd52b470871842d2d3.jpg)简介最近一个MongoDB集群环境中的某节点异常下电了,导致业务出现了中断,随即又恢复了正常。通过ELK告警也监测到了业务报错日志。运维部对于节点下电
云监控告警2.0:革新传统告警机制,引领智能化监控新时代
云监控告警机制是云监控体系的核心组成部分,它负责在云服务出现异常或故障时,及时发出告警通知,以便运维人员迅速采取措施解决问题。传统的云监控告警机制虽然能够在一定程度上实现告警功能,但在告警准确性、实时性、智能化等方面存在诸多不足。云监控告警2.0则通过引入先进的技术和算法,对传统告警机制进行了全面升级,大大提高了告警的效率和准确性。
蚀窗多态
蚀窗多态
Lv1
且向路人举杯尽,共醉一场又何妨
文章
4
粉丝
0
获赞
0