全能系统监控工具dstat

本文详细介绍了dstat这一多功能系统资源统计工具,不仅涵盖了其基本使用方法,还深入解析了如何通过各种选项来监控CPU、磁盘、网络、内存及系统负载等关键指标。此外,文章还分享了高级用法,如定位资源消耗高的进程和用户,以及获取其他应用信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近公司组织了培训,看到老哥讲了系统性能优化一节,使用了“dstat -lcdngy”命令进行系统监控查看,感觉很好用,之前一直用个top vmstat等,看到这个工具后感觉必须马上学习一下,下面这个是我找到的一个比较好的内容。

一、什么是dstat?

通过man帮助,可以看到官方对dstat的定义为:多功能系统资源统计生成工具( versatile tool for generating system resource statistics)。在获取的信息上有点类似于top、free、iostat、vmstat等多个工具的合集,官方解释为vmstat、iostat、ifstat等工具的多功能替代品,且添加了许多额外的功能(Dstat is a versatile replacement for vmstat, iostat and ifstat. Dstat overcomes some of the limitations and adds some extra features.);其结果可以保持到csv文件,使用脚本或第三方工具对性能进行分析利用(如通过监控平台监控,也可以保持到数据库)。在Centos 6.x系统上安装基本服务器即默认安装,而在其他操作系统可能需要手动安装。

二、dstat的基本使用:

2.1 dstat的默认选项

与许多命令一样,dstat命令有默认选项,执行dstat命令不加任何参数,它默认会收集-cpu-、-disk-、-net-、-paging-、-system-的数据,一秒钟收集一次。 默认输入 dstat 等于输入了dstat -cdngy 1或dstat -a 1。

2.2 dstat的常用选项:

dstat的用法如下:

dstat [-afv] [options..] [delay [count]]

 

使用 dstat -h查看全部选项,这里不逐一列举,下面简单介绍下常用选项

常用选项如下:

# 直接跟数字,表示#秒收集一次数据,默认为一秒;dstat 5表示5秒更新一次

-c,--cpu   统计CPU状态,包括 user, system, idle(空闲等待时间百分比), wait(等待磁盘IO), hardware interrupt(硬件中断), software interrupt(软件中断)等;

-d, --disk 统计磁盘读写状态

-D total,sda 统计指定磁盘或汇总信息

-l, --load 统计系统负载情况,包括1分钟、5分钟、15分钟平均值

-m, --mem 统计系统物理内存使用情况,包括used, buffers, cache, free

-s, --swap 统计swap已使用和剩余量

-n, --net 统计网络使用情况,包括接收和发送数据

-N eth1,total  统计eth1接口汇总流量

-r, --io 统计I/O请求,包括读写请求

-p, --proc 统计进程信息,包括runnable、uninterruptible、new

-y, --sys 统计系统信息,包括中断、上下文切换

-t 显示统计时时间,对分析历史数据非常有用

--fs 统计文件打开数和inodes数

以上这些就是最常用的选项,而一般都组合使用,个人比较常用的是:

  • dstat -cmsdnl -D sda9 -N lo,etho 100 5

三、监测界面各参数含义(部分)

 

Procs

  • r:运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1) 
  • b:处于不可中断状态的进程数,常见的情况是由IO引起的

Memory

  • swpd: 切换到交换内存上的内存(默认以KB为单位)。如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
  • free: 空闲的物理内存
  • buff: 作为buffer cache的内存,对块设备的读写进行缓冲
  • cache: 作为page cache的内存, 文件系统的cache。如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。

Swap

  • si: 交换内存使用,由磁盘调入内存
  • so: 交换内存使用,由内存调入磁盘

内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。

我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

磁盘IO

  • bi: 从块设备读入的数据总量(读磁盘) (KB/s)
  • bo: 写入到块设备的数据总理(写磁盘) (KB/s)

注:随机磁盘读写的时候,这2个 值越大(如超出1M),能看到CPU在IO等待的值也会越大

System

  • in: 每秒产生的中断次数
  • cs: 每秒产生的上下文切换次数

上面这2个值越大,会看到由内核消耗的CPU时间会越多

Cpu

  • usr: 用户进程消耗的CPU时间百分比

us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如 PHP/Perl)

  • sys: 内核进程消耗的CPU时间百分比 

sys 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。

  • wai: IO等待消耗的CPU时间百分比

wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。

  • idl: CPU处在空闲状态时间百分比

四、dstat的高级用法

dstat的功能非常强大,除了上述常用用法外,还有一些大家不常用的高级用法,如下:

3.1 找出占用资源最高的进程和用户

--top-(io|bio|cpu|cputime|cputime-avg|mem) 通过这几个选项,可以看到具体是那个用户那个进程占用了相关系统资源,对系统调优非常有效。如查看当前占用I/O、cpu、内存等最高的进程信息可以使用dstat --top-mem --top-io --top-cpu:

图片

3.2 获取其他应用信息:

dstat除了可以获取系统关键信息外,还可以获取其他应用信息,如通过下列选项,可以获取到其他一些常用应用信息:

--postfix 显示postfix队列大小

--sendmail 显示sendmail队列大小

--ntp 显示ntp服务器时间

--nfs3 获取nfs客户端信息

--nfsd3 获取nfs服务器信息,不过nfs服务器版本需为第三版才可以,该选项还有更多用法,可以参考man帮助获取

--mysql5-(cmds|conn|io|keys ) 获取mysql5相关信息

 

原文地址:https://www.cnblogs.com/vincent-hv/p/3358194.html

### Linux系统性能监控方法 为了有效监控Linux系统的性能,可以采用多种工具和技术来分析CPU、内存、磁盘以及网络的状态。以下是几种常用的工具及其具体功能: #### 1. **tsar** `tsar` 是一种高效的系统性能数据收集和展示工具,能够实时显示各种资源的使用情况,包括但不限于 CPU、内存、磁盘 I/O 和网络流量等。它通过简单的命令即可获取详细的统计数据,并支持历史数据分析[^1]。 ```bash sudo tsar --help ``` 此工具适合长期监测并记录服务器负载变化趋势,便于发现潜在的性能瓶颈。 #### 2. **dstat** 作为一款全能型资源统计工具,`dstat` 能够提供全面而直观的数据视图,涵盖了虚拟内存、I/O 子系统、网络接口等多个方面。相比传统的 `vmstat`, `iostat` 等单一用途程序,它的优势在于整合性和易读性更强[^2]。 安装方式如下所示: ```bash sudo apt install dstat ``` 执行基础命令查看当前活动状况: ```bash dstat ``` 如果希望更深入地了解特定子系统的运作细节,则可以通过附加参数定制输出内容。例如关注磁盘操作速度可以用下面这条指令实现: ```bash dstat -d ``` #### 3. **top/htop** 对于快速概览整个系统的进程占用率而言,`top` 或者增强版图形界面版本 `htop` 非常实用。它们动态刷新屏幕上的列表项,使用户清楚知道哪些应用程序正在消耗最多的计算能力或者存储空间。 启动 htop 的例子: ```bash sudo apt-get install htop htop ``` #### 4. **sar (sysstat package)** `sar` 命令来源于 sysstat 包含的一系列用于报告系统活动信息的应用集合之一。它可以按时间间隔采样硬件利用率指标,并保存到文件里供后续审查。这对于回溯诊断过去某个时刻发生的异常事件特别有帮助。 先确认已安装该软件包: ```bash sudo apt-get install sysstat ``` 接着启用周期性的日志记录服务(通常默认关闭),编辑配置文件 `/etc/default/sysstat` 将 `ENABLED="false"` 改成 `"true"` 后重启对应的服务单元。 查询最近一天内的平均负载水平示例: ```bash sar -q ``` 以上列举了几种主流途径去评估一台运行中的 GNU/Linux 主机健康程度的方法论框架;当然还有更多高级别的解决方案可供选择依据实际需求场景决定最佳实践方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值