一种微服务架构下监控告警方法和系统转让专利

申请号 : CN202310560684.X

文献号 : CN116302862B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蔡永健唐海涛何栓康于洋顾丹鹏陈肖勇

申请人 : 浙江华东工程数字技术有限公司中国电建集团华东勘测设计研究院有限公司

摘要 :

本发明公开了一种微服务架构下监控告警方法和系统,所述方法包括:采集微服务系统运行时所关联的网络设备硬件层的运行状态数据、微服务系统运行时的服务器操作系统层的资源使用数据、微服务系统的微服务组件运行时的状态数据和调用链数据,以及,微服务应用系统层的访问响应数据;将采集的数据基于预设数据过滤模式进行清洗并存储,其中,清洗后的数据至少包括含有特征值的数据、非20XHTTP状态码信息、Warning信息和ERROR信息;对存储的数据依次基于特殊字符判定、状态码和调用链宽度搜索匹配进行异常监控信息分析,判定异常节点,并进行告警通知。本发明提供了四位一体监控告警方法,可进一步提升微服务系统监控告警能力。

权利要求 :

1.一种微服务架构下监控告警方法,其特征在于,包括:

采集微服务系统运行时所关联的网络设备硬件层的运行状态数据,具体包括:通过SNMP协议获取网络设备中的流量数据和通过HTTP协议获取安全防护设备中的拦截数据,其中,所述网络设备中的流量数据至少包括交换机、路由器的端口进流量和端口出流量,所述安全防护设备中的拦截数据至少包括请求方法、请求URL、匹配字段MatchData和拦截信息;

采集微服务系统运行时的服务器操作系统层的资源使用数据,具体包括:在微服务系统的每台服务器上部署运行数据采集器,实时获取服务器操作系统层的资源使用数据,至少包括服务器主机名称、设备UUID、物理地址、CPU型号、CPU的使用率、内存使用率、磁盘使用率和网络吞吐量;

采集微服务系统的微服务组件运行时的状态数据和调用链数据,具体包括:基于嵌入式SDK埋点的方式,获取微服务组件调用链数据,以及采用非侵入式探针的方式获取微服务组件运行过程中所使用的CPU、内存、磁盘和网络流量;

以及,采集微服务应用系统层的访问响应数据,具体包括;基于ICMP和HTTP协议实时对在线的微服务业务系统进行监控,通过wget及curl命令方式获取网页首页index.html的内容,并通过title字段判断网面是否正常;

将采集的数据基于预设数据过滤模式进行清洗并存储,其中,清洗后的数据至少包括含有特征值的数据、非20XHTTP状态码信息、Warning信息和ERROR信息;

对存储的数据依次基于特殊字符判定、状态码和调用链宽度搜索匹配进行异常监控信息分析,判定异常节点,并进行告警通知。

2.根据权利要求1所述的一种微服务架构下监控告警方法,其特征在于,对存储的数据基于特殊字符判定进行异常监控信息分析,具体包括:实时监测如下异常信息:

网络设备硬件层中设备断连的特征值;

服务器操作系统层资源剩余占比率的Warning信息;

PING请求指令的返回值为“请求超时”的特征值;

TELNET请求指令的返回值为“无法打开到主机的连接”或者“连接失败”的特征值或ERROR信息;

若监测到上述任一异常信息,则判定异常并确定异常节点,否则转入状态码分析。

3.根据权利要求2所述的一种微服务架构下监控告警方法,其特征在于,对存储的数据基于状态码进行异常监控信息分析,具体包括:判断存储的数据是否包括非20X HTTP状态码信息,

若包括非20X HTTP状态码信息且该状态码信息为预设异常状态码信息,则判定异常并告警,否则转入调用链宽度搜索匹配分析。

4.根据权利要求3所述的一种微服务架构下监控告警方法,其特征在于,根据预设异常状态码信息判定异常并确定异常节点具体包括:若异常状态码信息为401,则遍历查询各微服务组件与数据库的连通性信息,获取异常信息;判断异常信息中是否包括数据库不可达或者统一认证AD域不可达,若不包括数据库不可达或者统一认证AD域不可达,则判断用户密码输入错误,否则,将分别对应数据库不可达或者统一认证AD域不可达的异常信息进行告警通知;

若异常状态码信息为404,则判定发生网站页面丢失,将对应URL作为告警信息进行告警通知;

若异常状态码信息为491或493,则判定请求被安全设备拦截,进行告警通知;

若异常状态码信息为5XX,则判定系统服务端错误,进行告警通知。

5.根据权利要求3所述的一种微服务架构下监控告警方法,其特征在于,对存储的数据基于调用链宽度搜索匹配进行异常监控信息分析,具体包括:建立以服务注册发现及配置中心、微服务、中间件、数据库为节点,具有通信关系的服务为边的有向图;

根据Warning信息和ERROR信息,获取错误节点的节点名称;

以错误节点为根节点进行宽度搜索,递归搜索该错误节点的所有关联节点,通过如下方式匹配告警信息:基于该错误节点的Warning信息或ERROR信息的时间戳,匹配该时间戳前若干秒的日志信息,如果出现与所述Warning信息或ERROR信息匹配的值,则将对应的节点信息写入至结果列表中;当队列为空时,退出搜索,并将结果列表进行告警通知。

6.根据权利要求3‑5任一项所述的一种微服务架构下监控告警方法,其特征在于,将采集的数据基于预设数据过滤模式进行清洗具体包括:基于预设关键字和异常状态码信息对采集的数据进行过滤,所述预设关键字至少包括“不可达”、“连接超时”、“Exception”、“Warning”和“ERROR”;所述预设异常状态码信息至少包括401、404、491、493或5XX。

7.一种微服务架构下监控告警系统,用于实现如权利要求1‑6任一项所述的方法,其特征在于,包括高可用数据库、监控信息收集模块、数据分析模块和实时告警模块;

所述监控信息收集模块用于采集微服务系统运行时所关联的网络设备硬件层的运行状态数据、微服务系统运行时的服务器操作系统层的资源使用数据、微服务系统的微服务组件运行时的状态数据和调用链数据,以及,微服务应用系统层的访问响应数据;

所述高可用数据库包括高可用关系型数据库和高可用时序数据库,所述高可用关系型数据用于存储服务器集群信息、微服务系统组件的关联关系、微服务组件基本信息、微服务组件运行与服务器的关联信息和联系人信息,所述高可用时序数据库用于存储清洗后的数据;

所述数据分析模块用于对存储的数据进行异常监控信息分析,判定异常节点,并生成告警信息;

所述实时告警模块用于基于数据分析模块的分析结果,进行分析建议和多模式告警消息推送。

说明书 :

一种微服务架构下监控告警方法和系统

技术领域

[0001] 本发明涉及微服务系统监控告警领域,尤其涉及一种微服务架构下监控告警方法和系统。

背景技术

[0002] 微服务架构是基于分布式的系统,由于分布式系统是跨进程、跨网络的调用,构建分布式系统必然会带来额外的开销,受网络延迟和带宽的影响比较大。由于高度依赖于网络状况,任何一次的远程调用都有可能失败,随着服务的增多还会出现更多的潜在故障点。因此,如何提高系统的可靠性、降低因网络引起的故障率,是系统构建的一大挑战。由此可见,监控在微服务过程中的重要性是不言而喻的。
[0003] 在传统微服务监控中,往往都是对微服务系统中各微服务、调用链等进行监控,忽略了微服务运行时所处物理环境、用户交互方向的监控,导致无法实现针对微服务系统的全面监控,难以进一步提升微服务系统的可靠性。

发明内容

[0004] 本发明为了克服以上技术的不足,提供了一种从网络设备硬件层、服务器操作系统层、微服务系统服务层、微服务系统应用层的四位一体监控告警方法,可进一步提升微服务系统监控告警能力。
[0005] 本发明克服其技术问题所采用的技术方案是:
[0006] 本发明的第一方面提供一种微服务架构下监控告警方法,包括:
[0007] 采集微服务系统运行时所关联的网络设备硬件层的运行状态数据、微服务系统运行时的服务器操作系统层的资源使用数据、微服务系统的微服务组件运行时的状态数据和调用链数据,以及,微服务应用系统层的访问响应数据;
[0008] 将采集的数据基于预设数据过滤模式进行清洗并存储,其中,清洗后的数据至少包括含有特征值的数据、非20XHTTP状态码信息、Warning信息和ERROR信息;
[0009] 对存储的数据依次基于特殊字符判定、状态码和调用链宽度搜索匹配进行异常监控信息分析,判定异常节点,并进行告警通知。
[0010] 进一步的,对存储的数据基于特殊字符判定进行异常监控信息分析,具体包括:
[0011] 实时监测如下异常信息:
[0012] 网络设备硬件层中设备断连的特征值;
[0013] 服务器操作系统层资源剩余占比率的Warning信息;
[0014] PING请求指令的返回值为“请求超时”的特征值;
[0015] TELNET请求指令的返回值为“无法打开到主机的连接”或者“连接失败”的特征值或ERROR信息;
[0016] 若监测到上述任一异常信息,则判定异常并确定异常节点,否则转入状态码分析。
[0017] 进一步的,对存储的数据基于状态码进行异常监控信息分析,具体包括:
[0018] 判断存储的数据是否包括非20X HTTP状态码信息,
[0019] 若包括非20X HTTP状态码信息且该状态码信息为预设异常状态码信息,则判定异常并告警,否则转入调用链宽度搜索匹配分析。
[0020] 进一步的,根据预设异常状态码信息判定异常并确定异常节点具体包括:
[0021] 若异常状态码信息为401,则遍历查询各微服务组件与数据库的连通性信息,获取异常信息;判断异常信息中是否包括数据库不可达或者统一认证AD域不可达,若不包括数据库不可达或者统一认证AD域不可达,则判断用户密码输入错误,否则,将分别对应数据库不可达或者统一认证AD域不可达的异常信息进行告警通知;
[0022] 若异常状态码信息为404,则判定发生网站页面丢失,将对应URL作为告警信息进行告警通知;
[0023] 若异常状态码信息为491或493,则判定请求被安全设备拦截,进行告警通知;
[0024] 若异常状态码信息为5XX,则判定系统服务端错误,进行告警通知。
[0025] 进一步的,对存储的数据基于调用链宽度搜索匹配进行异常监控信息分析,具体包括:
[0026] 建立以服务注册发现及配置中心、微服务、中间件、数据库为节点,具有通信关系的服务为边的有向图;
[0027] 根据Warning信息和ERROR信息,获取错误节点的节点名称;
[0028] 以错误节点为根节点进行宽度搜索,递归搜索该错误节点的所有关联节点,通过如下方式匹配告警信息:
[0029] 基于该错误节点的Warning信息或ERROR信息的时间戳,匹配该时间戳前若干秒的日志信息,如果出现与所述Warning信息或ERROR信息匹配的值,则将对应的节点信息写入至结果列表中;当队列为空时,退出搜索,并将结果列表进行告警通知。
[0030] 进一步的,所述的采集微服务系统运行时所关联的网络设备硬件层的运行状态数据,具体包括:
[0031] 通过SNMP协议获取网络设备中的流量数据和通过HTTP协议获取安全防护设备中的拦截数据;
[0032] 其中,所述网络设备中的流量数据至少包括交换机、路由器的端口进流量和端口出流量,所述安全防护设备中的拦截数据至少包括请求方法、请求URL、匹配字段MatchData和拦截信息。
[0033] 进一步的,所述的采集微服务运行时的服务器操作系统层的资源使用数据,具体包括:
[0034] 在微服务系统的每台服务器上部署运行数据采集器,实时获取服务器操作系统层的资源使用数据,至少包括服务器主机名称、设备UUID、物理地址、CPU型号、CPU的使用率、内存使用率、磁盘使用率和网络吞吐量。
[0035] 进一步的,所述的采集微服务系统的微服务组件运行时的状态数据和调用链数据,具体包括:
[0036] 基于嵌入式SDK埋点的方式,获取微服务组件调用链数据,以及采用非侵入式探针的方式获取微服务组件运行过程中所使用的CPU、内存、磁盘和网络流量。
[0037] 进一步的,所述的采集微服务系统应用层的访问响应数据,具体包括:
[0038] 基于ICMP和HTTP协议实时对在线的微服务业务系统进行监控;
[0039] 通过wget及curl命令方式获取网页首页index.html的内容,并通过title字段判断网面是否正常。
[0040] 进一步的,将将采集的数据基于预设数据过滤模式进行清洗具体包括:
[0041] 基于预设关键字和异常状态码信息对采集的数据进行过滤,所述预设关键字至少包括“不可达”、“连接超时”、“Exception”、“Warning”和“ERROR”;所述预设异常状态码信息至少包括401、404、491、493或5XX。
[0042] 本发明的第二方面还提供一种微服务架构下监控告警系统,用于实现如上述第一方面所述的方法,包括高可用数据库、监控信息收集模块、数据分析模块和实时告警模块;
[0043] 所述监控信息收集模块用于采集微服务系统运行时所关联的网络设备硬件层的运行状态数据、微服务系统运行时的服务器操作系统层的资源使用数据、微服务系统的微服务组件运行时的状态数据和调用链数据,以及,微服务应用系统层的访问响应数据;
[0044] 所述高可用数据库包括高可用关系型数据库和高可用时序数据库,所述高可用关系型数据用于存储服务器集群信息、微服务系统组件的关联关系、微服务组件基本信息、微服务组件运行与服务器的关联信息和联系人信息,所述高可用时序数据库用于存储清洗后的数据;
[0045] 所述数据分析模块用于对存储的数据进行异常监控信息分析,判定异常节点,并生成告警信息;
[0046] 所述实时告警模块用于基于数据分析模块的分析结果,进行分析建议和多模式告警消息推送。
[0047] 本发明的有益效果是:
[0048] 1、能够实现网络设备硬件层、服务器操作系统层、微服务系统服务层、微服务应用系统层的四位一体监控告警能力。
[0049] 2、实现在网络及安全设备监控告警能力,在服务器操作系统层面包括CPU、内存、磁盘、I\O资源使用的情况的监控和预警,在微服务系统各组件间的连通性、健康状况的监控和告警能力,同时在微服务系统应用层连通性上监控告警的能力。
[0050] 3、本发明能够实现微服务系统故障点排错及修复建议,在出现告警信息时,通过对报错信息的特性进行分析,采用特殊字符判定算法、状态码分析算法、调用链宽度搜索匹配算法来确定故障节点,减轻技术人员问题排查的难度和节省时间。
[0051] 4、对微服务治理提供优化建议,通过对告警信息及修复方案的数据持久化处理,对时间间隔内频繁出现的告警进行统计,对微服务系统的治理,包括服务的弹性伸缩、网络带宽的调节提供优化建议。

附图说明

[0052] 图1为本发明实施例的一种微服务架构所应用的系统示意图;
[0053] 图2为本发明一种微服务架构下监控告警方法的实施例的流程示意图;
[0054] 图3为本发明微服务架构下监控告警方法的实施例的数据获取示意图;
[0055] 图4为本发明实施例中异常监控信息分析流程示意图;
[0056] 图5为发明实施例中宽度搜索匹配算法示意图;
[0057] 图6为发明实施例中微服务节点存储转换图;
[0058] 图7为本发明实施例的一种微服务架构下监控告警系统的结构框图。

具体实施方式

[0059] 为了进一步理解本发明,首先对本发明提到的部分术语进行解释:
[0060] 微服务架构:是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。相比于传统的单体大应用,微服务架构对单体应用进行解耦,将应用程序分解成数个或者数十个的功能微服务,提供了灵活的服务支持能力。
[0061] 微服务系统:指基于微服务架构进行开发的应用系统。
[0062] 微服务组件:往往包括配置及注册中心、多类中间件、各类数据库、API网关、各个功能模块形成的微型服务。
[0063] 侵入式SDK埋点:通过添加代码、配置拦截器等方式实现数据采集。
[0064] 非侵入式探针:通过修改字节码的方式实现数据采集。
[0065] Kubernetes:微服务系统上线时,往往采用容器化方式进行封装,对于容器的编排,业内常用Kubernetes进行,用于微服务系统部署及治理。
[0066] 为了便于本领域人员更好的理解本发明,下面结合附图和具体实施例对本发明做进一步详细说明,下述仅是示例性的不限定本发明的保护范围。
[0067] 如图1所示,为一种微服务架构所应用的系统示意图,微服务系统上线后,为了确保安全,都会在网络出口处加上防火墙等安全防护设备,同时为了确保微服务系统的高可用基本上都采用分布式集群及微服务组件多副本部署的模式。当防火墙因某些原因拦截了系统访问请求后,在用户客户端上的现象是系统无法访问,因为网站无法正常返回数据。现有情况下,当接收到用户反馈后,运维工程师通常会直接排查微服务系统的问题,而忽略网络设备硬件层面的问题,从而在花费很多人力、物力、精力后,还是无法快速定位问题。本发明提供的网络硬件层、服务器操作系统层、微服务系统服务层、微服务应用系统层的四位一体监控告警能力,能够大大提升用户体验,快速定位和修复问题,实现用户问题反馈的快速闭环。
[0068] 下面以本发明的一种微服务架构下监控告警方法应用在图1所示的系统中为例,对如图2所示的本发明的一种微服务架构下监控告警方法进行说明。
[0069] 本实施例示出的一种微服务架构下监控告警方法包括以下步骤:
[0070] 第一步,采集微服务系统运行时所关联的网络设备硬件层的运行状态数据、微服务系统运行时的服务器操作系统层的资源使用数据、微服务系统的微服务组件运行时的状态数据和调用链数据,以及,微服务应用系统层的访问响应数据。
[0071] 下面以图3所示为例,对采集网络硬件层、服务器操作系统层、微服务系统服务层、微服务应用系统层数据的具体方式进行说明。
[0072] 在一示出实例中,采集网络设备硬件层的运行状态数据,包括通过SNMP协议获取网络设备中的流量数据和通过HTTP协议获取安全防护设备中拦截数据。具体包括:
[0073] 通过SNMP协议获取不同网络设备中的流量数据,至少包括交换机、路由器、防火墙、AP、软路由等的端口进流量ifInOctets和端口出流量ifOutOctets。
[0074] 通过HTTP协议获取安全防护设备中的拦截数据,包括请求方法、请求URL、匹配字段MatchData和拦截信息等。
[0075] 例如,{‘request_url’:‘http://xxx.xx.xx/cmp‑smpuplad/uploadModelFile’,‘request_method’:‘PSOT’,‘MatchData’:‘CREATETABLESmUserInfo(……)’,‘type’:‘SQL注入攻击’}。
[0076] 在一示出实例中,通过埋点方式获取微服务运行时的服务器操作系统层的资源使用数据。具体包括:
[0077] 在微服务系统所运行服务器集群的每台服务器上部署运行一个数据收集器Agent。
[0078] 实时获取服务器操作系统所使用资源信息,采集包括服务器主机名称、设备UUID编号、物理地址、CPU型号、CPU过去1分钟使用率、CPU过去5分钟使用率、CPU过去15分钟使用率、内存使用率、磁盘使用率以及网络吞吐量的数据。
[0079] 在一示出实例中,通过侵入式SDK埋点和非侵入式探针结合的方式获取微服务组件运行时状态数据及调用链信息数据,具体步骤如下:
[0080] (1)侵入式SDK埋点:通过SDK手动埋点,生成Trace,获取微服务调用链信息,包括请求响应时间和连通性,即在程序中加入数据过滤的代码获取自定义的数据信息。
[0081] (2)非侵入式探针方式:
[0082] 在本发明的一个实施例中,通过运行微服务系统所承载的编排调度集群Kubernetes,收集各微服务、中间件、内置虚拟网络连通性信息,至少包括微服务名称、cpu使用率、内存使用率、副本个数和通信端口信息。
[0083] 在本发明的另一个实施例中,通过在微服务组件启动时运行Agent的模式,获取字节码信息。
[0084] 在本发明的另一个实施例中,采用javaagent技术来实现非侵入式埋点。
[0085] 在本发明的一个实施例中,在微服务系统组件启动时运行‑javaagent或者运行时使用attach方式就可将探针包导入应用程序。
[0086] 在一示出实例中,通过连续请求的方法获取微服务应用系统层的访问响应数据,具体步骤如下:
[0087] 通过站点监控配置平台,收集微服务系统应用层通信信息,收集Web网站入口、服务注册发现及配置中心、API网关、中间件及数据库连通信息,记录HTTP状态码、响应时间、请求方法、URL信息。
[0088] 基于ICMP和HTTP协议对实时在线的业务系统进行监控,通过ping命令获取服务器的连通性状态,通过telnet命令确认端口的连通状态;通过wget及curl命令方式获取网页首页index.html的内容,并通过title字段判断网面是否正常。
[0089] 第二步,将采集的数据基于预设数据过滤模式进行清洗并存储。
[0090] 在一示出实例中,预设关键字至少包括“不可达”、“连接超时”、“Exception”、“Warning”和“ERROR”;预设异常状态码信息至少包括401、404、491、493或5XX。
[0091] 清洗后的数据至少包括含有特征值的数据、非20XHTTP状态码信息、Warning信息和ERROR信息,将其存入时序数据库Elasticsearch中,并完成数据持久化。
[0092] 第三步,如图4所示,对存储的数据依次基于特殊字符判定、状态码和调用链宽度搜索匹配进行异常监控信息分析,从而得到异常发生的节点。
[0093] 在一示出实例中,基于特殊字符判定进行异常监控信息分析具体包括:
[0094] 实时监测如下异常信息:
[0095] 网络设备硬件层中设备断连的特征值,包括connection refuse、connection timeout之类的关键字;
[0096] 服务器操作系统层资源剩余占比率的Warning信息,比如Free disk space is less than 10%;
[0097] PING请求指令的返回值为“请求超时”的特征值;
[0098] TELNET请求指令的返回值为“无法打开到主机的连接”或者“连接失败”的特征值或ERROR信息;
[0099] 若监测到上述任一告警或返回值信息,则判定异常并确定异常节点,否则转入状态码分析。
[0100] 在一示出实例中,对存储的数据基于状态码进行异常监控信息分析,具体包括以下步骤:
[0101] 判断存储的数据是否包括非20X HTTP状态码信息,若包括非20X HTTP状态码信息且该状态码信息为预设异常状态码信息,则判定异常并确定异常发生的节点,否则转入调用链宽度搜索匹配分析。
[0102] 具体的,本实施例中,预设异常状态码信息包括状态码为491(Request Pending)和493(Undecipherable)的告警信息、状态码为404的告警信息、状态码为401的告警信息以及状态码为5XX的告警消息。
[0103] 根据预设异常状态码信息判定异常并确定异常节点具体包括以下步骤:
[0104] 若异常状态码信息为401,则遍历查询各微服务组件与数据库的连通性信息,获取异常信息;判断异常信息中是否包括数据库不可达或者统一认证AD域不可达,若不包括数据库不可达或者统一认证AD域不可达,则判断用户密码输入错误,否则,将分别对应数据库不可达或者统一认证AD域不可达的异常信息进行告警通知;
[0105] 若异常状态码信息为404,则判定发生网站页面丢失,将对应URL作为告警信息进行告警通知;
[0106] 若异常状态码信息为491或493,则判定请求被安全设备拦截,进行告警通知;
[0107] 若异常状态码信息为5XX,则判定系统服务端端错误,进行告警通知。
[0108] 在一示出实例中,对存储的数据基于调用链宽度搜索匹配进行异常监控信息分析,具体包括以下步骤:
[0109] 对于微服务系统各服务间调用链的告警信息,采用宽度搜索匹配算法对调用链错误节点进行分析,如图5所示,具体步骤为:
[0110] 1)预先建立以服务注册发现及配置中心、各微服务、中间件、数据库为节点,具有通信关系的服务为边的有向图。
[0111] 在一个具体示例中,如图6所示,以微服务service_name作为节点名称,建立有向图。以图6所示的微服务应用为例,包括节点MicroService_1、MicroService_2、MicroService_3、MicroService_4、MicroService_5和MicroService_6”,服务网关Api_gateway,服务注册发现及配置中心Nacos,中间件kafka和rocketmq,数据库Ms1_db和Ms2_db。节点进行存储转换后的存储结构体为:{"service_name":"MicroService_1","
warning_info": "","warning_timestamp":"","links_service":[nacos,kafka,ms1_
db],"is_visited":false}。
[0112] 2)根据Warning信息和ERROR信息,基于service_name字段获取错误节点的节点名称。
[0113] 3)以错误节点为根节点进行宽度搜索,将错误节点加入到队列中,队首节点出队后,将此节点的is_visited标记为true,然后将关联节点links_service字段全部加入到队尾,其中当待加入节点的is_vistied为true时不加入队列。
[0114] 在一个具体示例中,如图6所示,假设最初出现告警信息的是MicroService_1节点,将MicroService_1节点加入对列中:
[0115] 当队列不为空一直循环。
[0116] ① 队首节点出队,即第一次循环中MicroService_1节点出队;
[0117] ② 队首节点的关联节点links_service字段的节点列表加入到队列中,即第一次循环MicroService_1关联节点links_service字段中的kafka、ms1_db、nacos加入到队列;
[0118] ③ 当前出队的节点is_visited变量标记为true,证明已经访问过。
[0119] 4)基于该错误节点的Warning信息或ERROR信息的时间戳,匹配该时间戳前3秒的日志信息,如果出现与Warning信息或ERROR信息匹配的值,则将对应的节点信息写入至结果列表中;当队列为空时,退出搜索,并将结果列表进行告警通知。
[0120] 由于服务间的通信速度很快,本实施例中通过回溯3秒告警信息来增加信息匹配的数据量,提高报警匹配的准确率。当出现匹配waring_info的值后,证明找到了问题节点,可以将其加入到结果列表中,与最初节点越近的节点,在结果列表中的优先级越高。
[0121] 需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
[0122] 本发明的另一个实施例为一种微服务架构下监控告警系统,用于实现上述实施例中的微服务架构下监控告警方法。如图7所示,其包括高可用数据库、监控信息收集模块、数据分析模块和实时告警模块。
[0123] 其中,监控信息收集模块用于采集微服务系统运行时所关联的网络设备硬件层的运行状态数据、微服务系统运行时的服务器操作系统层的资源使用数据、微服务系统的微服务组件运行时的状态数据和调用链数据,以及,微服务应用系统层的访问响应数据;
[0124] 高可用数据库包括高可用关系型数据库和高可用时序数据库,所述高可用关系型数据用于存储服务器集群信息、微服务系统组件的关联关系、微服务组件基本信息、微服务组件运行与服务器的关联信息和联系人信息,所述高可用时序数据库用于存储清洗后的数据;
[0125] 数据分析模块用于对存储的数据进行异常监控信息分析,判定异常节点,并生成告警信息;
[0126] 实时告警模块用于基于数据分析模块的分析结果,进行分析建议和多模式告警消息推送。
[0127] 在一些示例中,告警消息推送包括通过短信、邮件、钉钉等方式将告警信息和分析结果反馈至用户。比如:
[0128] (1)对于网络设备中设备断连的告警信息,第一时间通知至网络管理员;
[0129] (2)对于服务器操作系统层资源剩余占比率的告警信息,通知至服务器管理员调整资源量;
[0130] (3)对于PING请求指令的返回值为“请求超时”,通知服务器管理员服务器处于丢失IP状态或者宕机异常状态;
[0131] (4)对于TELNET请求指令的返回值为“无法打开到主机的连接”或者“连接失败”时,通知服务器管理员服务端口不可达;
[0132] (5)对于HTTP状态码为491(Request Pending)和493(Undecipherable)的告警信息将消息通知至安全管理员;
[0133] (6)对于状态码为404的告警信息,属于是网站页面丢失状况,将对应URL发送至研发及运维负责人排查网站的状态;
[0134] (7)对于状态码为401的告警信息,遍历并递归查询各微服务组件的连通性信息,判断告警信息中是否含有“数据库不可达”或者“统一认证AD域不可达”,若含有数据库不可达信息,将告警消息发送至研发及配置管理员;若统一认证AD域不可达,则将告警信息发送至AD域管理员和研发负责人;若无对应告警消息,则反馈用户是否输入有误的密码;
[0135] (8)对于状态码为50x的告警消息,属于系统server端错误,将告警日志发送至研发及运维负责人。
[0136] 需要说明的是,本发明提出的一种微服务架构下监控告警方法和系统,除了对于故障的排查,还可以对微服务治理提供优化建议。例如上午9:00‑10:00间流量处于尖峰时,系统压力比较大,需要扩容以满足需求,就可以提前启动多个微服务副本已应对压力,同样在压力减少时回收资源。
[0137] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0138] 专业人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。