本发明公开一种基于logstash实现监控系统请求的方法,涉及微服务架构技术领域。
背景技术:
当前,随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络。
当某一个应用发出某个请求时,其背后可能有数十个甚至更多的服务被调用,可谓是“牵一发而动全身”。如果将分布式系统比作高速公路网,每个前端的请求就相当于高速上行驶的车辆,而处理请求的应用就是高速上的收费站,在收费站上将车辆通行信息记录成日志,包括时间、车牌、站点、公路、价格等,如果将所有收费站上的日志整合在一起,便可以通过唯一的车牌号确定该车的完整通行记录;分布式调用系统跟踪和监控就是类比这种思想,对每一次请求进行跟踪,进而明确每个请求所经过的应用、耗时等信息。
logstash作为一个开源的数据收集引擎,它具备有实时数据传输能力,可以统一过滤来自不同源的数据,并按照开发者定制的规范输出到目的地,利用logstash这种特性,融入系统中,实现系统请求的监控的目的。
本发明提供一种基于logstash实现监控系统请求的方法,用于理解系统行为,分析性能问题,以便发生故障的时候,能够精准快速的定位和解决问题。
技术实现要素:
本发明针对现有技术的问题,提供一种基于logstash实现监控系统请求的方法,帮助理解系统行为、用于分析系统性能问题,以便发生故障的时候,能够精准快速的定位和解决问题。所以,本专利就涉及了一种基于logstash实现监控系统请求的方法。
本发明提出的具体方案是:
一种基于logstash实现监控系统请求的方法,将系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理,用于进行请求的链路的分析和监控。
所述的方法中约定的格式中包含时间格式,tradeid,spanid,事件类型及说明内容。
所述的方法中事件类型主要指sr事件、cs事件、cr事件、ss事件及exp事件,
cs事件是指发起方发起请求事件,
sr事件是指接收方收到请求事件,
ss事件是指请求接收方处理完毕后向发起方发出响应事件,
cr事件是指发起方收到响应事件,
exp事件是指出现异常事件。
所述的方法中系统调用的分布式服务为dubbo提供的分布式服务。
一种基于logstash实现请求监控的系统,系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理,用于进行请求的链路的分析和监控。
所述的系统中约定的格式中包含时间格式,tradeid,spanid,事件类型及说明内容。
所述的系统中事件类型主要指sr事件、cs事件、cr事件、ss事件及exp事件,
cs事件是指发起方发起请求事件,
sr事件是指接收方收到请求事件,
ss事件是指请求接收方处理完毕后向发起方发出响应事件,
cr事件是指发起方收到响应事件,
exp事件是指出现异常事件。
所述的系统中系统调用的分布式服务为dubbo。
本发明的有益之处是:
本发明提供一种基于logstash实现监控系统请求的方法,将系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理,用于进行请求的链路的分析和监控,
本发明按照低耦合易部署的方法,利用logstash来监控和分析业务请求链路,通过日志的方式完美的解决了应用系统中请求链调用的监控,不仅可以将性能测量与业务逻辑完全分离,也大大提高了采集效率,快速定位代码性能问题,并且减少了运维成本,提高开发效率,而且还可以协助开发人员进行白盒测试。
附图说明
图1是本发明系统请求监控框架示意图;
图2是本发明方法流程示意图。
具体实施方式
本发明提供一种基于logstash实现监控系统请求的方法,将系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理,用于进行请求的链路的分析和监控。
同时提供与上述方法相应的一种基于logstash实现请求监控的系统,系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理,用于进行请求的链路的分析和监控。
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
利用本发明方法进行系统的请求监控时,将系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理,用于进行请求的链路的分析和监控,其中将系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理的过程,就是对系统的前端,前端至后台的交互过程及调用分布式服务执行过程中进行事件埋点的过程,约定的格式即为事件埋点格式,可表示为:
timetradeidspanideventcontent
其中多个展示使用空格分隔;
time:时间yyyymmddhhmmss格式,字符串,
tradeid:当前请求链路的traceid,
spanid:当前span的spanid,
event:事件类型,取值5种cs\sr\ss\cr\exp,其中exp表示异常类,
content:说明内容,event取值exp外其他均选填,该值格式不限,将原样记录;
事件类型中主要指sr事件、cs事件、cr事件、ss事件及exp事件,
cs事件是指发起方发起请求事件,
sr事件是指接收方收到请求事件,
ss事件是指请求接收方处理完毕后向发起方发出响应事件,
cr事件是指发起方收到响应事件,
exp事件是指出现异常事件。
在上述过程中,若系统调用的分布式服务为dubbo提供的分布式服务,进行具体操作中rest服务:
事件埋点处理:agent处理,包括springmvc/springboot拦截器、dubbo客户端filter,
sr事件:接收前端传来的traceid、spanid,新建一个span,parentid为上方的spanid,parent表示一个trace是由多个span串联起的,具有一个root_span,每个子span都有一个parent;
cs事件:调用dubbo或其他服务,
上下文传递:aop结合threadlocal,
cr事件:收到dubbo响应,
ss事件:响应给前端,
dubbo服务:
事件处理:agent埋点可与手工结合,dubbo服务端filter、dubbo客户端filter,
sr事件:接收dubbo客户端传来的traceid、spanid,新建一个span,parentid为上方的spanid,
cs事件:调用子dubbo服务,
上下文传递:aop方式结合threadlocal,
cr事件:收到dubbo响应,
ss事件:响应上方请求。
同样利用本发明系统进行请求监控时,将系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理,用于进行请求的链路的分析和监控,其中将系统的前端,前端至后台的交互过程及调用分布式服务执行过程中应用在请求时所产生的日志,按照约定的格式输出到日志文件,以便logstash进行扫描处理的过程,就是对系统的前端,前端至后台的交互过程及调用分布式服务执行过程中进行事件埋点的过程,约定的格式即为事件埋点格式,可表示为:
timetradeidspanideventcontent
其中多个展示使用空格分隔;
time:时间yyyymmddhhmmss格式,字符串,
tradeid:当前请求链路的traceid,
spanid:当前span的spanid,
event:事件类型,取值5种cs\sr\ss\cr\exp,其中exp表示异常类,
content:说明内容,event取值exp外其他均选填,该值格式不限,将原样记录;
事件类型中主要指sr事件、cs事件、cr事件、ss事件及exp事件,
cs事件是指发起方发起请求事件,
sr事件是指接收方收到请求事件,
ss事件是指请求接收方处理完毕后向发起方发出响应事件,
cr事件是指发起方收到响应事件,
exp事件是指出现异常事件。
在上述过程中,若系统调用的分布式服务为dubbo提供的分布式服务,进行具体操作中rest服务:
事件埋点处理:agent处理,包括springmvc/springboot拦截器、dubbo客户端filter,
sr事件:接收前端传来的traceid、spanid,新建一个span,parentid为上方的spanid,parent表示一个trace是由多个span串联起的,具有一个root_span,每个子span都有一个parent;
cs事件:调用dubbo或其他服务,
上下文传递:aop结合threadlocal,
cr事件:收到dubbo响应,
ss事件:响应给前端,
dubbo服务:
事件处理:agent埋点可与手工结合,dubbo服务端filter、dubbo客户端filter,
sr事件:接收dubbo客户端传来的traceid、spanid,新建一个span,parentid为上方的spanid,
cs事件:调用子dubbo服务,
上下文传递:aop方式结合threadlocal,
cr事件:收到dubbo响应,
ss事件:响应上方请求。
利用本发明系统或方法都可以通过logstash开源工具实现系统的请求监控,事件埋点的方式也及其简单便捷,不会对业务系统造成任何影响。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。