一种基于springboot微服务的监控方法及系统与流程

文档序号:33506733发布日期:2023-03-18 02:20阅读:177来源:国知局
一种基于springboot微服务的监控方法及系统与流程

1.本发明涉及微服务及监控技术领域,具体为一种基于springboot微服务的监控方法及系统。


背景技术:

2.服务是一种软件开发技术-面向服务的体系结构(soa)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
3.现有技术中,每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于http的restful api)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错误和异常,我们只要盯住一个点,就可以快速定位和处理问题。
4.但是,在微服务的架构下,大部分功能模块都是单独部署运行的,彼此通过总线交互,都是无状态的服务。在大量微服务的背景下,缺乏有效快速评估微服务实例数量以及精准定位微服务实例异常的方法。


技术实现要素:

5.本发明的目的在于提供一种基于springboot微服务的监控方法及系统,实时监控微服务注册中心、微服务实例运行状态及微服务负载数据,并依据告警策略进行告警,以便对微服务伸缩做出决策和问题的精准定位。
6.为实现上述目的,本发明提供如下技术方案:一种基于springboot微服务的监控方法,该监控方法包括以下步骤:
7.通过调用nacos的接口,获取注册在注册中心的微服务实例数量及注册中心的性能指标,每个微服务实例基于sidecar的形式安装一个微服务实例监控数据采集器;
8.对采集的所有原始数据进行解析,并封装为object;
9.从数据预处理模块获取数据,对预处理模块解析后的数据进行清洗,筛选过滤出监控指标需要的数据;
10.从数据清洗模块获取纯净的数据,对数据进行统计;
11.对统计后的数据进行持久化操作,处理后的数据存储在influxdb数据库中;
12.通过用户设置的告警策略对监控的指标数据进行告警;
13.将监控的数据以图表的方式展示给用户,提供给用户对监控指标直观的状态。
14.优选的,通过调用nacos的接口,获取注册在注册中心的微服务实例数量及注册中心的性能指标时,具体操作步骤为:配置application.properties文件,将management.endpoints.web.exposure.include字段属性设置为*,暴漏监控数据;
15.在采集器中编写采集接口,使用http协议,启用定时任务,每隔一个时间段调用一
次nacos暴漏的metrics接口,获取所有监控数据;
16.过滤出需要的指标如:已注册实例的数量、已注册的微服务数量、nacos的cpu使用量、nacos的内存使用量。
17.优选的,每个微服务实例基于sidecar的形式安装一个微服务实例监控数据采集器时,具体操作步骤为:基于springboot项目的微服务应用,引入prometheus依赖,groupid:io.micrometer,artifactid:micrometer-registry-prometheus,scope:runtime;
18.暴漏监控接口给采集器,在配置文件application.yaml中增加以下配置,management.endpoint.metrics.enabled=true ,management.endpoints.web.exposure.include=* ,management.endpoint.prometheus.enabled=true,management.metrics.export.prometheus.enabled=true。
19.优选的,对采集的所有原始数据进行解析,并封装为object时,作为采集模块下游流程,数据预处理模块从采集模块获取文本形式数据,用正则表达式匹配解析接口url、接口状态码、接口请求量、接口响应时间等信息,封装为代码对象。
20.优选的,从数据清洗模块获取纯净的数据,对数据进行统计时,对于计数类指标promethues组件接口获取的数据为微服务启动到请求当前时间的累计量,采集器将每次请求promethues接口采集的数据缓存在内存中,当前时间采集的数据与上次请求的数据之差即为本次周期内的数据,周期即为定时任务时间间隔。
21.一种基于springboot微服务的监控系统,该系统由采集模块、数据预处理模块、数据清洗模块、统计模块、存储模块、告警模块以及显示模块构成;
22.采集模块,通过调用nacos的接口,获取注册在注册中心的微服务实例数量及注册中心的性能指标,每个微服务实例基于sidecar的形式安装一个微服务实例监控数据采集器;
23.数据预处理模块,对采集的所有原始数据进行解析,并封装为object;
24.数据清洗模块,从数据预处理模块获取数据,对预处理模块解析后的数据进行清洗,筛选过滤出监控指标需要的数据;
25.统计模块,从数据清洗模块获取纯净的数据,对数据进行统计;
26.存储模块,对统计后的数据进行持久化操作,处理后的数据存储在influxdb数据库中;
27.告警模块,通过用户设置的告警策略对监控的指标数据进行告警;
28.显示模块,将监控的数据以图表的方式展示给用户,提供给用户对监控指标直观的状态。
29.优选的,所述采集模块中,通过调用nacos的接口,获取注册在注册中心的微服务实例数量及注册中心的性能指标时,具体操作步骤为:配置application.properties文件,将management.endpoints.web.exposure.include字段属性设置为*,暴漏监控数据;
30.在采集器中编写采集接口,使用http协议,启用定时任务,每隔一个时间段调用一次nacos暴漏的metrics接口,获取所有监控数据;
31.过滤出需要的指标如:已注册实例的数量、已注册的微服务数量、nacos的cpu使用量、nacos的内存使用量。
32.优选的,所述采集模块中,每个微服务实例基于sidecar的形式安装一个微服务实例监控数据采集器时,具体操作步骤为:基于springboot项目的微服务应用,引入prometheus依赖,groupid:io.micrometer,artifactid:micrometer-registry-prometheus,scope:runtime;
33.暴漏监控接口给采集器,在配置文件application.yaml中增加以下配置,management.endpoint.metrics.enabled=true ,management.endpoints.web.exposure.include=* ,management.endpoint.prometheus.enabled=true ,management.metrics.export.prometheus.enabled=true。
34.优选的,所述数据预处理模块中,对采集的所有原始数据进行解析,并封装为object时,作为采集模块下游流程,数据预处理模块从采集模块获取文本形式数据,用正则表达式匹配解析接口url、接口状态码、接口请求量、接口响应时间等信息,封装为代码对象。
35.优选的,所述统计模块中,从数据清洗模块获取纯净的数据,对数据进行统计时,对于计数类指标promethues组件接口获取的数据为微服务启动到请求当前时间的累计量,采集器将每次请求promethues接口采集的数据缓存在内存中,当前时间采集的数据与上次请求的数据之差即为本次周期内的数据,周期即为定时任务时间间隔。
36.与现有技术相比,本发明的有益效果是:
37.本发明提出的基于springboot微服务的监控方法及系统通过监控注册中心实时动态获取微服务的服务实例数量等指标信息,自动感知微服务实例;通过promethues实时动态获取微服务的请求量等指标信息,自动感知请求量,用户无需手动频繁查询微服务指标,提升力微服务监控的便利性,降低了人工成本;采集器与微服务实例运行在相同的容器组中的不同容器,相同的容器组网络互通,减少了资源占用。
附图说明
38.图1为本发明方法流程图;
39.图2为本发明系统框图。
具体实施方式
40.为了使本发明的目的、技术方案进行清楚、完整地描述,及优点更加清楚明白,以下结合附图对本发明实施例进行进一步详细说明。应当理解,此处所描述的具体实施例是本发明一部分实施例,而不是全部的实施例,仅仅用以解释本发明实施例,并不用于限定本发明实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.实施例一
42.请参阅图1,本发明提供一种技术方案:一种基于springboot微服务的监控方法,该监控方法包括以下步骤:
43.通过调用nacos的接口,获取注册在注册中心的微服务实例数量及注册中心的性能指标,具体操作步骤为:配置application.properties文件,将management.endpoints.web.exposure.include字段属性设置为*,暴漏监控数据;在采集器中编写采集接口,使用
http协议,启用定时任务,每隔一个时间段调用一次nacos暴漏的metrics接口,获取所有监控数据;过滤出需要的指标如:已注册实例的数量、已注册的微服务数量、nacos的cpu使用量、nacos的内存使用量;
44.每个微服务实例基于sidecar的形式安装一个微服务实例监控数据采集器;具体操作步骤为:基于springboot项目的微服务应用,引入prometheus依赖,groupid:io.micrometer,artifactid:micrometer-registry-prometheus,scope:runtime;暴漏监控接口给采集器,在配置文件application.yaml中增加以下配置,management.endpoint.metrics.enabled=true ,management.endpoints.web.exposure.include=* ,management.endpoint.prometheus.enabled=true ,management.metrics.export.prometheus.enabled=true;
45.对采集的所有原始数据进行解析,并封装为object;作为采集模块下游流程,数据预处理模块从采集模块获取文本形式数据,用正则表达式匹配解析接口url、接口状态码、接口请求量、接口响应时间等信息,封装为代码对象;
46.从数据预处理模块获取数据,对预处理模块解析后的数据进行清洗,筛选过滤出监控指标需要的数据;
47.从数据清洗模块获取纯净的数据,对数据进行统计;对于计数类指标promethues组件接口获取的数据为微服务启动到请求当前时间的累计量,采集器将每次请求promethues接口采集的数据缓存在内存中,当前时间采集的数据与上次请求的数据之差即为本次周期内的数据,周期即为定时任务时间间隔;
48.对统计后的数据进行持久化操作,处理后的数据存储在influxdb数据库中;
49.通过用户设置的告警策略对监控的指标数据进行告警;
50.将监控的数据以图表的方式展示给用户,提供给用户对监控指标直观的状态。
51.实施例二
52.参照附图2,一种基于springboot微服务的监控系统,该系统由采集模块、数据预处理模块、数据清洗模块、统计模块、存储模块、告警模块以及显示模块构成。
53.采集模块分为两种采集器,分别是注册中心采集器和微服务实例采集器。
54.注册中心采集器,注册中心采集器通过调用nacos的接口,获取注册在注册中心的微服务实例数量及注册中心的性能指标。具体操作步骤为:1.配置application.properties文件,将management.endpoints.web.exposure.include字段属性设置为*,暴漏监控数据;2.在采集器中编写采集接口,使用http协议,启用定时任务,每隔一个时间段调用一次nacos暴漏的metrics接口,获取所有监控数据;3.过滤出需要的指标如:已注册实例的数量、已注册的微服务数量、nacos的cpu使用量、nacos的内存使用量等。
55.微服务实例采集器,每个微服务实例基于sidecar的形式安装一个微服务实例监控数据采集器,即同一个pod内,运行两个容器,一个是微服务业务容器,用于提供业务服务;另一个是微服务实例监控数据采集器,该采集器调用微服务业务容器采集监控数据。具体操作步骤为:1.基于springboot项目的微服务应用,引入prometheus依赖,groupid:io.micrometer,artifactid:micrometer-registry-prometheus,scope:runtime;2.暴漏监控接口给采集器,在配置文件application.yaml中增加以下配置,management.endpoi
nt.metrics.enabled=true ,management.endpoints.web.exposure.include=* ,management.endpoint.prometheus.enabled=true ,management.metrics.export.prometheus.enabled=true;微服务实例监控数据采集器调用promethues接口,获取该微服务实例的http请求数据,例如业务接口请求量、业务接口响应时间、业务接口不同状态码的数量及jvm的性能数据。采集器采用定时任务异步进程的方式进行采集,定时时间通过配置文件按照需求设置。
56.数据预处理模块,promethues接口查询的监控数据为字符串格式,通过数据预处理模块,对采集的所有原始数据进行解析,并封装为object,供后续流程使用。具体操作步骤为:1.作为采集模块下游流程,数据预处理模块从采集模块获取文本形式数据,用正则表达式匹配解析接口url、接口状态码、接口请求量、接口响应时间等信息,封装为代码对象。
57.数据清洗模块,作为数据预处理模块下游模块,从数据预处理模块获取数据,对预处理模块解析后的数据进行清洗,筛选过滤出监控指标需要的数据,包括请求量,响应时间,响应状态码,请求方法等,丢弃垃圾数据。
58.统计模块,作为数据清洗模块下游模块,从数据清洗模块获取纯净的数据,对数据进行统计。对于计数类指标promethues组件接口获取的数据为微服务启动到请求当前时间的累计量,采集器将每次请求promethues接口采集的数据缓存在内存中,当前时间采集的数据与上次请求的数据之差即为本次周期内的数据,周期即为定时任务时间间隔,采用此方式采集数据,避免了微服务重启后指标数据有误差的现象,并且因首次采集数据无基准数据,所以首次采集的数据不进行存储操作。
59.存储模块,对统计后的数据进行持久化操作,处理后的数据存储在influxdb数据库中。influxdb是一个由influxdata开发的开源时序型数据。它由go写成,着力于高性能地查询与存储时序型数据。influxdb默认时间精度为纳秒,参考采集周期进行调整精度,如采集周期为分钟级别,将influxdb存储进度设置为分钟即可,以降低存储容量和减少查询时间。不同维度的监控数据存储到各自的measurement,如:微服务级别的数据measurement为service,微服务接口级别的数据measurement为api。并且根据业务需求,对数据存储周期进行数据老化配置,influxdb的过期策略为retention。如业务需求为用户只关注6个月内的监控指标,则将influxdb的过期策略配置为4320h即可。
60.告警模块,用户可通过告警模块自定义告警策略,告警模块通过用户设置的告警策略对监控的指标数据进行告警,告警方式包括邮件、手机短信、微信消息等方式告知用户。告警模块采用定时任务的方式,按照用户设置的告警周期,从数据库中查询告警指标,监测告警指标是否达到告警的警戒值,若达到告警警戒值,则触发告警,通知用户。
61.显示模块,将监控的数据以图表的方式展示给用户,提供给用户对监控指标直观的状态。包括概览和详情,其中概览数据为用户选择的查看时间周期内的累计值,详情为横轴为时间序列的监控指标时序走势图,用户可直观的获取到监控指标在时间维度上的量化数据。
62.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1