美文网首页
docker 网络监控故障排查---网络数据包流程监控二

docker 网络监控故障排查---网络数据包流程监控二

作者: 白馨_1114 | 来源:发表于2020-04-21 18:21 被阅读0次

以线上运行的中间件为例,我们一般监控container_network_receive_bytes_total、container_network_transmit_bytes_total、container_network_receive_errors_total、container_network_transmit_errors_total、container_network_receive_packets_dropped_total、container_network_transmit_packets_dropped_total以上几项。
其中container_network_receive_bytes_total、container_network_transmit_bytes_total、container_network_receive_errors_total就是网络进出流量,这很好理解。

container_network_transmit_errors_total、container_network_receive_packets_dropped_total、container_network_transmit_packets_dropped_total这几项到底是怎么取的,如果遇到问题,该怎么排查这个错误。
首先是如何取得这几项:
/proc/<pid>/net/dev(物理借获取方式也是/proc/net/dev)这个pid通过docker top dockerid可以获得。
那么检测到drop,err该如何排查。为了解决这个问题,我们先了解一下网络接口。

一般我们都用config来整体看一下网络接口,这里的信息是很复杂的。它包含网络接口很复杂。
来看一台测试机器:

image.png

以上网络接口包含:物理网卡,逻辑网卡,网桥。为了厘清关系,我们先来查看物理网卡:
lspci | egrep -i --color 'network|ethernet’

image.png

存在四个物理网卡,分别是em1、em2、em3、em4。由于em3、em4关闭,所以只能通过ifconfig -a 来查看。

image.png

是否关闭网卡,可以在/etc/sysconfig/network-scripts中配置。但我们无法从ifconfig -a中去察觉。
网卡me3配置,vim ifcfg-em3
ONBOOT=NO代表启动时,关闭网卡;
TYPE=Ethernet标识网卡。

image.png

网卡em1配置,vim ifcfg-em1
ONBOOT=YES代表启动时,开启网卡;
TYPE=Ethernet标识网卡;
Master=bond0bond0是一个虚拟网卡;
Slave=yes, 表示角色为从;
em2配置与em1相同。

image.png

综上em1~em4都是物理网卡。em1,em2都是打开的网卡。em3,em4关闭。我们从em1,em2的配置中了发现em1,em2都是bond0slave
这其实是双网卡设置主备模式:实现当一块网卡宕掉时,另外一块网卡可以自动顶替宕掉的网卡工作,保障网络正常访问。
虚拟网卡bond0配置:

image.png

IPADDR:网卡是工作在链路层的,提供ip我们就可以在ip层连接这个逻辑网卡。有的程序比如pika就支持配置网络接口,绑定合适的网卡。
ONBOOT=YES代表启动时,开启逻辑网卡;
miimon是用来进行链路监测的。比如:miimon=1000,单位是ms(毫秒)是1000ms,即是1秒那么系统每100ms监测一次链路连接状态,如果不通就转入其他网卡线路;
mode共有七种(0~6),这里解释两个常用的选项。
mode=0:表示load balancing (round-robin)为负载均衡方式,两块网卡都在工作。
mode=1:表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,其中一块网卡在工作(若em1断掉),则自动切换到另一个块网卡(em2)。
我们的测试机上采用的是第二种模式,也就是主备模式。通过ip从外部访问,访问的是这个逻辑网卡bond0,实际对应的是em1。如果发现drop,err错误。最终可以定位到em1,通过ethtool -S em1 来分析。

image.png

采用docker虚拟化的网络环境,这个同以上的物理环境还是有所不同。bond0进行物理层面的冗余
brige主要用在KVM虚拟化环境下的冗余。比如ifconfig中显示的docker0其实就是bridge
可以通过命令brctl show查看已经存在的网桥:

image.png

Docker有四种网络模式,默认的就是Bridge模式。在初始化时,就会创建bridge docker0
其中docker0中的interface就是docker ps -a下这三个容器的对应接口。

image.png

进入docker b61e56cc73a1内部查看网络配置:
docker exec -it b61e56cc73a1 /bin/sh

image.png

结合本机,bridge模式如图所示:


image.png

所以虚拟化网络环境与逻辑网卡一样,一旦发生drop,err。最终还是要定位到物理网卡。经过分析,对于这台机器,最终将定位到物理网卡em1。通过ethtool -S em1 来分析即可。帮我们进一步定位是在网卡,还是驱动,还是内核缓冲的问题(具体见上篇)。

相关文章

  • docker 网络监控故障排查---网络数据包流程监控二

    以线上运行的中间件为例,我们一般监控container_network_receive_bytes_total、c...

  • 【故障案例】Docker与zabbix故障01

    背景 今天群里有小伙伴问题一个Docker跑zabbix监控故障. 同志们,docker部署zabbix 监控网络...

  • 网卡网络驱动监控---网络数据包流程监控一

    这一系列的目标是为了让我们的监控更全面,帮助我们优化和发现潜在问题。它涉及到很多方面,比如连接池的优化,系统层面的...

  • 使用wireshark学习网络协议

    早就听说了Wireshark是一个强大的网络数据包分析软件,可以详细的展示网络数据包的交换过程,是监控网络请求定位...

  • centos 常用命令/工具下载

    vim yum 工具 安装上传下载插件 docker netstat命令(端口网络监控)

  • 三级网络技术第11章:网络管理技术(一)

    学习目的:掌握管理技术基本概念、监控和管理网络的常用手段、查找和排除网络故障。 11.1.1 网络管理的基本知识 ...

  • 远程视频监控的实现

    远程视频监控,也称远程网络监控,是指监控者不在监控摄像头或其他摄像采集设备周围,通过网络远距离查看现场监控视频的场...

  • 网络监控

    中国拥有世界上最复杂的网络环境,除去中国电信,中国联通,中国移动三大主流运营商,还有几千的二三级小运营商,中国目前...

  • 网络监控

    本文的意义 利用苹果原生的类Reachability,实时监控网络的状态 利用框架AFNetworking实时监控...

  • 网络监控

    1.在网络应用中,需要对用户设备的网络状态进行实时监控,目的是让用户了解自己的网络状态,防止一些误会(比如怪应用无...

网友评论

      本文标题:docker 网络监控故障排查---网络数据包流程监控二

      本文链接:https://www.haomeiwen.com/subject/wnupihtx.html