Linux-常用监控工具

在这里插入图片描述

以下是对 Linux 系统中常用监控工具(netstatssdmesg)的系统性介绍,涵盖其核心功能、典型用法及实际应用场景,帮助您分析系统状态和内核参数调整后的效果:


1. netstat -s:网络协议栈统计监控

功能

netstat 用于显示网络连接、路由表、接口统计等信息,-s 参数专注于网络协议栈的详细统计(包括 TCP、UDP、ICMP 等)。
适用场景

  • 分析 TCP 连接错误、重传、丢包等网络问题。
  • 验证 sysctl 网络参数调整后的效果(如 tcp_tw_reusetcp_syncookies)。
关键输出解析
$ netstat -s
# TCP 统计部分
Tcp:
    12345 active connections openings   # 主动建立的连接数
    6789 passive connection openings    # 被动接受的连接数
    100 failed connection attempts      # 失败连接尝试(如 SYN 重试超限)
    500 segments retransmitted          # 数据包重传次数(高值可能预示网络不稳定)
    200 invalid SYN cookies received    # 无效 SYN Cookie(可能遭受 SYN Flood 攻击)
    300 resets sent                      # RST 包发送次数(异常关闭连接)

# UDP 统计部分
Udp:
    50 packets received    # 接收的 UDP 包总数
    10 packet receive errors  # 接收错误(如缓冲区溢出)
常用参数
  • -s:显示所有协议统计。
  • -t:仅显示 TCP 统计。
  • -u:仅显示 UDP 统计。
  • -c:持续刷新输出(实时监控)。
实际应用
  • 检测网络丢包
    netstat -s | grep -E "segments retransmitted|packet receive errors"
    
  • 分析连接失败
    netstat -s | grep "failed connection attempts"
    

2. ss -s:套接字状态统计与监控

功能

ss(Socket Statistics)是 netstat 的现代替代工具,性能更高,支持更详细的套接字信息。ss -s 显示套接字状态的汇总统计。
适用场景

  • 快速查看系统当前连接数、不同状态(如 ESTABLISHEDTIME-WAIT)的分布。
  • 监控高并发场景下的连接队列溢出(结合 net.core.somaxconn 调优)。
关键输出解析
$ ss -s
Total: 456  
TCP:   320 (estab 200, closed 80, orphaned 0, timewait 40)  
UDP:   10  
RAW:   1  
FRAG:  0  

# 连接状态详解:
# - estab:已建立的连接数
# - timewait:TIME-WAIT 状态连接数(过多可能需调整 tcp_max_tw_buckets)
# - orphaned:无主连接(可能应用未正确关闭)
常用参数
  • -s:显示汇总统计。
  • -t:仅显示 TCP 套接字。
  • -u:仅显示 UDP 套接字。
  • -n:禁用域名解析(加快输出)。
  • -o:显示计时器信息(如连接超时)。
实际应用
  • 查看 TIME-WAIT 连接数
    ss -s | grep "timewait"
    
  • 监控连接队列溢出
    ss -tnlp | grep "LISTEN"  # 查看监听队列的 Recv-Q(当前积压数)和 Send-Q(最大容量)
    

3. dmesg:内核日志与硬件事件监控

功能

dmesg 显示内核环形缓冲区中的日志,记录硬件事件、驱动状态、内核错误等信息。
适用场景

  • 检测内核参数调整后的错误或警告(如内存分配失败、网络丢包)。
  • 排查硬件故障或驱动兼容性问题。
关键输出解析
$ dmesg
[ 1234.567] IPv4: martian source 192.168.1.100 from 10.0.0.1  # 异常源 IP(路由问题)
[ 2345.678] TCP: time wait bucket table overflow              # TIME-WAIT 连接超过限制
[ 3456.789] Out of memory: Kill process 1234 (java)           # 内存耗尽触发 OOM Killer
[ 4567.890] eth0: link up                                     # 网卡链路状态变化
常用参数
  • -T:显示人类可读的时间戳。
  • -k:仅显示内核消息。
  • -l:按日志级别过滤(如 -l err 仅显示错误)。
  • -H:隐藏时间戳和主机信息。
实际应用
  • 实时监控内核事件
    dmesg -w  # 持续输出新日志(类似 tail -f)
    
  • 筛选网络相关错误
    dmesg | grep -iE "tcp|udp|ipv4|eth0"
    
  • 查看 OOM 事件
    dmesg | grep "Out of memory"
    

4. 工具对比与联合使用

工具核心功能优势典型场景
netstat -s协议栈统计(TCP/UDP/ICMP)历史兼容性强,输出直观分析网络错误、重传统计
ss -s套接字状态与连接统计性能高效,支持更多细节实时监控连接数、队列积压
dmesg内核日志与硬件事件直接反映内核级问题排查内核参数错误、硬件故障
联合使用案例

场景:调整 net.ipv4.tcp_max_syn_backlog 后验证 SYN 队列溢出情况。

  1. 查看当前 SYN 队列积压
    ss -tnl | grep ":80"  # 查看 Recv-Q(当前积压数)与 Send-Q(队列容量)
    
  2. 监控 SYN 重传统计
    netstat -s | grep "SYNs to LISTEN"
    
  3. 检查内核日志中的队列溢出警告
    dmesg | grep "TCP: Possible SYN flooding"
    

5. 自动化监控与扩展工具

  • 脚本化监控
    # 定期记录 TCP 统计到文件
    while true; do
      netstat -s | grep "segments retransmitted" >> /var/log/tcp_retrans.log
      sleep 60
    done
    
  • 高级工具扩展
    • sar(sysstat 包):长期性能数据收集(如网络吞吐、CPU 使用率)。
    • nmon:实时系统资源监控(支持网络、磁盘、CPU 等)。
    • Prometheus + Grafana:可视化监控与告警。

总结

通过 netstat -sss -sdmesg 的组合使用,可以全面监控网络状态、套接字行为及内核事件,尤其在调整 sysctl 参数后:

  1. netstat -s 用于分析协议层错误(如重传、丢包)。
  2. ss -s 快速定位连接状态异常(如 TIME-WAIT 堆积)。
  3. dmesg 捕获内核级警告(如内存不足、队列溢出)。
    结合这些工具,可精准评估调优效果并快速排查问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值