一种基于Docker容器的服务网络信息统计方法及其系统与流程

文档序号:20029065发布日期:2020-02-28 10:09阅读:182来源:国知局
一种基于Docker容器的服务网络信息统计方法及其系统与流程

本发明涉及一种基于docker容器的服务网络信息统计方法及其系统,属于服务端测试领域。



背景技术:

目前,当我们对系统性能进行大压力、高并发测试时,往往存在一个问题,即由于并发数过多,极易超过后台服务器所支持的最大连接数,进而导致压测结果不理想,无法达成我们的测试目的。在技术层面,由于后台服务一般部署为docker形式,而若想获取每个docker服务的连接数难以快速实现。

现有技术中的通常做法是,分别进入每个容器,逐一采用netstat命令进行统计;这样的做法虽然可以获取我们想要的信息,但过程非常繁琐;在实际情况中,单台设备上可能部署了十几甚至几十个docker容器,在此基础上即便我们进入了每个docker容器内,也会发现并非所有都安装了netstat命令;如果存在多台设备,保证每台设备上的每个容器内均安装netstat命令,但逐一进入获取数据,无疑是非常麻烦的一个过程。

常用的netstat命令包括获取单个容器网络连接数:$nsenter-t`dockerinspect-f'{{.state.pid}}'容器名`-nnetstat|grepestablished–c;取单个端口网络连接数:$netstat-antp|grep80|grepestablished–c;获取被访问次数最多的ip:$netstat-antp|grep80|grepestablished–c;并且上述三条命令均只是片面地获取单方数据,如何有效且方便地获取所有容器的网络连接情况的概况用于分析负载和网络状况是当前急需解决的技术问题。



技术实现要素:

为至少解决现有技术中存在的技术问题之一,本发明的目的在于提供一种基于docker容器的服务网络信息统计方法及其系统,本发明可以有效且方便地获取所有容器的网络连接情况的概况用于分析负载和网络状况。

本发明解决其问题所采用的技术方案第一方面是:一种基于docker容器的服务网络信息统计方法及其系统,包括以下步骤:s1、初始化系统并加载预设信息;s2、获取所有容器并生成容器索引表;s3、遍历所有目标容器,获取容器数据;s4、遍历每个目标容器的所有开放端口,获取每个开放端口的连接数;s5、采集并分析访问本机的ip信息数据;s6、生成统计图像。

有益效果:可以高效地获取所有容器的网络连接情况,并基于初始数据生成分析图像,方便使用者有效分析当前负载和网络状况。

根据本发明第一方面所述的,所述预设信息包括下面至少一项:容器索引表数据采集类别、ip数据采集类别。

根据本发明第一方面所述的,步骤s2还包括:首先调用容器索引表数据采集类别,并基于此采集初始数据,进而生成容器索引表。

根据本发明第一方面所述的,所述容器索引表数据采集类别包括下面至少一项:容器地址、容器名称。

根据本发明第一方面所述的,步骤s3还包括:首先调用容器索引表,根据索引表中记录的容器地址及容器名称依次访问目标容器,进而获取每个目标容器的容器数据。

根据本发明第一方面所述的,所述容器数据包括下面至少一项:外部连接数、开放端口数。

根据本发明第一方面所述的,步骤s5还包括:首先调用预设信息中的ip数据采集类别,并基于此采集访问本机的ip信息数据,根据不同ip的访问次数进行排序,进而生成ip访问数列表。

根据本发明第一方面所述的,步骤s6还包括:首先调用容器数据、开放端口的连接数以及ip访问数列表,对其分别进行图像化处理,生成统计图像。

本发明解决其问题所采用的技术方案第二方面是:一种基于docker容器的服务网络信息统计系统,包括以下模块:初始化模块,用于初始化系统并加载预设信息;索引表生成模块,用于获取所有容器并生成容器索引表;容器遍历模块,用于遍历所有目标容器,获取容器数据;端口遍历模块,用于遍历每个目标容器的所有开放端口,获取每个开放端口的连接数;ip采集模块,用于采集并分析访问本机的ip信息数据;以及图像生成模块,用于生成统计图像。

有益效果:可以高效地获取所有容器的网络连接情况,并基于初始数据生成分析图像,方便使用者有效分析当前负载和网络状况。

附图说明

图1所示为根据本发明的总体流程图;

图2所示为根据本发明的模块连接图;

图3所示为根据本发明的具体实施例a;

图4所示为根据本发明的具体实施例b;

图5所示为根据本发明的具体实施例c;

图6所示为根据本发明的具体实施例d;

图7所示为根据本发明的具体实施例e;

图8所示为根据本发明的具体实施例f。

具体实施方式

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电束上运行。

此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

需要说明的是,如无特殊声明,在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个的所列项目的任意的组合。

应当理解,本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

为便于对本发明的理解,以下对部分名词进行相应的解释:

预设信息:指在系统初始化阶段,通过触屏、键盘或其他交互形式对系统在执行后续工作时需要预先设置的功能或输入的信息。

docker容器:是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口;几乎没有性能开销,可以很容易地在机器和数据中心中运行。

封装化:即整个命令的执行过程不可见,均通过后台代码自动实现。

容器连接数:外部服务请求连接该容器服务的数量。

容器开放端口连接数:单个容器可能对外开发多个端口;每个端口的请求数有所不同。

接下来结合附图对本发明的具体实施例作进一步说明;

参照图1所示为根据本发明的总体流程图,包括以下步骤:

s1、初始化系统并加载预设信息;此处所提及的预设信息包括容器索引表数据采集类别、ip数据采集类别;以上类别均是对所需采集数据的类别需求规定,在实际应用场景中可对预设信息进行增减或修改;

s2、获取所有容器并生成容器索引表;具体地,首先调用容器索引表数据采集类别,并基于此采集初始数据,进而生成容器索引表;此处所提及的容器索引表数据采集类别包括容器地址、容器名称等,并且可根据实际场景的需求对容器的信息采集类别进行增减或修改;

s3、遍历所有目标容器,获取容器数据;具体地,首先调用容器索引表,根据索引表中记录的容器地址及容器名称依次访问目标容器,进而获取每个目标容器的容器数据;此处所提及的容器数据包括外部连接数、开放端口数;

s4、遍历每个目标容器的所有开放端口,获取每个开放端口的连接数;

s5、采集并分析访问本机的ip信息数据;首先调用预设信息中的ip数据采集类别,并基于此采集访问本机的ip信息数据,根据不同ip的访问次数进行排序,进而生成ip访问数列表;

s6、生成统计图像;具体地,首先调用容器数据、开放端口的连接数以及ip访问数列表,对其分别进行图像化处理,生成统计图像;统计图像的目的在于将列表化的数据以更适合分析的形式展现出来,方便用户对当前网络负载有一个直观认知。

基于上述内容,本发明存在一种计算机可读存储介质,其上存储有计算机指令,其特征在于该指令被处理器执行时实现上述任一步骤。

参照图2所示为根据本发明的模块连接图,包括以下模块:

初始化模块,用于初始化系统并加载预设信息;

索引表生成模块,与初始化模块连接实现交互,用于获取所有容器并生成容器索引表;

容器遍历模块,与索引表生成模块连接实现交互,用于遍历所有目标容器,获取容器数据;

端口遍历模块,与容器遍历模块连接实现交互,用于遍历每个目标容器的所有开放端口,获取每个开放端口的连接数;

ip采集模块,与初始化模块连接实现交互,用于采集并分析访问本机的ip信息数据;以及

图像生成模块,与容器遍历模块、端口遍历模块、ip采集模块连接实现交互,用于生成统计图像。

参照图3所示为根据本发明的具体实施例a,实施例a展示的是基于单个容器的连接数报表结果,图中左侧最上方的containername即容器名;图中右侧最上方的numberofconnections即该容器对应的连接数;例如:名为25b12cc2_master_0的容器,其对应的连接数为8。

参照图4所示为根据本发明的具体实施例b,实施例b展示的是基于单个容器内的开放端口对应的连接数报表结果,最左边一列指的是端口对应的容器名;中间一列指的是开放端口的序号;最右边一列现实的是该端口对应的连接数;例如:位于容器debug_nginx_1下的开放端口80,它对应的连接数中35。

参照图5所示为根据本发明的具体实施例c,实施例c展示的是访问本机ip地址次数top10的列表,左边一列展示的是ip地址;右边一列展示的该ip地址对应的访问次数;例如:地址为172.18.0.4的ip,访问本机的次数为197次,位于统计列表中的第一位。

参照图6、图7、图8分别展示的是根据本发明的具体实施例d、e、f,其中,实施例d是对实施例a中的数据进行了图表化的展示;实施例e是对实施例b中的数据进行了图表化的展示;实施例f是对实施例c中的数据进行了图表化的展示。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1