基于图数据结构的网络链路分析方法与流程

文档序号:23857066发布日期:2021-02-05 15:27阅读:218来源:国知局
基于图数据结构的网络链路分析方法与流程

[0001]
本发明涉及计算机和网络产品的软件技术领域,是一种基于图数据结构的网络链路分析方法。


背景技术:

[0002]
随着互联网行业的快速发展,带动互联网技术的快速推广,在互联网技术的引领下,各行各业都在向互联网化进行转型;行业转型的过程中,依赖数字化技术的全面提升,在整个互联网技术的浪潮下,云计算、大数据、人工智能等各类技术也已经全面推广和应用。
[0003]
各类技术的大面积推广和使用,加速了x86服务器取代小型机的步伐,在云计算的加持下,各类科技公司都在向混合云基础设施进行演进,加快了x86服务器的快速推广和部署。由于x86服务器的大面积使用,配合微服务软件架构的升级,虽然在技术层面提供了灵活、可扩展的能力,但在运维层面也加大了运维人员的压力,传统应用系统可能只会部署在几台或几十台x86服务器上,但微服务架构或互联网架构下,应用系统可能会部署在上千或上万台x86服务器上,这样就对应用系统问题定位与排查提出了新的挑战。
[0004]
当前为了更好的分析和定位应用系统相关问题,基于soa( service-oriented architecture,面向服务的结构)或微服务架构下的链路跟踪可以采用skywalking或pinpoint等基于服务级的调用链跟踪技术,以业务的角度展示、分析应用系统内部的调用关系;但由于大部分公司内部存在大量历史遗留的系统,这类系统无法采用新的框架或架构进行升级,需要从运维层面,提供一种通用的方法,用于分析应用间的调用关系,监控和展示应用的可用性。
[0005]
不同的应用系统采用不同的语言进行开发,无论是基于java、c、c++或python语言开发的应用系统,最终都是以进程的方式运行在操作系统内;由于应用系统相互之间需要进行通讯,所以应用系统在启动时,会在操作系统内基于tcp(transmission control protocol,传输控制协议)或udp(user datagram protocol,用户数据报协议)与外部的访问者建立基于socket的通讯,这样就可以基于操作系统的socket链接状态,反映应用系统间的网络链路状态。


技术实现要素:

[0006]
本发明的目的旨在提出一种基于图数据结构的网络链路分析方法,实现快速的网络链路拓扑展示及分析的方法。
[0007]
本申请提供了一种,所述方法包括:业务数据存储模块将服务器的信息以及应用服务的基础信息保存至关系型数据库中,所述服务器为x86服务器或虚拟服务器;所述关系型数据库为mysql,将应用系统涉及到的各类中间件及外部服务依赖的服务器信息,通过可视化界面统一保存至所述mysql数据库中,存储的服务器信息用于前端页面进行信息展示以及链路数据采集模块进行批量信息采
集进行使用;按照应用系统架构,将各类服务器以应用维度进行划分和分类,以为链路采集提供基础的输入条件;由定时任务模块定时触发链路数据采集模块进行链路数据的收集,所述定时任务模块具备定时任务的可持久化、可分布式、可配置化的特点,以使使用者通过前端可视化界面动态调整链路数据采集周期,依据线上环境进行动态调整;链路数据采集模块通过执行netstat或ss命令进行链路数据的采集,将采集到的链路数据按照预设格式推送至消息队列,在存在多条记录时,通过竖线进行分割;链路数据处理模块通过异步和/或多线程方式消费所述消息队列中的链路数据;链路数据转储模块对所述链路数据进行保存,并按照图数据格式更新图数据结构缓存中的链路及链路关系信息;所述链路数据转储模块,按照图数据结构,将服务器数据和应用服务数据作为图数据结构中的顶点,网络链路关系作为图数据结构中的边,将链路数据缓存至图数据结构缓存中;具体的,检查链路数据的服务器及应用服务信息是否在redisgraph图数据结构缓存中存在,如不存在,则通过cypher图数据库声明式语言,将服务器数据和应用服务数据作为图的顶点更新至redisgraph缓存中,建立服务器与应用服务的边结构,以按照应用服务的维度,对服务器进行汇总;将服务器间的网络链路关系数据,按照redisgraph缓存内的边结构格式进行缓存写入;链路数据分析模块将所述图数据结构缓存中的链路数据按照拓扑展示和分析的需求进行检索和展示,网络链路拓扑展示采用vue.js前端框架进行构建,由所述链路数据分析模块,通过cypher的检索语法,从redisgraph内的链路数据中,检索用户关心的应用服务网络链路拓扑结构;cypher检索语句天然支持跨多级的图拓扑检索,以展示应用服务的多层级网络链路拓扑结构。
[0008]
可选的,所述服务器的信息包括主机名、操作系统、互联网协议ip地址、安全外壳协议ssh连接账户、ssh连接密码、执行账户、执行账户密码中的至少一种。
[0009]
可选的,所述应用服务的基础信息包括应用服务名称和/或服务端口。
[0010]
可选的,所述定时任务模块通过java的quartz实现。
[0011]
可选的,所述链路数据采集模块通过执行netstat或ss命令进行链路数据的采集,包括:在目标服务器上,所述链路数据采集模块通过ssh连接的方式,批量执行netstat或ss命令,实时采集所述目标服务器内端口的网络链路访问状态。
[0012]
可选的,所述预设格式为:src_ip地址_端口,dst_ip地址_端口。
[0013]
可选的,所述链路数据处理模块,通过异步和/或多线程的方式从所述消息队列中消费链路数据,对从所述消息队列中获取的链路数据的源ip、源端口、目标ip、目标端口与所述关系型数据库中存储的服务器ip地址和应用服务的端口信息进行校验,过滤非关注ip地址,关联服务器信息及应用服务器信息,对链路数据进行封装。
[0014]
可选的,所述链路数据分析模块,通过预设的图检索语法按照分析检索的条件从所述图数据结构缓存中加载网络链路拓扑结构,同时将服务器或应用服务的信息通过所述关系型数据库关联加载,对网络链路拓扑数据进行组装,提交至前端页面进行拓扑展示和检索。
[0015]
通过业务数据存储模块将服务器的信息以及应用服务的基础信息保存至关系型
数据库中,所述服务器为x86服务器或虚拟服务器;由定时任务模块定时触发链路数据采集模块进行链路数据的收集;链路数据采集模块通过执行netstat或ss命令进行链路数据的采集,将采集到的链路数据按照预设格式推送至消息队列;链路数据处理模块通过异步和/或多线程方式消费所述消息队列中的链路数据;链路数据转储模块对所述链路数据进行保存,并按照图数据格式更新图数据结构缓存中的链路及链路关系信息;链路数据分析模块将所述图数据结构缓存中的链路数据按照拓扑展示和分析的需求进行检索和展示。也即考虑了网络链路基于图的关系,通过图数据结构更快、更方便的对多级网络链路节点进行分析和定位,改变了基于关系型数据库的多级链路检索的低效性,整体提高了网络链路实时分析的有效性和及时性。
[0016]
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
[0017]
图1是本发明的基于图数据结构的网络链路分析方法的流程图。
[0018]
图2是本发明的实施例提供的基于图数据结构的网络链路分析方法的流程图。
具体实施方式
[0019]
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖 直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。 在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。 此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间 未构成冲突就可以相互结合。
[0020]
请参考图1,其示出了本申请一个实施例提供的基于图数据结构的网络链路分析方法的流程图,如图1所示,所述方法包括:步骤101,业务数据存储模块将服务器的信息以及应用服务的基础信息保存至关系型数据库中,所述服务器为x86服务器或虚拟服务器;所述服务器的信息包括主机名、操作系统、ip(internet protocol address,互联网协议地址)地址、ssh(secure shell,安全外壳协议)连接账户、ssh连接密码、执行账户、执行账户密码中的至少一种。
[0021]
所述应用服务的基础信息包括应用服务名称和/或服务端口。
[0022]
如图2所示,关系型数据库可以为mysql(关系型数据库管理系统)。结合图2,在步
骤201中,将应用系统涉及到的各类中间件及外部服务依赖的服务器信息,通过可视化界面统一保存至mysql数据库中,存储的服务器信息不限于主机名、操作系统、ip地址、ssh连接账户、ssh连接密码、执行账户、执行账户密码,主要用于前端页面进行信息展示以及链路数据采集模块进行批量信息采集进行使用;按照应用系统架构,将各类服务器以应用维度进行划分和分类,比如某几台服务器中同时运行着apache服务,则将服务器归类为apache模块服务,同时维护apache服务监控的端口信息,为链路采集提供基础的输入条件。
[0023]
步骤102,由定时任务模块定时触发链路数据采集模块进行链路数据的收集;结合图2,定时任务模块通过java(计算机编程语言)的quartz实现。具备定时任务的可持久化、可分布式、可配置化的特点,方便使用者通过前端可视化界面动态调整链路数据采集周期,依据线上环境进行灵活动态调整,定义链路数据采集任务执行周期为20秒,每隔20秒定时任务模块触发链路采集模块进行链路数据的采集。
[0024]
步骤103,链路数据采集模块通过执行netstat(网络信息统计,是指在内核中访问网络连接状态及其相关信息的程序,它能提供tcp连接,tcp和udp监听,进程内存管理的相关报告)或ss(socket statistics,套接字统计)命令进行链路数据的采集,将采集到的链路数据按照预设格式推送至消息队列;在目标服务器上,所述链路数据采集模块通过ssh连接的方式,批量执行netstat或ss命令,实时采集所述目标服务器内端口的网络链路访问状态。
[0025]
具体的,如图2所示,链路数据采集模块基于ansible进行实现,使用服务器的ip地址、连接账户、连接密码,通过ssh的方式,远程执行链路数据采集脚本;链路数据采集脚本通过linux中的ss命令,获取目标服务器上运行的服务间的链路访问状态。比如某个服务器上运行着apache服务,该服务注册的监控端口为80,则通过[ss
ꢀ-
ant | grep estab | grep 80]命令获取具体端口的链路访问记录,通过shell脚本对输出结果进行过滤、校验以及格式化,按照规范化的预设格式写入至消息队列内。
[0026]
所述预设格式为:src_ip地址_端口,dst_ip地址_端口。并且,在存在多条记录时,通过竖线(|)进行分割,由于目标服务器数量庞大,可能达到数万台,因此将采集的数据推送到消息队列,可以提高采集和处理的效率。
[0027]
步骤104,链路数据处理模块通过异步和/或多线程方式消费所述消息队列中的链路数据;所述链路数据处理模块,通过异步和/或多线程的方式从所述消息队列中消费链路数据,对从所述消息队列中获取的链路数据的源ip、源端口、目标ip、目标端口与所述关系型数据库中存储的服务器ip地址和应用服务的端口信息进行校验,过滤非关注ip地址,关联服务器信息及应用服务器信息,对链路数据进行封装。封装后的数据包括了服务器的信息、应用服务的信息、以及服务器间服务网络链路之间的信息。
[0028]
步骤105,链路数据转储模块对所述链路数据进行保存,并按照图数据格式更新图数据结构缓存中的链路及链路关系信息;经过链路数据处理模块针对链路数据的处理及封装之后,链路数据转储模块将获取到的链路数据持久化至mysql数据库。对链路数据进行持久化保存,从而方便对历史记录进行跟踪。
[0029]
之后,链路数据转储模块按照图数据结构,将服务器数据和应用服务数据作为图
数据结构中的顶点,网络链路关系作为图数据结构中的边,将链路数据缓存至图数据结构缓存中。
[0030]
具体的,检查链路数据的服务器及应用服务信息是否在redisgraph图数据结构缓存中存在,如不存在,则通过cypher图数据库声明式语言,将服务器数据和应用服务数据作为图的顶点更新至redisgraph缓存中,然后建立服务器与应用服务的边结构,从而按照应用服务的维度,对服务器进行汇总,减少前端网络链路拓扑展示的复杂度;接着将服务器间的网络链路关系数据,按照redisgraph缓存内的边结构格式进行缓存写入。
[0031]
步骤106,链路数据分析模块将所述图数据结构缓存中的链路数据按照拓扑展示和分析的需求进行检索和展示。
[0032]
所述链路数据分析模块,通过预设的图检索语法按照分析检索的条件从所述图数据结构缓存中加载网络链路拓扑结构,同时将服务器或应用服务的信息通过所述关系型数据库关联加载,对网络链路拓扑数据进行组装,提交至前端页面进行拓扑展示和检索。
[0033]
比如,请参考图2,网络链路拓扑展示,采用vue.js前端框架进行构建,由链路数据分析模块,通过cypher的检索语法,从redisgraph内的链路数据中,检索用户关心的应用服务网络链路拓扑结构;由于cypher检索语句天然支持跨多级的图拓扑检索,所以可以通过如下语法match (a:item)-[r:relation*1..n]->(b:item),其中n代表拓扑的层级,一般不超过7层结构,展示应用服务的多层级网络链路拓扑结构。
[0034]
综上所述,通过业务数据存储模块将服务器的信息以及应用服务的基础信息保存至关系型数据库中,所述服务器为x86服务器或虚拟服务器;由定时任务模块定时触发链路数据采集模块进行链路数据的收集;链路数据采集模块通过执行netstat或ss命令进行链路数据的采集,将采集到的链路数据按照预设格式推送至消息队列;链路数据处理模块通过异步和/或多线程方式消费所述消息队列中的链路数据;链路数据转储模块对所述链路数据进行保存,并按照图数据格式更新图数据结构缓存中的链路及链路关系信息;链路数据分析模块将所述图数据结构缓存中的链路数据按照拓扑展示和分析的需求进行检索和展示。也即考虑了网络链路基于图的关系,通过图数据结构更快、更方便的对多级网络链路节点进行分析和定位,改变了基于关系型数据库的多级链路检索的低效性,整体提高了网络链路实时分析的有效性和及时性。
[0035]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0036]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1