《云原生网络数据面可观测性最佳实践》——三、容器网络常见观测工具及特点——1.常见网络排查工具

简介: 《云原生网络数据面可观测性最佳实践》——三、容器网络常见观测工具及特点——1.常见网络排查工具

1) 主动探测类工具

iCMP协议探测工具ping

ping工具是基于icmp协议的网络探测工具,通过发送icmp报文来检测网络的连通性与延迟,通常我们都会使用ping来判断网络是否联通,除此以外还有一些其他的用途:

#  通过指定包的大小来测试网络拥塞程度
▶ ping -s 1000 alibaba-inc.com
# 通过发送指定数量的包来测试网络的延迟程度
▶ ping -c 20 10.1.63.253

 在排查网络问题时,ping的主要作用有两个:

最常用功能,使用ping验证端到端网络层连通性

在排查偶发延迟问题时,使用ping验证延迟是否发生在网络层以下

 

支持多协议的应用层探测工具cURL

curl工具是一个支持许多应用层协议的客户端工具,功能非常多,在网络问题排查中,通常使用curl来判断应用层是否正常工作,在使用curl时,他的常见用法如下:

# 下载远程服务器渲染后的html文件到本地
curl -o thatpage.html http://www.example.com/
# 访问ipv6的远程服务端
curl http://[2001:1890:1112:1::20]/overview.html
#  指定访问的域名的方式访问远程服务器
curl -H "Host:" www.server.com

 curl在问题排查过程中主要的作用是用于定界问题的边界,通常如果curl可以正常访问,说明用户的问题不涉及网络,主要是用户应用程序的问题。

 

TCP连接探测工具telnet

telnet是一个基于tcp的用于调试的协议,同时提供了telnet客户端,在排查问题的过程中,通常用于谭政tcp连接是否可靠,是否会中断,他的常见用法如下:

# 访问一个tcp远端,端口为80,不会输入任何信息
telnet www.example.com 80

telnet的curl具有很多相同的作用,包括确认tcp连接的正常等等,但是telnet在问题排查中也具有一些独特的用法,主要原因是telnet仅仅建立tcp连接,并不会和curl一样发送应用层的报文,因此可以用作:

验证tcp连接超时或者应用层超时设置是否正常生效

模拟长时间不发包场景,验证连接是否会中断

 

2) 当前状态捕获类

网络状态分析工具netstat

netstat工具是net-tools工具集提供的查看网络相关的状态信息的工具,他的数据来源主要是procfs虚拟文件系统,通过解析和聚合网络相关的信息来查看网络状态。

通过以下几个常用的命令可以很快掌握netstat的用法:

# 查看当前netns下的tcp/udp的本地信息,不显示域名
❯ netstat -tulpn
# 查看当前netns下的snmp统计信息
❯ netstat -s

套接字状态分析工具ss

ss是iproute2工具集提供的查看套接字信息的工具,很大程度上可以取代netstat工具,ss通过netlink机制从内核中获取套接字的当前状态,因此可以获得比netstat更加详实的信息,包括keepalive定时器的剩余时间,tcp套接字的拥塞控制状态以及窗口选择算法等。

 

通过以下几个常用的命令可以很快掌握ss的用法:

# 获取当前所有存活的tco套接字,其中p参数会额外获取到套接字所属的进程和用户
ss -natp
# 查看不同类型的套接字的统计信息
ss -s
# 查看不同
ss -mt
# 查看所有存货的套接字信息,并且将keepalive定时器信息输出
ss -o

相比于netstat,ss命令是比较全面的提升,主要体现在使用了netlink协议之后在对系统的负载压力方面的减轻以及信息的增多,在排查工作中尽量使用ss命令,尤其是在涉及到tcp keepalive相关的问题的排查中,能够更好的获取到有价值的信息。

句柄占用查找工具lsof

lsof命令用于查找套接字监听相关的进程,通常我们也可以依赖ss命令获取到想用的信息,不过lsof命令的适用范围要远比我们常用的广泛,通过以下几个命令可以比较快的掌握lsof的使用方法:

# 查看当前netns下,tcp的22端口绑定的进程
lsof -i TCP:22
# 查看当前存在的网络连接信息,这里不会显示具体的地址端口信息,但是会有句柄相关的信息
lsof -i

 通过lsof,我们可以在排查问题时比较快的找出产生网络干扰的进程。

 

网络配置查看工具ip

ip命令是iproute2工具集提供的网络配置工具,和ss命令类似的是,ip命令主要依靠netlink协议与底层Linux内核进行通信,ip命令能够很快的获取网络当前的配置,常见的使用方法如下:

# 查看相同netns下的eth0网卡的信息
ip a show dev eth0
# 查找/var/run/netns路径下的具名netns文件并打印,对于containerd,可以查找到所有pod的netns,对于docker,由于其netns具名文件路径在/var/run/docker/netns,因此无法获取到
ip netns ls
# 将某个pod中的路由信息输出
❯ ip netns exec cni-d7108c65-eb71-3294-2b10-e1517eec0a32 ip r
default via 10.0.0.23 dev eth0 mtu 1450
10.0.0.23 dev eth0 scope link
# 查看某个pod中网络层出方向的路由是否可达
❯ ip netns exec cni-d7108c65-eb71-3294-2b10-e1517eec0a32 ip r get 10.1.17.192
10.1.17.192 via 10.0.0.23 dev eth0 src 10.0.0.18 uid 0
cache mtu 1450
# 切换netns到指定的pod中,与nsenter功能类似
ip netns exec cni-d7108c65-eb71-3294-2b10-e1517eec0a32 bash
# 查看相同netns下的arp表及邻居节点的可达状态
ip neigh

 ip命令能够让我们在排查问题时较快的掌握排查的网元的状态信息,尤其是在容器场景,ip命令对netns的适配能够让我们快速在多个pod之间进行切换,提升排查的效率。

实时流量观察工具sar

sar工具是一个sysstat工具集提供的功能强大的性能分析工具,能够对网络流量进行实时的监控和分析,与iftop等工具相比,sar覆盖的范围更广泛,他的主要使用方法如下:

# 观察网卡设备的流量,每隔1s进行采样,一共采样5次
sar -n DEV 1 5
# 查看块设备的io情况,每隔1s采样,持续3次,输出到文件中,这个保存是二进制的
sar -b 1 3 -o blockio.log
# 将上面保存的块设备速率文件转换成可读的方式输出到csv文件中
sadf -d blockio.log | sed 's/;/,/g' > blockio.csv
# 查看cpu调度队列的情况,用法与其他场景类似
sar -q 1 3
相关文章
|
2月前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
1月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
14天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
79 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
3天前
|
监控 安全 Cloud Native
阿里云容器服务&云安全中心团队荣获信通院“云原生安全标杆案例”奖
2024年12月24日,阿里云容器服务团队与云安全中心团队获得中国信息通信研究院「云原生安全标杆案例」奖。
|
5天前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
4天前
|
负载均衡 容灾 Cloud Native
云原生应用网关进阶:阿里云网络ALB Ingress 全能增强
在过去半年,ALB Ingress Controller推出了多项高级特性,包括支持AScript自定义脚本、慢启动、连接优雅中断等功能,增强了产品的灵活性和用户体验。此外,还推出了ingress2Albconfig工具,方便用户从Nginx Ingress迁移到ALB Ingress,以及通过Webhook服务实现更智能的配置校验,减少错误配置带来的影响。在容灾部署方面,支持了多集群网关,提高了系统的高可用性和容灾能力。这些改进旨在为用户提供更强大、更安全的云原生网关解决方案。
39 4
|
26天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
26天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
1月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器化到微服务
本文将带领读者踏上云原生的旅程,深入探讨容器化和微服务架构的概念、优势以及它们如何共同推动现代软件的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务应用,并解释相关的配置和操作。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供有价值的见解和实操指南。
|
2月前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。

热门文章

最新文章