一种基于sFlow的虚拟机进程流量监控方法

文档序号:7822798阅读:237来源:国知局
一种基于sFlow的虚拟机进程流量监控方法
【专利摘要】一种基于sFlow的虚拟机进程流量监控方法,涉及云计算【技术领域】,其包括:进程监控程序周期性采集虚拟机中运行的进程信息,并将其发送给所述流量监控程序;流量监控程序从虚拟交换机发送的sFlow报文中提取相关信息分别构造上行流量表和下行流量表;流量监控程序从接收到的进程信息中提取相关信息构造进程表;流量监控程序周期性扫描进程表的每一条记录,并提取相关参数组成关键字,分别查找上行流量表和下行流量表,从而统计出每个虚拟机中每个进程的上行速度和下行速度。本发明减少了对虚拟机的处理器和内存资源的消耗,节约了虚拟机的处理器和内存资源,降低了虚拟机的网络延迟,提高了用户业务单位时间内的处理能力。
【专利说明】一种基于sFlow的虚拟机进程流量监控方法

【技术领域】
[0001] 本发明涉及云计算【技术领域】,具体来讲是一种基于sFlow的虚拟机进程流量监控 方法。

【背景技术】
[0002] 在云计算数据中心,大量的虚拟机共享网络资源,当某个虚拟机里的某个进程产 生异常流量而影响网络时,会导致其他虚拟机的网络异常,此时数据中心管理员可以通过 虚拟机进程流量监控找出这个产生异常流量的虚拟机,并关闭该进程,从而使数据中心的 网络恢复正常。
[0003] 目前虚拟机进程流量监控的常用方法是:在虚拟机里安装网络监控程序,复制流 经虚拟机网卡的数据包,并对数据包进行统计分析,从而得出每个进程的流量,将统计信息 发送到管理平台。该方法的缺点是:网络监控程序复制流经虚拟机网卡的每个数据包,占用 虚拟机的处理器和内存资源较多,增加了虚拟机的网络延迟,降低了用户业务单位时间内 的处理能力。


【发明内容】

[0004] 针对现有技术中存在的缺陷,本发明的目的在于提供一种基于sFlow的虚拟机进 程流量监控方法,本发明减少了对虚拟机的处理器和内存资源的消耗,节约了虚拟机的处 理器和内存资源,降低了虚拟机的网络延迟,提高了用户业务单位时间内的处理能力。
[0005] 为达到以上目的,本发明采取的技术方案是:一种基于sFlow的虚拟机进程流量 监控方法,基于服务器虚拟化系统实现,该方法包括以下步骤:步骤S1.在计算节点上启 动流量监控程序,并监听本地的指定端口;步骤S2.在计算节点上创建虚拟交换机并启用 sFlow,设置采样率,将sFlow报文发送的目的端口设置为所述指定端口;步骤S3.在虚拟机 中安装进程监控程序并启动,与所属计算节点的流量监控程序建立连接,并获取每个虚拟 机的ID作为各虚拟机的唯一标识;步骤S4.进程监控程序周期性采集虚拟机中运行的进程 信息,并将其发送给所述流量监控程序;步骤S5.流量监控程序从虚拟交换机发送的sFlow 报文中提取相关信息分别构造上行流量表和下行流量表;流量监控程序从接收到的进程信 息中提取相关信息构造进程表;步骤S6.流量监控程序周期性扫描进程表的每一条记录, 并提取相关参数组成关键字,分别查找上行流量表和下行流量表,从而统计出每个虚拟机 中每个进程的上行速度和下行速度。
[0006] 在上述技术方案的基础上,还包括以下步骤:步骤S7.流量监控程序将每次扫描 计算出的进程上行速度和下行速度发送到控制节点的数据库,以便后期查询。
[0007] 在上述技术方案的基础上,步骤S5中,所述流量监控程序从虚拟交换机发送的 sFlow报文中提取源物理地址、源IP地址、源端口号、目的物理地址、目的IP地址、目的端口 号、协议类型、包大小、采样率,用来分别构造上行流量表和下行流量表。
[0008] 在上述技术方案的基础上,所述构造上行流量表的具体步骤为:流量监控程序从 虚拟交换机发送的sFlow报文中提取源物理地址、源IP地址、源端口号、协议类型组成上行 流量关键字,查找上行流量表,若不存在匹配的相应记录,则插入一条记录,其索引为该上 行流量关键字,包大小为sFlow报文中的包大小,采样率为sFlow报文中的采样率;若存在 匹配的相应记录,则将该记录中的包大小加上sFlow报文中的包大小,采样率为sFlow报文 中的采样率。
[0009] 在上述技术方案的基础上,所述构造下行流量表的具体步骤为:流量监控程序从 虚拟交换机发送的sFlow报文中提取目的物理地址、目的IP地址、目的端口号、协议类型 组成下行流量关键字,查找下行流量表,若不存在匹配的相应记录,则插入一条记录,其索 引为该下行流量关键字,包大小为sFlow报文中的包大小,采样率为sFlow报文中的采样 率;若存在匹配的相应记录,则将该记录中的包大小加上sFlow报文中的包大小,采样率为 sFlow报文中的采样率。
[0010] 在上述技术方案的基础上,步骤S5中,所述流量监控程序从接收到的进程信息中 提取虚拟机唯一标识、进程号、进程名、进程通信使用的IP地址、进程通信使用的端口号、 进程通信使用的协议类型、网卡物理地址,用来构造进程表。
[0011] 在上述技术方案的基础上,所述构造进程表的具体步骤为:流量监控程序从接收 到的进程信息中提取虚拟机唯一标识和进程号作为进程关键字,查找进程表;若不存在匹 配的相应记录,则插入一条记录,其索引为该进程关键字,值为进程名和一个进程通信列 表,将进程信息中的进程通信使用的IP地址、进程通信使用的端口号、进程通信使用的协 议类型、网卡物理地址保存到进程通信列表的第一个元素;若存在匹配的相应记录,则查 看进程信息中的进程通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议类 型、网卡物理地址是否与进程通信列表中的某个元素一致,如果没有相同元素,则向进程通 信列表中插入一个元素并更新相应字段。
[0012] 在上述技术方案的基础上,步骤S6中,所述相关参数包括进程通信使用的IP地 址、进程通信使用的端口号、进程通信使用的协议类型、网卡物理地址。
[0013] 在上述技术方案的基础上,步骤S6中,统计出每个虚拟机中每个进程的上行速度 和下行速度的具体步骤为:流量监控程序周期性扫描进程表的每一条记录中的进程通信列 表的每个元素,用进程通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议 类型、网卡物理地址组成关键字,查找上行流量表,若存在匹配的相应记录,则取出该记录 的包大小字段和采样率字段,并删除该记录;若不存在匹配的相应记录,则用下一个元素查 找上行流量表,该进程的上行速度=进程通信列表每个元素查询出来的包大小字段之和X 采样率+扫描的周期;流量监控程序周期性扫描进程表的每一条记录中的进程通信列表 的每个元素,用进程通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议类 型、网卡物理地址组成关键字,查找下行流量表,若存在匹配的相应记录,则取出该记录的 包大小字段和采样率字段,并删除该记录;若不存在匹配的相应记录,则用下一个元素查找 下行流量表,该进程的下行速度=进程通信列表每个元素查询出来的包大小字段之和X 采样率+扫描的周期;扫描完成后清空进程表的所有记录。
[0014] 本发明的有益效果在于:
[0015] 1、本发明中通过进程监控程序周期性扫描进程信息,而不是复制流经虚拟机网卡 每个数据包,因此减少了对虚拟机的处理器和内存资源的消耗,节约了虚拟机的处理器和 内存资源,降低了虚拟机的网络延迟,提高了用户业务单位时间内的处理能力。
[0016] 2、本发明中流经虚拟机网卡的每个数据包必然会流经虚拟交换机,因此虚拟交换 机以指定的采样率复制流经的数据包就可以统计出虚拟机进程流量,避免在虚拟机里面复 制每个数据包,并且能够通过调整采样率的大小,控制其对网络延迟和计算节点性能的影 响。

【专利附图】

【附图说明】
[0017] 图1为本发明实施例中服务器虚拟化系统的示意图;
[0018] 图2为本发明实施例中基于sFlow的虚拟机进程流量监控方法的流程图。

【具体实施方式】
[0019] 以下结合附图及实施例对本发明作进一步详细说明。
[0020] 参见图1所示,服务器虚拟化系统包括物理交换机、控制节点及至少一个计算节 点,且物理交换机分别与控制节点的物理网卡、每一个计算节点相连;每个计算节点均设有 虚拟交换机(Open vSwitch)及至少一台虚拟机,所述虚拟交换机与所属计算节点上的各虚 拟机的网卡相连,且通过所属计算节点的物理网卡与物理交换机相连。
[0021] sFlow是一种基于数据包采样统计的技术,对设备性能和网络延迟影响小,通常用 于监控交换机或者路由器的流量转发状况,尤其适用于大流量的网络监控。
[0022] 参见图2所示,基于一种基于sFlow的虚拟机进程流量监控方法,包括以下步骤:
[0023] 步骤S1.在计算节点上启动流量监控程序,并监听本地的指定端口;
[0024] 步骤S2.在计算节点上创建虚拟交换机并启用sFlow,设置采样率,将sFlow报文 发送的目的端口设置为所述指定端口;
[0025] 步骤S3.在虚拟机中安装进程监控程序并启动,与所属计算节点的流量监控程序 建立连接,并获取每个虚拟机的ID作为各虚拟机的唯一标识;
[0026] 步骤S4.进程监控程序周期性采集虚拟机中运行的进程信息,并将其发送给所述 流量监控程序;
[0027] 步骤S5.所述流量监控程序从虚拟交换机发送的sFlow报文中提取源物理地址、 源IP地址、源端口号、目的物理地址、目的IP地址、目的端口号、协议类型、包大小、采样率, 用来分别构造上行流量表和下行流量表。
[0028] 所述构造上行流量表的具体步骤为:流量监控程序从虚拟交换机发送的sFlow报 文中提取源物理地址、源IP地址、源端口号、协议类型组成上行流量关键字,查找上行流 量表,若不存在匹配的相应记录,则插入一条记录,其索引为该上行流量关键字,包大小为 sFlow报文中的包大小,采样率为sFlow报文中的采样率;若存在匹配的相应记录,则将该 记录中的包大小加上sFlow报文中的包大小,采样率为sFlow报文中的采样率;
[0029] 所述构造下行流量表的具体步骤为:流量监控程序从虚拟交换机发送的sFlow报 文中提取目的物理地址、目的IP地址、目的端口号、协议类型组成下行流量关键字,查找下 行流量表,若不存在匹配的相应记录,则插入一条记录,其索引为该下行流量关键字,包大 小为sFlow报文中的包大小,采样率为sFlow报文中的采样率;若存在匹配的相应记录,则 将该记录中的包大小加上sFlow报文中的包大小,采样率为sFlow报文中的采样率。
[0030] 所述流量监控程序从接收到的进程信息中提取虚拟机唯一标识、进程号、进程名、 进程通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议类型、网卡物理地 址,用来构造进程表。所述构造进程表的具体步骤为:流量监控程序从接收到的进程信息中 提取虚拟机唯一标识和进程号作为进程关键字,查找进程表;若不存在匹配的相应记录,则 插入一条记录,其索引为该进程关键字,值为进程名和一个进程通信列表,将进程信息中的 进程通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议类型、网卡物理地 址保存到进程通信列表的第一个元素;若存在匹配的相应记录,则查看进程信息中的进程 通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议类型、网卡物理地址是 否与进程通信列表中的某个元素一致,如果没有相同元素,则向进程通信列表中插入一个 元素并更新相应字段。
[0031] 步骤S6.流量监控程序周期性扫描进程表的每一条记录,并提取进程通信使用的 IP地址、进程通信使用的端口号、进程通信使用的协议类型、网卡物理地址组成关键字,分 别查找上行流量表和下行流量表,从而统计出每个虚拟机中每个进程的上行速度和下行速 度。统计出每个虚拟机中每个进程的上行速度和下行速度的具体步骤为:流量监控程序周 期性扫描进程表的每一条记录中的进程通信列表的每个元素,用进程通信使用的IP地址、 进程通信使用的端口号、进程通信使用的协议类型、网卡物理地址组成关键字,查找上行流 量表,若存在匹配的相应记录,则取出该记录的包大小字段和采样率字段,并删除该记录; 若不存在匹配的相应记录,则用下一个元素查找上行流量表,该进程的上行速度=进程通 信列表每个元素查询出来的包大小字段之和X采样率+扫描的周期;流量监控程序周期 性扫描进程表的每一条记录中的进程通信列表的每个元素,用进程通信使用的IP地址、进 程通信使用的端口号、进程通信使用的协议类型、网卡物理地址组成关键字,查找下行流量 表,若存在匹配的相应记录,则取出该记录的包大小字段和采样率字段,并删除该记录;若 不存在匹配的相应记录,则用下一个元素查找下行流量表,该进程的下行速度=进程通信 列表每个元素查询出来的包大小字段之和X采样率+扫描的周期;扫描完成后清空进程 表的所有记录。
[0032] 步骤S7.流量监控程序将每次扫描计算出的进程上行速度和下行速度发送到控 制节点的数据库,以便后期查询。
[0033] 为方便理解,下面结合具体的实例对本发明作进一步说明:
[0034] 1、在计算节点上启动流量监控程序,并监听本地指定端口 6343。
[0035] 2、在计算节点上创建虚拟交换机,并启用sFlow,设置采样率1000,设置sFlow报 文发送的目的端口为本地指定端口 6343,虚拟交换机通过计算节点的物理网卡与物理交换 机级联。
[0036] 3、分别启动虚拟机A(网卡物理地址为FA: 16:3E:76:AD:0B,IP地址为 192. 168. 1.3)和虚拟机 B (网卡物理地址为 FA: 16:3E: 76: AD:0C,IP 地址为 192. 168. 1.4), 将虚拟机A和虚拟机B的网卡连接到虚拟交换机。
[0037] 4、在虚拟机A中安装进程监控程序A并启动,与流量监控程序建立连接,并获取虚 拟机唯一标识001。同理,在虚拟机B中安装进程监控程序B并启动,与流量监控程序建立 连接,并获取虚拟机唯一标识002。
[0038] 5、进程监控程序A周期性采集虚拟机A中运行的进程信息(包括虚拟机唯一标 识、进程号、进程名、进程通信使用的IP地址、进程通信使用的端口号、进程通信使用的协 议类型、网卡物理地址等。例如:[虚拟机唯一标识:001,进程号:696,进程名:QQ. exe,网 卡物理地址:FA:16:3E:76:AD:0B,进程通信使用的IP地址:192. 168. 1. 3,进程通信使用的 端口号:49625,进程通信使用的协议类型:udp]),将进程信息发送给流量监控程序。同理, 进程监控程序B周期性采集虚拟机B中运行的进程信息(例如:[虚拟机唯一标识:002, 进程号:8962,进程名:mysqld,网卡物理地址:FA :16:3E:76:AD:0C,进程通信使用的IP地 址:192. 168. 1.4,进程通信使用的端口号:3306,进程通信使用的协议类型:tcp]),并发送 给流量监控程序。
[0039] 表1 :上行流量表

【权利要求】
1. 一种基于sFlow的虚拟机进程流量监控方法,基于服务器虚拟化系统实现,其特征 在于,该方法包括以下步骤: 步骤S1.在计算节点上启动流量监控程序,并监听本地的指定端口; 步骤S2.在计算节点上创建虚拟交换机并启用sFlow,设置采样率,将sFlow报文发送 的目的端口设置为所述指定端口; 步骤S3.在虚拟机中安装进程监控程序并启动,与所属计算节点的流量监控程序建立 连接,并获取每个虚拟机的ID作为各虚拟机的唯一标识; 步骤S4.进程监控程序周期性采集虚拟机中运行的进程信息,并将其发送给所述流量 监控程序; 步骤S5.流量监控程序从虚拟交换机发送的sFlow报文中提取相关信息分别构造上行 流量表和下行流量表;流量监控程序从接收到的进程信息中提取相关信息构造进程表; 步骤S6.流量监控程序周期性扫描进程表的每一条记录,并提取相关参数组成关键 字,分别查找上行流量表和下行流量表,从而统计出每个虚拟机中每个进程的上行速度和 下行速度。
2. 如权利要求1所述的基于sFlow的虚拟机进程流量监控方法,其特征在于,还包括以 下步骤: 步骤S7.流量监控程序将每次扫描计算出的进程上行速度和下行速度发送到控制节 点的数据库,以便后期查询。
3. 如权利要求1所述的基于sFlow的虚拟机进程流量监控方法,其特征在于,步骤S5 中,所述流量监控程序从虚拟交换机发送的sFlow报文中提取源物理地址、源IP地址、源端 口号、目的物理地址、目的IP地址、目的端口号、协议类型、包大小、采样率,用来分别构造 上行流量表和下行流量表。
4. 如权利要求3所述的基于sFlow的虚拟机进程流量监控方法,其特征在于,所述构造 上行流量表的具体步骤为: 流量监控程序从虚拟交换机发送的sFlow报文中提取源物理地址、源IP地址、源端口 号、协议类型组成上行流量关键字,查找上行流量表,若不存在匹配的相应记录,则插入一 条记录,其索引为该上行流量关键字,包大小为sFlow报文中的包大小,采样率为sFlow报 文中的采样率;若存在匹配的相应记录,则将该记录中的包大小加上sFlow报文中的包大 小,采样率为sFlow报文中的采样率。
5. 如权利要求3所述的基于sFlow的虚拟机进程流量监控方法,其特征在于,所述构造 下行流量表的具体步骤为: 流量监控程序从虚拟交换机发送的sFlow报文中提取目的物理地址、目的IP地址、 目的端口号、协议类型组成下行流量关键字,查找下行流量表,若不存在匹配的相应记录, 则插入一条记录,其索引为该下行流量关键字,包大小为sFlow报文中的包大小,采样率为 sFlow报文中的采样率;若存在匹配的相应记录,则将该记录中的包大小加上sFlow报文中 的包大小,采样率为sFlow报文中的采样率。
6. 如权利要求1所述的基于sFlow的虚拟机进程流量监控方法,其特征在于,步骤S5 中,所述流量监控程序从接收到的进程信息中提取虚拟机唯一标识、进程号、进程名、进程 通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议类型、网卡物理地址,用 来构造进程表。
7. 如权利要求6所述的基于sFlow的虚拟机进程流量监控方法,其特征在于,所述构造 进程表的具体步骤为: 流量监控程序从接收到的进程信息中提取虚拟机唯一标识和进程号作为进程关键字, 查找进程表; 若不存在匹配的相应记录,则插入一条记录,其索引为该进程关键字,值为进程名和一 个进程通信列表,将进程信息中的进程通信使用的IP地址、进程通信使用的端口号、进程 通信使用的协议类型、网卡物理地址保存到进程通信列表的第一个元素; 若存在匹配的相应记录,则查看进程信息中的进程通信使用的IP地址、进程通信使用 的端口号、进程通信使用的协议类型、网卡物理地址是否与进程通信列表中的某个元素一 致,如果没有相同元素,则向进程通信列表中插入一个元素并更新相应字段。
8. 如权利要求1所述的基于sFlow的虚拟机进程流量监控方法,其特征在于:步骤S6 中,所述相关参数包括进程通信使用的IP地址、进程通信使用的端口号、进程通信使用的 协议类型、网卡物理地址。
9. 如权利要求8所述的基于sFlow的虚拟机进程流量监控方法,其特征在于,步骤S6 中,统计出每个虚拟机中每个进程的上行速度和下行速度的具体步骤为: 流量监控程序周期性扫描进程表的每一条记录中的进程通信列表的每个元素,用进程 通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议类型、网卡物理地址组 成关键字,查找上行流量表,若存在匹配的相应记录,则取出该记录的包大小字段和采样率 字段,并删除该记录;若不存在匹配的相应记录,则用下一个元素查找上行流量表;该进程 的上行速度=进程通信列表每个元素查询出来的包大小字段之和X采样率+扫描的周 期; 流量监控程序周期性扫描进程表的每一条记录中的进程通信列表的每个元素,用进程 通信使用的IP地址、进程通信使用的端口号、进程通信使用的协议类型、网卡物理地址组 成关键字,查找下行流量表,若存在匹配的相应记录,则取出该记录的包大小字段和采样率 字段,并删除该记录;若不存在匹配的相应记录,则用下一个元素查找下行流量表;该进程 的下行速度=进程通信列表每个元素查询出来的包大小字段之和X采样率+扫描的周 期; 扫描完成后清空进程表的所有记录。
【文档编号】H04L12/26GK104378264SQ201410767417
【公开日】2015年2月25日 申请日期:2014年12月12日 优先权日:2014年12月12日
【发明者】阮泽林 申请人:武汉噢易云计算有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1