服务器测评网
我们一直在努力

Linux sar命令参数多不会用?教你轻松看懂系统监控报告!

深入理解 Linux sar 命令

在 Linux 系统管理中,性能监控是确保系统稳定运行的关键环节,面对复杂的服务器环境,管理员需要高效、专业的工具来分析系统资源使用情况,Linux 系统自带的 sar(System Activity Reporter)命令正是这样一款功能强大的性能监控工具,它以详实的数据和灵活的输出格式,帮助管理员快速定位性能瓶颈,本文将详细介绍 sar 命令的核心功能、使用方法及实际应用场景。

Linux sar命令参数多不会用?教你轻松看懂系统监控报告!

sar 命令概述:系统性能的“透视镜”

sar 是 Linux 系统中 sysstat 软件包的一部分,主要用于收集、报告和分析系统的活动数据,与 tophtop 等实时监控工具不同,sar 的核心优势在于其历史数据记录能力,它通过后台守护进程 sysstat 定期采集系统性能数据,并存储在 /var/log/sa/ 目录下的二进制文件中,管理员可以随时查询过去任意时间段的系统状态,为性能调优和故障排查提供可靠依据。

sysstat 软件包默认未安装在部分 Linux 发行版中,需手动安装,以 Ubuntu/Debian 为例,可通过 sudo apt install sysstat 命令安装;CentOS/RHEL 系统则使用 sudo yum install sysstat,安装完成后,sysstat 服务会自动启动,并默认每 10 分钟采集一次数据,保留 7 天的历史记录。

核心功能:多维度性能指标监控

sar 命令支持对系统多种资源进行监控,涵盖 CPU、内存、磁盘 I/O、网络、进程等关键领域,通过不同的选项,管理员可以精准聚焦特定性能指标,实现精细化分析。

CPU 性能监控

CPU 是系统的核心组件,sar 命令提供了丰富的 CPU 相关统计选项:

  • -u:显示 CPU 利用率,包括用户态(%user)、内核态(%system)、空闲(%idle)、等待 I/O(%iowait)等指标。sar -u 5 10 表示每 5 秒采样一次,共 10 次,实时展示 CPU 使用情况。
  • -q:显示队列长度和负载平均值,反映系统负载压力。%runq-sz 表示运行队列中的进程数,%ldavg-1/%ldavg-5/%ldavg-15 分别为 1 分钟、5 分钟、15 分钟的系统负载平均值。
  • -P {ALL|cpu}:指定监控特定 CPU 核心或所有核心。sar -P 0 -u 3 5 仅监控第 0 号核心的 CPU 使用情况。

内存与交换空间监控

内存不足会导致系统性能急剧下降,sar 命令可帮助管理员掌握内存使用动态:

  • -r:显示内存利用率,包括已用内存(kbmemused)、可用内存(kbmemfree)、缓冲区(kbbuffers)、缓存(kbcached)等。%memused 表示内存使用百分比,是判断内存是否紧张的关键指标。
  • -B:显示内存分页统计,如 pgpgin/s(每秒读入内存页数)、pgpgout/s(每秒写出内存页数)、fault/s(每秒缺页异常次数),用于分析内存交换效率。
  • -W:监控交换空间使用情况,pswpin/spswpout/s 分别表示每秒交换区写入和读出的页数,频繁的交换操作可能意味着物理内存不足。

磁盘 I/O 监控

磁盘 I/O 性能直接影响文件读写和数据库操作等场景,sar 命令的磁盘监控功能尤为重要:

Linux sar命令参数多不会用?教你轻松看懂系统监控报告!

  • -b:显示 I/O 和传输速率统计,包括 tps(每秒传输次数)、rtps(每秒读传输次数)、wtps(每秒写传输次数)、bread/s(每秒读取块数)、bwrtn/s(每秒写入块数)等。
  • -d:按设备监控磁盘 I/O,需指定磁盘设备名(如 sda),输出包括 %util(磁盘利用率)、await(平均等待时间,单位毫秒)、svctm(平均服务时间)等指标,%util 超过 70% 可能意味着磁盘瓶颈。

网络性能监控

网络流量和连接状态是系统健康的重要参考,sar 命令提供了网络相关的统计选项:

  • -n {DEV|EDEV|SOCK}
    • DEV:显示网络设备统计,如 rxpck/s(每秒接收数据包)、txpck/s(每秒发送数据包)、rxkB/s(每秒接收字节数)、txkB/s(每秒发送字节数)。
    • EDEV:显示网络设备错误统计,如 rxerr/s(每秒接收错误包)、txerr/s(每秒发送错误包)、coll/s(每秒冲突数)。
    • SOCK:显示套接字统计,如 twsock(等待关闭的套接字数)、allocsock(已分配套接字数)。

数据采集与历史数据查询

sar 命令的强大之处在于其历史数据管理能力。sysstat 服务通过 sa1sa2 脚本自动采集数据:

  • sa1:每 10 分钟执行一次,将 CPU、内存等数据写入二进制文件 /var/log/sa/saDDDD 为当天的日期)。
  • sa2:每天生成一份报告,保存为 /var/log/sa/sarDD 文本文件,便于长期查阅。

查询历史数据

  • 按日期查询sar -f /var/log/sa/sa20 查询 20 号的历史数据。
  • 指定时间范围sar -s 10:00 -e 18:00 -f /var/log/sa/sa20 查询 20 号 10:00 至 18:00 的数据。
  • 查看默认报告sar -u 直接显示当天的历史 CPU 使用统计(需 sysstat 服务已运行)。

手动采集数据

若需临时监控,可使用 sar 命令的实时模式:

  • sar -u 1 5:每秒采样一次,共 5 次,实时显示 CPU 使用率。
  • sar -d 3 10:每 3 秒监控一次磁盘 I/O,共 10 次。

实际应用场景与案例分析

CPU 性能瓶颈定位

某服务器反映响应缓慢,管理员使用 sar -u 查询历史数据,发现 %iowait 指标长期高于 30%,而 %idle 低于 10%,结合 sar -d 查看磁盘 I/O,发现 %util 达到 90%,await 超过 100ms,判断为磁盘 I/O 瓶颈,通过优化磁盘分区或更换 SSD,解决了性能问题。

内存溢出预警

在运行数据库的服务器上,管理员通过 sar -r 监控到 %memused 持续攀升,接近 90%,pswpin/spswpout/s 频繁波动,这表明物理内存不足,系统频繁使用交换空间,导致性能下降,通过增加内存或优化应用程序内存使用,避免了系统崩溃。

网络流量异常

某网站突发访问卡顿,管理员使用 sar -n DEV 查看网络历史数据,发现 rxpck/stxpck/s 短时间内激增 10 倍,rxerr/stxerr/s 陡增,结合防火墙日志,判断为 DDoS 攻击,通过限制流量和启用防护措施,恢复了服务。

Linux sar命令参数多不会用?教你轻松看懂系统监控报告!

高级技巧与注意事项

自定义报告格式

-o 选项可将输出保存为二进制文件,便于后续分析:sar -o output_file -u 1 5 将数据保存至 output_file,再通过 sar -f output_file 查看。

结合 cron 定时任务

若需自定义采集频率,可修改 /etc/cron.d/sysstat 文件中的 sa1sa2 执行间隔,或通过 cron 创建自定义任务。

注意事项

  • 数据保留周期:默认历史数据保留 7 天,若需延长,可修改 /etc/sysstat/sysstat 文件中的 HISTORY 参数。
  • 权限问题sar 命令需 root 权限才能访问系统性能数据。
  • 数据准确性:确保 sysstat 服务正常运行,避免因采集中断导致数据缺失。

sar 命令作为 Linux 系统性能监控的“瑞士军刀”,凭借其全面的数据指标、灵活的历史查询能力和直观的输出格式,成为系统管理员不可或缺的工具,无论是日常性能巡检、故障排查,还是容量规划,sar 都能提供精准的数据支持,掌握 sar 命令的使用方法,不仅能提升系统管理效率,更能为业务稳定运行保驾护航,在实际应用中,建议结合其他监控工具(如 vmstatiostat),形成多维度的性能监控体系,全面保障 Linux 系统的健康运行。

赞(0)
未经允许不得转载:好主机测评网 » Linux sar命令参数多不会用?教你轻松看懂系统监控报告!