性能分析与调优: Linux 网络性能 观测工具

发布时间:2024年01月12日

目录

一、实验

1.环境

2.ss

3.ip

4.ifconfig

5.nstat

6.netstat

7.sar

8.nicstat

9.ethtool

10.tcplife

11.tcptop

12.tcpretrans

13.bpftrace

14.tcpdump

15.Wireshark

二、问题

1.nicstat如何安装和使用

2.Wireshark如何安装使用


一、实验

1.环境

(1)主机

表1-1 主机

主机架构组件IP备注
prometheus

监测

系统

prometheus、node_exporter?192.168.204.18
grafana监测GUIgrafana192.168.204.19
agent?

监测

主机

node_exporter192.168.204.20

(2)网络性能观测工具

表1-2 网络性能观测工具

序号工具描述
1ss套接字统计信息
2ip网络接口和路由统计信息
3ifconfig网络接口统计信息
4nstat网络栈统计信息
5netstat多种网络栈和接口统计信息
6sar历史统计信息
7nicstat网络接口吞吐量和使用率
8ethtool网络接口驱动程序统计信息
9tcplife用连接细节跟踪TCP会话的寿命
10tcptop按主机和进程显示TCP吞吐量
11tcpretrans用地址和TCP状态跟踪TCP重传的情况
12bpftraceTCP/P栈踪迹:连接、数据包、掉线、延时
13tcpdump网络数据包嗅探器
14Wireshark图形化网络数据包检查器

2.ss

(1) 默认输出提供了关于套接字的高层次信息

[root@agent ~]# ss

(2)-t 只显示TCP套接字、-i 显示TCP内部信息、-e 显示扩展的套接字信息、-p 显示进程信息 、-m 内存使用信息

[root@agent ~]# ss -tiepm

(3)netlink

① netlink接口读取扩展信息,strace 开销的警告

[root@agent ~]# strace -e sendmsg,recvmsg ss -t

②netstat使用/proc/net 文件代替信息来源

[root@agent ~]# strace -e openat netstat -an

3.ip

(1) -s 在接口(link)上打印额外的统计信息

[root@agent ~]# ip -s link

(2) 路由表

[root@agent ~]# ip route

4.ifconfig

(1) 列出所有接口的配置

[root@agent ~]# ifconfig

5.nstat

(1) 输出由内核维护的各种网络指标,以及它们的SNMP名称

-s 避免重设计数器

[root@agent ~]# nstat -s

6.netstat

(1) 报告各种类型的网络统计数据

① -i 列出网络接口信息

[root@agent ~]# netstat -i

② -s 列出网络栈的统计信息

[root@agent ~]# netstat -s

(3)查询有关统计信息名称的拼写错误

[root@agent ~]# grep ^Tcp /proc/net/snmp

[root@agent ~]# grep ^Tcp /proc/net/netstat

7.sar

(1) 打印TCP统计信息

① 1秒1次,共计10次

[root@agent ~]# sar -n TCP 1 10

② passive/s 被动连接速率为每秒0.1个

(2)网络接口统计信息

[root@agent ~]# sar -n DEV 1

(3)网络接口统计信息列(IFACE)指定ens33接口

[root@agent ~]# sar -n DEV 1 | awk 'NR == 3 || $2 == "ens33"'

8.nicstat

(1) 输出包括吞吐量和使用率在内的网络接口统计信息

[root@agent nicstat-1.95]# nicstat -z 1 5

9.ethtool

(1) -S 打印驱动程序的统计信息

[root@agent nicstat-1.95]# ethtool -S ens33

(2)-i 显示驱动程序的详细信息

[root@agent nicstat-1.95]# ethtool -i ens33

(3)-k 显示接口的可调参数

[root@agent nicstat-1.95]# ethtool -k ens33

10.tcplife

(1) 跟踪TCP会话的声明周期?

[root@agent ~]# tcplife

11.tcptop

(1) 显示使用TCP最多的进程

[root@agent ~]# tcptop

12.tcpretrans

(1) 跟踪TCP重传,显示IP地址、端口的详细信息及TCP状态

[root@agent ~]# tcpretrans

13.bpftrace

(1) 按pid和进程名统计套接字accept的次数

[root@agent ~]# bpftrace -e 't:syscalls:sys_enter_accept* { @[pid, comm] = count(); }'

(2)按pid和进程名统计套接字connect的次数

[root@agent ~]# bpftrace -e 't:syscalls:sys_enter_connect { @[pid, comm] = count(); }'

(3) 按用户栈踪迹统计套接字connect的数量

[root@agent ~]# bpftrace -e 't:syscalls:sys_enter_connect { @[ustack, comm] = count(); }'

(4)按发送/接收的方向、CPU上的pid和进程名统计套接字的数量

[root@agent ~]# bpftrace -e 'k:sock_sendmsg,k:sock_recvmsg { @[func,pid, comm] = count(); }'

(5)CPU上的pid和进程名统计套接字的发送/接收字节数

[root@agent ~]# bpftrace -e 'kr:sock_sendmsg,kr:sock_recvmsg /(int32)retval > 0/ { @[pid, comm] = sum((int32)retval); }'

(6)按CPU上的pid和进程名称统计TCP连接数

[root@agent ~]# bpftrace -e 'k:tcp_v*_connect { @[pid, comm] = count(); }'

(7)按CPU上的pid和进程名称统计TCP接受的次数

[root@agent ~]# bpftrace -e 'k:inet_csk_accept { @[pid, comm] = count(); }'

(8)按CPU上的pid和进程名称统计TCP发送/接收的次数

[root@agent ~]# bpftrace -e 'k:tcp_sendmsg,k:tcp_recvmsg { @[func,pid, comm] = count(); }'

(9)TCP发送字节数的直方图

[root@agent ~]# bpftrace -e 'k:tcp_sendmsg { @send_bytes = hist(arg2); }'

(10)TCP接收字节数的直方图

[root@agent ~]# bpftrace -e 'kr:tcp_recvmsg /retval >= 0/ { @recv_bytes = hist(retval); }'

(11)按类型和远程主机统计TCP重传次数(IPv4)

[root@agent ~]# bpftrace -e 't:tcp:tcp_retransmit_* { @[probe, ntop(2, args->saddr)] = count(); }'

(12)对所有的TCP函数(会给TCP增加高额的开销)进行计数

[root@agent ~]# bpftrace -e 'k:tcp_* { @[func] = count(); }'

(13)按CPU上的pid和进程名称统计UDP发送/接收的次数

[root@agent ~]# bpftrace -e 'k:udp*_sendmsg,k:udp*_recvmsg { @[func,pid, comm] = count(); }'

(14)UDP发送字节数的直方图

[root@agent ~]# bpftrace -e 'k:udp_sendmsg { @send_bytes = hist(arg2); }'

(15)UDP接收字节数的直方图

[root@agent ~]# bpftrace -e 'kr:udp_recvmsg /retval >= 0/ { @recv_bytes = hist(retval); }'

(16)统计传输的内核的栈踪迹 数量

[root@agent ~]# bpftrace -e 't:net:net_dev_xmit { @[kstack] = count(); }'

(17)显示每个设备的接收CPU的直方图

[root@agent ~]# bpftrace -e 't:net:netif_receive_skb { @[str(args->name)] = lhist(cpu, 0 ,128, 1); }'

14.tcpdump

(1) 将ens33接口的数据写入/tmp 下的文件

[root@agent ~]# tcpdump -i ens33 -w /tmp/out.tcpdump

(2)从导出的文件检测数据包

[root@agent ~]# tcpdump -nr /tmp/out.tcpdump

(3)-n 禁用将IP地址解析为主机地址,-v 打印更丰富细节,-e 链路层报头,-X 十六进制地址转储?

[root@agent ~]# tcpdump -enr /tmp/out.tcpdump -vvv -X

15.Wireshark

(1)??启动Wireshark

[root@agent ~]# wireshark &

(2)指定ens33网卡,监听tcp 80端口

tcp.port == 80

二、问题

1.nicstat如何安装和使用

(1)下载

网络监控工具nicstat下载地址:

nicstat download | SourceForge.net

rpm包下载地址:

Packages in Fedora / RHEL / CentOS / EPEL - Package: nicstat

(2)解压

[root@agent opt]# tar -zxvf nicstat-1.95.tar.gz

(3)修改配置文件

[root@agent opt]# cd nicstat-1.95/
[root@agent nicstat-1.95]# cp Makefile.Linux  Makefile
[root@agent nicstat-1.95]# vim Makefile
[root@agent nicstat-1.95]# 

① 修改前:

② 修改后:

将CFLAGS = ? ? ? $(COPT) $(CMODEL)? ? 修改为??CFLAGS = ? ? ? $(COPT)?

原因:
1)Makefile里面默认是用32位系统下编译的,需要修改成64位;

2)如果不是64位机器则不需要修改Makefile。

(4)编译

[root@agent nicstat-1.95]# make -j 4 && make install

①如提示命令未找到

②需要安装gcc

[root@agent nicstat-1.95]# yum -y install gcc

③ 编译完成

(5)使用

[root@agent nicstat-1.95]# nicstat -z 1 

2.Wireshark如何安装使用

(1)搜索

[root@agent ~]# yum search wireshark

(2)安装

[root@agent ~]# yum install wireshark-gnome.x86_64

(3)启动Wireshark

[root@agent ~]# wireshark &

(4)指定ens33网卡,监听tcp 80端口

tcp.port == 80

文章来源:https://blog.csdn.net/cronaldo91/article/details/135545567
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。