目录
(1)主机
表1-1 主机
主机 | 架构 | 组件 | IP | 备注 |
prometheus | 监测 系统 | prometheus、node_exporter | ?192.168.204.18 | |
grafana | 监测GUI | grafana | 192.168.204.19 | |
agent? | 监测 主机 | node_exporter | 192.168.204.20 |
(2)网络性能观测工具
表1-2 网络性能观测工具
序号 | 工具 | 描述 |
1 | ss | 套接字统计信息 |
2 | ip | 网络接口和路由统计信息 |
3 | ifconfig | 网络接口统计信息 |
4 | nstat | 网络栈统计信息 |
5 | netstat | 多种网络栈和接口统计信息 |
6 | sar | 历史统计信息 |
7 | nicstat | 网络接口吞吐量和使用率 |
8 | ethtool | 网络接口驱动程序统计信息 |
9 | tcplife | 用连接细节跟踪TCP会话的寿命 |
10 | tcptop | 按主机和进程显示TCP吞吐量 |
11 | tcpretrans | 用地址和TCP状态跟踪TCP重传的情况 |
12 | bpftrace | TCP/P栈踪迹:连接、数据包、掉线、延时 |
13 | tcpdump | 网络数据包嗅探器 |
14 | Wireshark | 图形化网络数据包检查器 |
(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
(1) -s 在接口(link)上打印额外的统计信息
[root@agent ~]# ip -s link
(2) 路由表
[root@agent ~]# ip route
(1) 列出所有接口的配置
[root@agent ~]# ifconfig
(1) 输出由内核维护的各种网络指标,以及它们的SNMP名称
-s 避免重设计数器
[root@agent ~]# nstat -s
(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
(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"'
(1) 输出包括吞吐量和使用率在内的网络接口统计信息
[root@agent nicstat-1.95]# nicstat -z 1 5
(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
(1) 跟踪TCP会话的声明周期?
[root@agent ~]# tcplife
(1) 显示使用TCP最多的进程
[root@agent ~]# tcptop
(1) 跟踪TCP重传,显示IP地址、端口的详细信息及TCP状态
[root@agent ~]# tcpretrans
(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); }'
(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
(1)??启动Wireshark
[root@agent ~]# wireshark &
(2)指定ens33网卡,监听tcp 80端口
tcp.port == 80
(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
(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