searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Pingmesh网络监控

2023-07-28 08:08:05
184
0

1.背景

        目前线上资源池经常会出现存储网络波动丢包问题,导致存储集群状态出现Long heartbeat ping times on back interface seen longest is msec异常告警。现有存储网络监控只在个别节点上部署,从个别存储节点上分别获取其他所有存储节点ping动作输出结果信息,由于不同存储节点之间互相ping结果可能不一致,有时候从监控中无法抓到存储网络异常丢包情况,为及时准确发现存储网络异常节点,需要对多个网络节点进行互ping监控。通过调研发现,Pingmesh方案通过控制器选取服务器列表,以ping的方式探测网络的延时和丢包情况,可以对多个节点进行互相ping操作,实现网络故障回溯定位。

2. Pingmesh简介

       在现有的数据中心的网络中,涉及到的网络设备是极其复杂多样的。一个大型的数据中心都有成百上千的节点,网卡,交换机,路由器以及无数的网线,光纤。在这些硬件设备基础上构建了很多软件,比如搜索引擎、分布式文件系统、分布式存储等等。针对数据中心出现的网络问题,微软设计开发了 Pingmesh,用来记录和分析数据中心的网络情况。在微软内部 Pingmesh 每天会记录 24TB 数据,进行 2k 亿次 ping 探测,通过这些数据,可以很好的进行网络故障判定和及时的修复。

3. Pingmesh架构设计

3.1 设计目标

       Pingmesh的目标是构建网络延迟测量和分析系统,最大程度的网络延迟数据覆盖对于管理和排除网络基础架构故障至关重要。它需要始终保持开启,需要始终跟踪网络状态,需要为所有服务器生成网络延迟数据,每台服务器都需要实时启动ping动作。按照上面的需求,Pingmesh 先评估了现有的专用网络开源工具,不符合的原因有很多,大多数工具都是以命令行形式呈现,一般是出现故障了去使用工具排查,而且工具提供的数据也不全面,有可能正在运行工具问题已经解决了。当已知源目标地址时,这些工具通常用于网络故障排除,这对于大规模数据中心网络并不适用,当网络事件发生时,排查人员可能不知道源目标地址,此外,对于瞬间的网络问题,在运行工具之前问题可能已经消失。

3.2  Pingmesh设计架构

Pingmesh架构如下图所示,包括三个组件:

3.3 Pingmesh控制器

        Pingmesh控制器是整个系统的大脑,它决定了服务器应该如何相互探测。 在Pingmesh 控制器中,Pingmesh Generator为每个服务器生成一个pinglist文件,这个文件是xml格式的,pinglist文件包含对等服务器列表和相关参数,pinglist文件基于网络拓扑生成,需要根据实际的网络拓扑进行及时更新。

        在生成 pinglist 时,如果pinglist上包括所有的服务器列表,对于N个服务器,每个服务器ping其余n-1个服务器,那么复杂度在O(N^2)级别,负荷太大。控制器为了避免每个服务器上的资源开销,将pinglist列表分为3 个级别: 在机架内部,让所有的server互相ping,每个server ping(N-1)个server;在机架之间,则每个机架选几个server ping其它机架的server,保证每个server所属的ToR不同;在数据中心之间,选择不同的数据中心的几个不同的机架的server 来 ping。

         Pingmesh控制器在生成 pinglist 文件后,通过 HTTP 提供出去,Agent 会定期获取 pinglist 来更新 agent 自己的配置,也就是我们说的“拉”模式。Controller 需要保证高可用,因此需要在 VIP 后面配置多个实例,每个实例的算法一致,pinglist 文件内容也一致,保证可用性。

3.4  Pingmesh代理

       Pingmesh Agent在所有服务器上运行,用来真正做 ping 动作的服务。Ping Agent从Pingmesh控制器下载pinglist,ping pinglist中的服务器。由于Pingmesh运行在所有服务器上,为了保证获取结果的真实的服务一致,Pingmesh 没有采用ICMP ping,而是采用的TCP/HTTP ping ,所有每个Agent即使Server也是Client。每个Ping动作都要开启一个新的连接,主要是为了减少Pingmesh造成的TCP并发。

       Agent要保证自己是可靠的,不会造成一些严重的后果,其次要保证自己使用的资源足够少,毕竟运行在每个Server上。两个Server ping的周期最小是10s,packet大小最大64kb。针对灵活的配置需求,Agent会定期去Controller上拉去pinglist,如果三次拉取不到,那么就会删除本地已有的pinglist,停止ping动作。

       在进行ping动作后,会将结果保存在内存中,当保存结果超过一定的阈值或者达到了超时时间,就将结果上传到Cosmos中用于分析,如果上传失败,会有重试次数则数据丢弃,保证Agent的内存使用。

3.5 数据存储和分析

       Pingmesh代理会定期将时延记录上传到Cosmos,与Pingmesh控制器类似,Cosmos的前端使用负载均衡和VIP(虚拟地址IP)进行扩展。 同时,Pingmesh 代理对延迟数据执行本地计算,并生成一组性能计数器,包括50%至90%的丢包率和网络延迟等。所有这些性能计数器都被收集,汇总和存储在Autopilot的PA服务。当收集到数据,Pingmesh有三种粒度对数据进行分析,分别以10min,1hour,1day的粒度进行统计汇总,数据的实时性最快也就是10min,Pingmesh还借助内部的基础设施能够拿到5min级别的数据结果。算是一种时间监控。

4. 总结和思考

        Pingmesh的基本思路是在服务器之间进行互ping动作,获取不同服务器之间的丢包率和时延信息,以最小代价得到机架内,机架间,机房间的网络质量。Pingmesh Controller通过生成pinglist文件确定服务器之间如何相互探测,Pingmesh Agent在所有服务器上运行,用来真正做 ping 动作的服务,数据存储和分析模块收集Pingmesh Agent模块输出结果进行分析。针对现有存储网络监控有时候从监控中无法抓到存储网络异常丢包情况,结合pingmesh思路,可以对现网存储服务器分组互Ping,获取网络丢包和时延监控信息,达到及时准确发现存储网络异常节点的目的。

0条评论
0 / 1000
吴****谦
2文章数
0粉丝数
吴****谦
2 文章 | 0 粉丝
吴****谦
2文章数
0粉丝数
吴****谦
2 文章 | 0 粉丝
原创

Pingmesh网络监控

2023-07-28 08:08:05
184
0

1.背景

        目前线上资源池经常会出现存储网络波动丢包问题,导致存储集群状态出现Long heartbeat ping times on back interface seen longest is msec异常告警。现有存储网络监控只在个别节点上部署,从个别存储节点上分别获取其他所有存储节点ping动作输出结果信息,由于不同存储节点之间互相ping结果可能不一致,有时候从监控中无法抓到存储网络异常丢包情况,为及时准确发现存储网络异常节点,需要对多个网络节点进行互ping监控。通过调研发现,Pingmesh方案通过控制器选取服务器列表,以ping的方式探测网络的延时和丢包情况,可以对多个节点进行互相ping操作,实现网络故障回溯定位。

2. Pingmesh简介

       在现有的数据中心的网络中,涉及到的网络设备是极其复杂多样的。一个大型的数据中心都有成百上千的节点,网卡,交换机,路由器以及无数的网线,光纤。在这些硬件设备基础上构建了很多软件,比如搜索引擎、分布式文件系统、分布式存储等等。针对数据中心出现的网络问题,微软设计开发了 Pingmesh,用来记录和分析数据中心的网络情况。在微软内部 Pingmesh 每天会记录 24TB 数据,进行 2k 亿次 ping 探测,通过这些数据,可以很好的进行网络故障判定和及时的修复。

3. Pingmesh架构设计

3.1 设计目标

       Pingmesh的目标是构建网络延迟测量和分析系统,最大程度的网络延迟数据覆盖对于管理和排除网络基础架构故障至关重要。它需要始终保持开启,需要始终跟踪网络状态,需要为所有服务器生成网络延迟数据,每台服务器都需要实时启动ping动作。按照上面的需求,Pingmesh 先评估了现有的专用网络开源工具,不符合的原因有很多,大多数工具都是以命令行形式呈现,一般是出现故障了去使用工具排查,而且工具提供的数据也不全面,有可能正在运行工具问题已经解决了。当已知源目标地址时,这些工具通常用于网络故障排除,这对于大规模数据中心网络并不适用,当网络事件发生时,排查人员可能不知道源目标地址,此外,对于瞬间的网络问题,在运行工具之前问题可能已经消失。

3.2  Pingmesh设计架构

Pingmesh架构如下图所示,包括三个组件:

3.3 Pingmesh控制器

        Pingmesh控制器是整个系统的大脑,它决定了服务器应该如何相互探测。 在Pingmesh 控制器中,Pingmesh Generator为每个服务器生成一个pinglist文件,这个文件是xml格式的,pinglist文件包含对等服务器列表和相关参数,pinglist文件基于网络拓扑生成,需要根据实际的网络拓扑进行及时更新。

        在生成 pinglist 时,如果pinglist上包括所有的服务器列表,对于N个服务器,每个服务器ping其余n-1个服务器,那么复杂度在O(N^2)级别,负荷太大。控制器为了避免每个服务器上的资源开销,将pinglist列表分为3 个级别: 在机架内部,让所有的server互相ping,每个server ping(N-1)个server;在机架之间,则每个机架选几个server ping其它机架的server,保证每个server所属的ToR不同;在数据中心之间,选择不同的数据中心的几个不同的机架的server 来 ping。

         Pingmesh控制器在生成 pinglist 文件后,通过 HTTP 提供出去,Agent 会定期获取 pinglist 来更新 agent 自己的配置,也就是我们说的“拉”模式。Controller 需要保证高可用,因此需要在 VIP 后面配置多个实例,每个实例的算法一致,pinglist 文件内容也一致,保证可用性。

3.4  Pingmesh代理

       Pingmesh Agent在所有服务器上运行,用来真正做 ping 动作的服务。Ping Agent从Pingmesh控制器下载pinglist,ping pinglist中的服务器。由于Pingmesh运行在所有服务器上,为了保证获取结果的真实的服务一致,Pingmesh 没有采用ICMP ping,而是采用的TCP/HTTP ping ,所有每个Agent即使Server也是Client。每个Ping动作都要开启一个新的连接,主要是为了减少Pingmesh造成的TCP并发。

       Agent要保证自己是可靠的,不会造成一些严重的后果,其次要保证自己使用的资源足够少,毕竟运行在每个Server上。两个Server ping的周期最小是10s,packet大小最大64kb。针对灵活的配置需求,Agent会定期去Controller上拉去pinglist,如果三次拉取不到,那么就会删除本地已有的pinglist,停止ping动作。

       在进行ping动作后,会将结果保存在内存中,当保存结果超过一定的阈值或者达到了超时时间,就将结果上传到Cosmos中用于分析,如果上传失败,会有重试次数则数据丢弃,保证Agent的内存使用。

3.5 数据存储和分析

       Pingmesh代理会定期将时延记录上传到Cosmos,与Pingmesh控制器类似,Cosmos的前端使用负载均衡和VIP(虚拟地址IP)进行扩展。 同时,Pingmesh 代理对延迟数据执行本地计算,并生成一组性能计数器,包括50%至90%的丢包率和网络延迟等。所有这些性能计数器都被收集,汇总和存储在Autopilot的PA服务。当收集到数据,Pingmesh有三种粒度对数据进行分析,分别以10min,1hour,1day的粒度进行统计汇总,数据的实时性最快也就是10min,Pingmesh还借助内部的基础设施能够拿到5min级别的数据结果。算是一种时间监控。

4. 总结和思考

        Pingmesh的基本思路是在服务器之间进行互ping动作,获取不同服务器之间的丢包率和时延信息,以最小代价得到机架内,机架间,机房间的网络质量。Pingmesh Controller通过生成pinglist文件确定服务器之间如何相互探测,Pingmesh Agent在所有服务器上运行,用来真正做 ping 动作的服务,数据存储和分析模块收集Pingmesh Agent模块输出结果进行分析。针对现有存储网络监控有时候从监控中无法抓到存储网络异常丢包情况,结合pingmesh思路,可以对现网存储服务器分组互Ping,获取网络丢包和时延监控信息,达到及时准确发现存储网络异常节点的目的。

文章来自个人专栏
监控组件
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0