基于eBPF的Flink集群全链路监控方法及系统与流程

文档序号:36108563发布日期:2023-11-22 13:07阅读:28来源:国知局
基于的制作方法

本发明涉及flink集群的监控与任务跟踪技术,具体涉及一种基于ebpf的flink集群全链路监控方法及系统。


背景技术:

1、flink集群是由一个master节点和多个worker节点构成的完全分布式模式,用于处理大规模数据流和批量数据的开源计算引擎。在flink集群中,master节点负责任务的调度和监控,而worker节点则是执行具体的计算任务。在flink集群的运行过程中,运维人员和开发人员需要进行flink集群全链路监控,即:了解flink集群中的系统指标和任务运行组件相关的指标,以在出现作业调度失败、组件报错、背压的情况下获得通知并进行干预。但是,由于flink集群作为流批一体的计算引擎需要面对大量低延迟的场景,因此进行flink集群全链路监控的计算延迟是一项充满挑战的任务。目前,flink集群的监控主要有两种实现方式,方式一是通过flink自身集成的指标报告器主动将指标写入外部监控接口,如jmx、graphite、influxdb等;方式二是提供rest接口,被动的通过第三方监控工具显示指标。但是,这两种方式存在以下缺点:两种方式均需要引入第三方的监控工具(指标报告器相当于第三方监控工具),增加了单独部署和运维开销,同时需要耗费一定的系统资源;方式二涉及大量的rest调用,会增加额外的系统开销;第三方监控系统出现故障的情况下,监控指标将无法获取。


技术实现思路

1、本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于ebpf的flink集群全链路监控方法及系统,本发明能够实现监控flink集群的系统指标和各类运行组件的指标,达到在不引入第三方监控工具的前提下对flink集群进行全链路跟踪和监控的目的,且获取flink集群的数据的程序运行在内核态,在确保内核运行安全的情况下,系统开销小且效率高。

2、为了解决上述技术问题,本发明采用的技术方案为:

3、一种基于ebpf的flink集群全链路监控方法,包括针对flink集群中每一个节点上部署基于ebpf程序的数据监控客户端,利用数据监控客户端基于本节点的操作系统api和flink集群之间的通讯数据完成针对flink集群的监控数据的获取工作,并将监控数据发送到指定的存储节点以将flink集群中每一个节点采集的监控数据进行统一存储。

4、可选地,所述数据监控客户端基于本节点和flink集群之间的通讯数据完成针对flink集群的监控数据的获取工作包括:

5、s101,利用位于内核态中的内核态工作模块,通过ebpf钩子函数针对flink集群各组件的数据来源进行通讯数据抓取,然后进行包括协议解析和过滤的数据预处理,再将数据预处理后得到的监控数据通过ebpf映射传递到用户态;

6、s102,利用位于用户态的用户态工作模块,接收数据预处理后的监控数据,将监控数据复制到缓存中,对缓存中的监控数据进行处理以提取flink集群的信息类型和状态码,再根据flink集群的信息类型和状态码和flink集群的元数据进行修正,将修正后的监控数据进行数据聚合以去除重复数据,最终将数据聚合得到的监控数据发送到指定的存储节点以将flink集群中每一个节点采集的监控数据进行统一存储。

7、可选地,步骤s101中通过ebpf钩子函数针对flink集群各组件的数据来源进行通讯数据抓取时,包括根据tcp协议在建立连接、传输数据、释放连接过程中调用的内核函数定义ebpf程序的追踪tracepoints切换点或者kprobe切入点以实现针对flink集群各组件的建立连接、传输数据、释放连接的过程进行数据抓取,且所述建立连接过程中调用的内核函数包括tcp协议的数accept、connect函数,传输数据过程中调用的内核函数包括tcp协议的write、writev、send、sendfile、read、recv和recvmsg函数,释放连接过程中调用的内核函数包括tcp协议的close函数。

8、可选地,步骤s101中进行包括协议解析和过滤的数据预处理时,过滤后保留的监控数据包括:基于http协议的flink集群作业提交数据;基于rpc协议的flink集群组件之间的心跳数据;基于rpc协议的flink集群组件之间的资源申请和分配、作业调度、任务管理和任务执行数据;基于tcp协议的任务管理器之间的数据交换数据;基于tcp协议的任务task的基于信用值的反压机制平衡网络上游算子的积压量backlog和信用量credit。

9、可选地,步骤s101中将将数据预处理后得到的监控数据通过ebpf映射传递到用户态包括:将数据预处理后得到的监控数据传递给内核态、用户态之间用于进行数据通讯的指定中间模块,通过中间模块将数据预处理后得到的监控数据通过ebpf映射传递到用户态。

10、可选地,步骤s102中对缓存中的监控数据进行处理以提取flink集群的信息类型和状态码时,所述flink集群的信息类型是指组件、任务或作业,所述状态码是指http协议的状态码。

11、可选地,步骤s102中根据flink集群的信息类型和状态码和flink集群的元数据进行修正时,包括根据节点中与flink集群各组件的数据来源通讯的进程的身份信息查询预设的映射数据结构以获取对应的flink集群的元数据:包括消息类型、消息长度和flink任务标志符,所述数据映射结构以进程的身份信息作为键、flink集群的元数据的结构体的编号作为值来存储进程的身份信息到flink集群的元数据的映射关系,所述进程的身份信息是指进程编号pid或者文件描述符fd,所述flink集群的元数据的结构体在ebpf程序被加载时初始化写入flink集群的元数据。

12、可选地,步骤s102中将修正后的监控数据进行数据聚合以去除重复数据是指根据flink集群的元数据,将相同flink集群的数据包的分片进行重组成为一个完整的数据包。

13、此外,本发明还提供一种基于ebpf的flink集群全链路监控系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述基于ebpf的flink集群全链路监控方法。

14、此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述基于ebpf的flink集群全链路监控方法。

15、本现有技术相比,本发明主要具有下述优点:

16、1、本发明能够实现监控flink集群的系统指标和各类运行组件的指标,达到在不引入第三方监控工具的前提下对flink集群进行全链路跟踪和监控的目的,由于不需要引入第三方的监控工具,因此减少了部署和运维的成本。

17、2、本发明包括利用数据监控客户端基于本节点的操作系统api和flink集群之间的通讯数据完成针对flink集群的监控数据的获取工作,原始数据通过内核去获取,不需要调用flink的rest接口,没有接口调用引入的性能开销;本发明获取flink集群的数据的程序运行在内核态,在确保内核运行安全的情况下,系统开销小且效率高。

18、3、本发明包括利用数据监控客户端基于本节点的操作系统api和flink集群之间的通讯数据,数据的获取是进程级别的,监控指标更加详细和灵活;当flink出现数据积压时,可以更快定位到具体的任务。

19、4、本发明适用于通用flink部署和使用场景,包括裸金属环境和云环境场景。

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