当前位置: 首页 > news >正文

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; donetstat -s | grep "segments retransmitted" >> /var/log/tcp_retrans.logsleep 60
    done
    
  • 高级工具扩展
    • sar(sysstat 包):长期性能数据收集(如网络吞吐、CPU 使用率)。
    • nmon:实时系统资源监控(支持网络、磁盘、CPU 等)。
    • Prometheus + Grafana:可视化监控与告警。

总结

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

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

相关文章:

  • 【Touching China】2002-2006
  • C++_STL
  • MLPerf基准测试工具链定制开发指南:构建领域特异性评估指标的实践方法
  • CPU:AMD的线程撕裂者(Threadripper)系列
  • 18. LangChain分布式任务调度:大规模应用的性能优化
  • PostgreSQL 查看表膨胀情况的方法
  • [Control-Chaos] Heart Broken(心臟破裂)
  • CPO-BP+NSGA,豪冠猪优化BP神经网络+多目标遗传算法!(Matlab完整源码和数据)
  • 2.maven 手动安装 jar包
  • IntelliJ IDEA 保姆级使用教程
  • 密码学_加密
  • 【Redis】List类型
  • Python实例题:Python获取小说数据并分析
  • 【项目设计】MySQL 连接池的设计
  • 数据结构之平衡二叉树
  • 非对称加密算法(RSA、ECC、SM2)——密码学基础
  • 会话历史管理——持久化
  • 2.4 GHz频段的11个信道通过 5 MHz中心频率间隔 实现覆盖
  • 学习:困?
  • vue2和vue3组件如何监听子组件生命周期
  • 郭少雄导演逝世,享年82岁
  • “矿茅”国际化才刚开始?紫金矿业拟分拆境外黄金矿山资产于港交所上市
  • AI世界的年轻人|与总书记交流过的“00后”,渴望紧握时代赋予的接力棒
  • 五一假期天气将大转变,南方新一轮降雨来袭
  • 从“长绳系日”特展看韩天衡求艺之路
  • 莫名的硝烟|“我们最好记住1931年9月18日这个日子”