当前位置: 首页 > 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 捕获内核级警告(如内存不足、队列溢出)。
    结合这些工具,可精准评估调优效果并快速排查问题。
http://www.xdnf.cn/news/259057.html

相关文章:

  • 第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年 4 月 24 日真题(选择题)
  • Python Cookbook-6.16 用 Borg 惯用法来避免“单例”模式
  • Codeforces Round 1022 (Div. 2)(ABC)
  • GESP2024年6月认证C++八级( 第三部分编程题(1)最远点对)
  • 【愚公系列】《Manus极简入门》011-习惯养成教练:“习惯塑造师”
  • 【Java IO流】File类基础详解
  • 【IPMV】图像处理与机器视觉:Lec9 Laplace Blending 拉普拉斯混合
  • 常见工业汽车行业通讯接口一览表
  • vulkanscenegraph显示倾斜模型(6.2)-记录与提交
  • 数字智慧方案5877丨智慧交通项目方案(122页PPT)(文末有下载方式)
  • OpenLayers+WebGIS实时协作黑科技!多人同步标绘神器
  • 使用xlwings将两张顺序错乱的表格进行数据核对
  • 二叉搜索树的判断(双指针解决)
  • 深度残差网络ResNet
  • Controller层接收参数方式
  • 瑞萨 EZ-CUBE2 调试器
  • AI赋能新媒体运营:效率提升与能力突破实战指南
  • ZYNQ工业级串口方案:AXI UART 16550扩展RS-485实战(自动方向控制+Linux驱动)
  • AI大模型-微调和RAG方案选项
  • 友元函数和友元类
  • 【学习笔记】深入理解Java虚拟机学习笔记——第1章 走进Java
  • 4.1 模块概述
  • JavaScript基础-逻辑运算符
  • 【质量管理】现代TRIZ问题识别中的功能分析——组件分析
  • 网站怎样备份网站,备份网站数据的方法
  • 正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真
  • re题(52)BUUCTF-[FlareOn5]Minesweeper Championship Registration
  • 深度理解linux系统—— 进程优先级
  • 深入理解C++构造函数:从入门到实践
  • AXI中的burst有几种?都用在什么场景中