自定义流量追踪插件的方法及系统转让专利

申请号 : CN202310655968.7

文献号 : CN116383018B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 花磊杨凯龙崔骥赵安全王亮梁兵张振华

申请人 : 江苏博云科技股份有限公司

摘要 :

本申请涉及云计算技术领域,尤其涉及一种自定义流量追踪插件的方法及系统,其中方法包括:在Grafana环境下,指定panel插件为NetTrace插件,指定datasource插件为JSON API插件;在JSON API插件处输入流量追踪查询参数,并将所述流量追踪查询参数发送给所述NetTrace插件;先利用所述NetTrace插件对所述流量追踪查询参数进行数据处理,再利用Cytoscape.js库对所述流量追踪查询参数进行二次数据处理;通过Canvas API绘制可视图并呈现可视化流量追踪结果。本申请有效解决了如何依靠Grafana自定义插件实现Kubernetes的CNI插件项目所需求的功能,使得用户可以将Grafana与该项目集成起来从而实现更全面的数据分析和监控的问题。

权利要求 :

1.一种自定义流量追踪插件的方法,其特征在于,所述方法包括:

在Grafana环境下,指定panel插件为NetTrace插件,指定datasource插件为JSON API插件;

在JSON API插件处输入流量追踪查询参数,并将所述流量追踪查询参数发送给所述NetTrace插件,所述流量追踪查询参数包括Field字段数据、Path字段数据和Body字段数据;

其中所述Field字段数据为:$.footprints.$.result.$.suggestions;所述Path字段数据为:/trackers/trace;

所述Body字段数据基于IP地址信息、端口信息以及传输协议进行编写;

先利用所述NetTrace插件对所述流量追踪查询参数进行数据处理,再利用Cytoscape.js库对所述流量追踪查询参数进行二次数据处理;所述先利用所述NetTrace插件对所述流量追踪查询参数进行数据处理包括:所述NetTrace插件对所述Field字段数据进行数据处理,将其分组聚合为nodes节点数据、edges边数据、result追踪结果数据以及suggestions结果建议数据;

所述result追踪结果数据为true,则表示查询成功,所述suggestions结果建议数据为空,所述result追踪结果数据为false,则表示查询失败,所述suggestions结果建议数据输出排错建议;

通过Canvas API绘制可视图并呈现可视化流量追踪结果。

2.根据权利要求1所述的自定义流量追踪插件的方法,其特征在于,所述NetTrace插件对所述Field字段数据进行数据处理,将其分组聚合为nodes节点数据、edges边数据、result追踪结果数据以及suggestions结果建议数据包括:所述NetTrace插件根据footprint数据生成需要的源网卡、目标网卡、抓包数据格式的数据;

根据上述数据将网卡数据聚合成边、节点数据,其中所述边数据包括源网卡、目标网卡、发包方向和抓包数据;所述节点数据包括网卡名称、所在主机、健康等级和抓包数据等。

3.根据权利要求1所述的自定义流量追踪插件的方法,其特征在于,所述再利用Cytoscape.js库对所述流量追踪查询参数进行二次数据处理包括:通过所述Cytoscape.js库对nodes节点数据和edges边数据进行数据处理,所述数据处理包括节点和边的创建、属性设置、布局计算等。

4.根据权利要求3所述的自定义流量追踪插件的方法,其特征在于,所述布局计算中使用所述Cytoscape.js库内置的cola算法,根据cola布局中指定的一些自定义约束条件将节点和边布局在二维平面上。

5. 根据权利要求3所述的自定义流量追踪插件的方法,其特征在于,所述通过Canvas API绘制可视图并呈现可视化流量追踪结果包括:所述Canvas API根据所述Cytoscape.js库处理好的布局,绘制相应的节点、边、文本和动画,并呈现完整的可视化流量追踪结果。

6.一种自定义流量追踪插件的系统,其特征在于,包括:

插件指定模块(310),用于在Grafana环境下,指定panel插件为NetTrace插件,指定datasource插件为JSON API插件;

参数输入模块(320),用于在JSON API插件处输入流量追踪查询参数,并将所述流量追踪查询参数发送给所述NetTrace插件,所述流量追踪查询参数包括Field字段数据、Path字段数据和Body字段数据;

其中所述Field字段数据为:$.footprints.$.result.$.suggestions;所述Path字段数据为:/trackers/trace;

所述Body字段数据基于IP地址信息、端口信息以及传输协议进行编写;

数据处理模块(330),用于先利用所述NetTrace插件对所述流量追踪查询参数进行数据处理,再利用Cytoscape.js库对所述流量追踪查询参数进行二次数据处理;所述先利用所述NetTrace插件对所述流量追踪查询参数进行数据处理包括:所述NetTrace插件对所述Field字段数据进行数据处理,将其分组聚合为nodes节点数据、edges边数据、result追踪结果数据以及suggestions结果建议数据;

所述result追踪结果数据为true,则表示查询成功,所述suggestions结果建议数据为空,所述result追踪结果数据为false,则表示查询失败,所述suggestions结果建议数据输出排错建议;

结果呈现模块(340),用于通过Canvas API绘制可视图并呈现可视化流量追踪结果。

7.一种电子设备,其特征在于,所述设备包括处理器和存储器;所述存储器中存储有程序,所述程序由所述处理器加载并执行以实现如权利要求1至5任一项所述的一种自定义流量追踪插件的方法。

8.一种计算机可读存储介质,其特征在于,所述存储介质中存储有程序,所述程序被处理器执行时用于实现如权利要求1至5任一项所述的一种自定义流量追踪插件的方法。

说明书 :

自定义流量追踪插件的方法及系统

技术领域

[0001] 本申请涉及云计算技术领域,尤其涉及一种自定义流量追踪插件的方法及系统。

背景技术

[0002] Grafana作为一款开源的数据可视化和监控平台,允许用户根据自己的需求进行自定义开发和插件扩展,以满足个性化的数据可视化和监控需求。Grafana提供了插件开发的API和文档,用户可以根据自己的需求开发自定义的图表、面板、数据源和数据处理插件,并将其集成到Grafana中,以实现更加丰富和个性化的数据可视化和监控功能。此外,用户可以根据自己的需求自定义面板,包括选择不同的数据源、调整数据显示和呈现方式、配置面板间交互和联动等,以实现更加个性化和直观的数据展示。
[0003] Grafana官方所提供的插件有多种,但在实际的生产使用过程中往往需要各种定制化的插件资源来展示数据。目前在Kubernetes的某个CNI插件项目中,项目要求能够将Kubernetes集群内各个Pod之间的流量可视化,具体的,项目要求能够展示流量途中的网卡、在网卡上的抓包信息、流量路径方向、流量追踪结果以及追踪失败的拍错建议。由于Grafana 平台自定义插件允许开发者根据自己的需求,创建新的图表类型和样式。当面对上述项目中对集群网络追踪路径可视化的需求,如何依靠Grafana自定义插件实现该功能,使得用户可以将 Grafana 与该项目集成起来从而实现更全面的数据分析和监控是目前需要解决的难题。

发明内容

[0004] 本申请提供了一种自定义流量追踪插件的方法及系统,可以解决如何依靠Grafana自定义插件实现Kubernetes的CNI插件项目所需求的功能,使得用户可以将 Grafana 与该项目集成起来从而实现更全面的数据分析和监控的问题。本申请提供如下技术方案:
[0005] 第一方面,本申请提供一种自定义流量追踪插件的方法,所述方法包括:
[0006] 在Grafana环境下,指定panel插件为NetTrace插件,指定datasource插件为JSON API插件;
[0007] 在JSON API插件处输入流量追踪查询参数,并将所述流量追踪查询参数发送给所述NetTrace插件;
[0008] 先利用所述NetTrace插件对所述流量追踪查询参数进行数据处理,再利用Cytoscape.js库对所述流量追踪查询参数进行二次数据处理;
[0009] 通过Canvas API绘制可视图并呈现可视化流量追踪结果。
[0010] 在一个具体的可实施方案中,所述在JSON API插件处输入流量追踪查询参数,并将所述流量追踪查询参数发送给所述NetTrace插件包括:
[0011] 所述流量追踪查询参数包括Field字段数据、Path字段数据和Body字段数据;
[0012] 其中所述Field字段数据为:$.footprints.$.result.$.suggestions;
[0013] 所述Path字段数据为:/trackers/trace;
[0014] 所述Body字段数据基于IP地址信息、端口信息以及传输协议进行编写。
[0015] 在一个具体的可实施方案中,所述先利用所述NetTrace插件对所述流量追踪查询参数进行数据处理包括:
[0016] 所述NetTrace插件对所述Field字段数据进行数据处理,将其分组聚合为nodes节点数据、edges边数据、result追踪结果数据以及suggestions结果建议数据;
[0017] 所述result追踪结果数据为true,则表示查询成功,所述suggestions结果建议数据为空,所述result追踪结果数据为false,则表示查询失败,所述suggestions结果建议数据输出排错建议。
[0018] 在一个具体的可实施方案中,所述NetTrace插件对所述Field字段数据进行数据处理,将其分组聚合为nodes节点数据、edges边数据、result追踪结果数据以及suggestions结果建议数据包括:
[0019] 所述NetTrace插件根据footprint数据生成需要的“源网卡、目标网卡、抓包数据”格式的数据;
[0020] 根据上述数据将网卡数据聚合成边、节点数据,其中所述边数据包括“源网卡、目标网卡、发包方向和抓包数据”;所述节点数据包括“网卡名称、所在主机、健康等级和抓包数据等”。
[0021] 在一个具体的可实施方案中,所述再利用Cytoscape.js库对所述流量追踪查询参数进行二次数据处理包括:
[0022] 通过所述Cytoscape.js库对nodes节点数据和edges边数据进行数据处理,所述数据处理包括节点和边的创建、属性设置、布局计算等。
[0023] 在一个具体的可实施方案中,所述布局计算中使用所述Cytoscape.js库内置的cola算法,根据cola布局中指定的一些自定义约束条件将节点和边布局在二维平面上。
[0024] 在一个具体的可实施方案中,所述通过Canvas API绘制可视图并呈现可视化流量追踪结果包括:
[0025] 所述Canvas API根据所述Cytoscape.js库处理好的布局,绘制相应的节点、边、文本和动画,并呈现完整的可视化流量追踪结果。
[0026] 第二方面,本申请提供一种自定义流量追踪插件的系统,采用如下的技术方案:
[0027] 一种自定义流量追踪插件的系统,包括:
[0028] 插件指定模块,用于在Grafana环境下,指定panel插件为NetTrace插件,指定datasource插件为JSON API插件;
[0029] 参数输入模块,用于在JSON API插件处输入流量追踪查询参数,并将所述流量追踪查询参数发送给所述NetTrace插件;
[0030] 数据处理模块,用于先利用所述NetTrace插件对所述流量追踪查询参数进行数据处理,再利用Cytoscape.js库对所述流量追踪查询参数进行二次数据处理;
[0031] 结果呈现模块,用于通过Canvas API绘制可视图并呈现可视化流量追踪结果。
[0032] 第三方面,本申请提供一种电子设备,所述设备包括处理器和存储器;所述存储器中存储有程序,所述程序由所述处理器加载并执行以实现所述的一种自定义流量追踪插件的方法。
[0033] 第四方面,本申请提供一种计算机可读存储介质,所述存储介质中存储有程序,所述程序被处理器执行时用于实现所述的一种自定义流量追踪插件的方法。
[0034] 综上所述,本申请的有益效果至少包括:根据Kubernetes的CNI插件项目的功能需求,本申请能够依靠Grafana自定义插件来实现该功能,使得用户能够将Grafana与Kubernetes的CNI插件项目集成起来,从而实现更为全面的数据分析和监控。
[0035] 通过NetTrace插件对流量追踪查询参数进行数据处理,从而将数据分组聚合为nodes节点数据、edges边数据、result追踪结果数据以及suggestions结果建议数据,再通过Cytoscape.js库对nodes节点数据和edges边数据进行数据处理,具体的,包括节点和边的创建、属性设置和布局计算,使用Cytoscape.js库内置的cola算法,根据cola布局中指定的一些自定义约束条件将节点和边布局在二维平面上,最后通过Canvas API根据Cytoscape.js库处理好的布局,绘制相应的节点、边、文本和动画,并呈现完整的可视化流量追踪结果;可以解决如何依靠Grafana自定义插件实现Kubernetes的CNI插件项目所需求的功能,使得用户可以将 Grafana 与该项目集成起来从而实现更全面的数据分析和监控的问题。
[0036] 上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。

附图说明

[0037] 图1是本申请一个实施例提供的自定义流量追踪插件的方法的流程示意图。
[0038] 图2是本申请一个实施例提供的自定义流量追踪插件的方法的举例示意图。
[0039] 图3是本申请一个实施例中Body字段数据的举例示意图。
[0040] 图4是本申请一个实施例提供的自定义流量追踪插件的系统的结构框图。
[0041] 图5是本申请一个实施例提供的自定义流量追踪插件的电子设备的框图。
[0042] 附图标记:310、插件指定模块;320、参数输入模块;330、数据处理模块;340、结果呈现模块。

具体实施方式

[0043] 下面结合附图和实施例,对本申请的具体实施方式做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
[0044] 首先,对于本申请所涉及的若干名词进行介绍。
[0045] Grafana:Grafana是一款流行的开源数据可视化和监控平台,支持多种数据源,包括InfluxDB、Prometheus、Elasticsearch、MySQL等。Grafana提供了直观易用的图表、面板、仪表盘和报警功能,使用户能够深入了解数据的趋势、状态和性能。Grafana的可扩展性也非常强,用户可以根据自己的需求进行自定义开发和插件扩展。此外,Grafana还支持团队协作和权限管理,用户可以共享和管理面板和仪表盘。Grafana在监控、运维、数据分析和业务决策等领域都有广泛的应用,成为了数据可视化和监控领域的重要工具之一。
[0046] JSON API:JSON API 是 Grafana 的开源数据源插件,可让用户可视化来自任何返回 JSON 的 URL的数据,例如 REST API (Representational State Transfer)含状态传输是一种软件架构风格,或静态文件服务器。
[0047] Cytoscape.js:是一个基于 JavaScript 的图形可视化库,它提供了多种布局算法来帮助用户更好地展示图形数据。
[0048] cola 算法:是 Cytoscape.js 内置的一种布局算法,它的优点主要包括:高效性:cola 算法采用了一种迭代的方式,通过不断调整节点的位置来达到布局的最优解。相比于其他布局算法,cola 算法的运行速度更快,可以处理包含大量节点和边的图形数据。
[0049] 灵活性:cola 算法提供了多种参数来控制布局效果,比如节点之间的距离、边的长度和弹簧的强度等。这些参数可以根据用户的需求进行调整,从而实现不同的布局效果。
[0050] 美观性:cola 算法可以根据节点之间的关系自动调整节点的位置,使得图形数据更加美观和易于理解。同时,cola 算法还支持节点的分组和对齐等操作,进一步提高了图形数据的可读性。
[0051] Canvas API 是 HTML5 中的一个标准API,用于在 Web 页面上绘制图形、图像和动画等。它提供了一组方法和属性,可以在 Canvas 元素中创建和操作像素级别的图形。
[0052] 总之,cola 算法是 Cytoscape.js 内置的一种高效、灵活和美观的布局算法,可以帮助用户更好地展示图形数据。
[0053] 可选地,本申请以各个实施例提供的自定义流量追踪插件的方法用于电子设备中为例进行说明,该电子设备为终端或服务器,终端可以为手机、计算机、平板电脑、扫描仪、电子眼、监控摄像头等,本实施例不对电子设备的类型作限定。
[0054] 参照图1,是本申请一个实施例提供的自定义流量追踪插件的方法的流程示意图,该方法至少包括以下几个步骤:
[0055] 步骤101,在Grafana环境下指定相关插件。
[0056] 首先,Grafana环境下用户在Grafana panel面板页面,指定panel插件为NetTrace插件,指定datasource插件为JSON API插件。
[0057] 步骤102,在JSON API插件处输入流量追踪查询参数。
[0058] 参照图2,指定插件之后,用户需要在JSON API插件处输入流量追踪查询参数,具体的,流量追踪查询参数包括Field字段数据、Path字段数据和Body字段数据。
[0059] 其中Field字段数据为:$.footprints.$.result.$.suggestions;
[0060] Path字段数据为:/trackers/trace;
[0061] Body字段数据基于IP地址信息、端口信息以及传输协议进行编写。参照图3,为Body字段数据的一个具体实施例,至上而下分别为源IP地址、目标IP地址、源端口、目标端口、传输协议以及接口设定是否将详细信息展示出来。
[0062] 流量追踪查询参数输入后,JSON API插件将制定的Field字段数据发送给NetTrace插件。
[0063] 步骤103,利用NetTrace插件对Field字段数据进行数据处理。
[0064] JSON API插件将制定的Field字段数据发送给NetTrace插件之后,NetTrace插件对Field字段数据进行数据处理,将其分组聚合为nodes节点数据、edges边数据、result追踪结果数据以及suggestions结果建议数据。具体的,NetTrace插件首先根据footprint数据生成需要的“源网卡、目标网卡、抓包数据”格式的数据,再根据上述数据将网卡数据聚合成边、节点数据,其中边数据包括“源网卡、目标网卡、发包方向和抓包数据”,节点数据包括“网卡名称、所在主机、健康等级和抓包数据等”。
[0065] 如果result追踪结果数据为true,则表示查询成功,suggestions结果建议数据为空,如果result追踪结果数据为false,则表示查询失败,suggestions结果建议数据则会输出排错建议。
[0066] 步骤104,利用Cytoscape.js库对nodes节点数据和edges边数据进行数据处理。
[0067] NetTrace插件将Field字段数据分组聚合为nodes节点数据和edges边数据之后,Cytoscape.js库对nodes节点数据和edges边数据进行数据处理,具体的,数据处理包括节点和边的创建、属性设置以及布局计算等,其中布局计算中使用Cytoscape.js库内置的cola算法,根据cola布局中指定的一些自定义约束条件将节点和边布局在二维平面上。相比于其他布局算法,cola 算法的运行速度更快,可以处理包含大量节点和边的图形数据。
[0068] 步骤105,通过Canvas API绘制可视图并呈现可视化流量追踪结果。
[0069] 根据Cytoscape.js库处理好的布局,使用Canvas API绘制相应的节点、边、文本和动画,并呈现完整的可视化流量追踪结果。
[0070] 综上所述,参照图2,用户在JSON API插件输入流量追踪查询参数之后,[0071] 通过NetTrace插件对其中的Field字段数据进行数据处理,从而将数据分组聚合为nodes节点数据和edges边数据,再通过Cytoscape.js库对nodes节点数据和edges边数据进行数据处理,具体的,包括节点和边的创建、属性设置和布局计算,并使用Cytoscape.js库内置的cola算法,根据cola布局中指定的一些自定义约束条件将节点和边布局在二维平面上,最后通过Canvas API根据Cytoscape.js库处理好的布局,绘制相应的节点、边、文本和动画,并呈现完整的可视化流量追踪结果。
[0072] 根据Kubernetes的CNI插件项目的功能需求,本申请能够依靠Grafana自定义插件来实现该功能,使得用户能够将Grafana与Kubernetes的CNI插件项目集成起来,从而实现更为全面的数据分析和监控。
[0073] 图4是本申请一个实施例提供的自定义流量追踪插件的系统的结构框图。该装置至少包括以下几个模块:
[0074] 插件指定模块310,用于在Grafana环境下,指定panel插件为NetTrace插件,指定datasource插件为JSON API插件。
[0075] 参数输入模块320,用于在JSON API插件处输入流量追踪查询参数,并将流量追踪查询参数发送给NetTrace插件。
[0076] 数据处理模块330,用于先利用NetTrace插件对流量追踪查询参数进行数据处理,再利用Cytoscape.js库对流量追踪查询参数进行二次数据处理。
[0077] 结果呈现模块340,用于通过Canvas API绘制可视图并呈现可视化流量追踪结果。
[0078] 相关细节参考上述方法实施例。
[0079] 图5是本申请一个实施例提供的电子设备的框图。该设备至少包括处理器401和存储器402。
[0080] 处理器401可以包括一个或多个处理核心,比如:4核心处理器、8核心处理器等。处理器401可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器401可以在集成有GPU(Graphics Processing Unit,图像处理器), GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器401还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
[0081] 存储器402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器401所执行以实现本申请中方法实施例提供的自定义流量追踪插件的方法。
[0082] 在一些实施例中,电子设备还可选包括有:外围设备接口和至少一个外围设备。处理器401、存储器402和外围设备接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口相连。示意性地,外围设备包括但不限于:射频电路、触摸显示屏、音频电路、和电源等。
[0083] 当然,电子设备还可以包括更少或更多的组件,本实施例对此不作限定。
[0084] 可选地,本申请还提供有一种计算机可读存储介质,计算机可读存储介质中存储有程序,程序由处理器加载并执行以实现上述方法实施例的自定义流量追踪插件的方法。
[0085] 可选地,本申请还提供有一种计算机产品,该计算机产品包括计算机可读存储介质,计算机可读存储介质中存储有程序,程序由处理器加载并执行以实现上述方法实施例的自定义流量追踪插件的方法。
[0086] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0087] 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。