1. 小声哔哔
? ? 记得在19年的年末,我第一次接触sar命令时将其奉为经典,至今看来仍不为过,可见我之前的博客:运维入门必备Linux sar命令。说回今天我们的工具dstat,与sar命令很相像,都很全面且强大,但是dstat更类似于看板,可以作为一个全局的监控工具使用,也可以在单页面比较不同系统参数时使用,所以在日常运维过程中我更建议dstat和sar配合着使用。
? ? 网上针对dstat命令的全面解析有很多,我这里不做赘述,仅从运维经验精简一些我认为比较常用的命令,如果想看更全面的信息建议还是使用man dstat命令。
? ? dstat命令与其他命令相比有些特别,主要分为命令和插件,因此我会梳理常用命令和常用插件。
2. 前期准备
- stress-ng性能压测工具,若机器上没有可以参照如下安装方式(注意机器有没有配置yum源)
yum install -y epel-release
yum install -y stress-ng
- dstat监控工具,若机器上没有可以参照如下安装方式(注意机器有没有配置yum源)
yum install -y dstat
3. 常用命令
命令 | 描述 | -c, - -cpu | 开启cpu统计 | -C | 该选项跟cpu的编号(0~cpu核数-1,多个用都好隔开)如:0,3,total表示分别包含cpu0、cpu3和total | -d, - -disk | 开启disk统计 | -D | 改选跟具体的设备名(多个用逗号隔开)如:total,hda,hdb表示分别统计total、hda、hdb设备块 | -i, - -int | 开启中断统计 | -l, - -load | 开启负载均衡统计,分别是1m,5m,15m | -m, - -mem | 开启内存统计,包括used,buffers,cache,free | -n, - -net | 开启net统计,包括接受和发送 | -N | 该选项可以跟网络设备名多个用逗号隔开,如eth1,total | -tcp | 开启tcp统计,包括(listen, established, syn, time_wait, close) | -udp | 开启udp统计 (listen, active) | --nocolor | 禁用颜色(意味着选项 - -noupdate) | --output file | 输出结果到cvs文件中 |
? ? 最后一个参数nocolor是我比较推荐的,因为dstat命令回显会有颜色,有时默认颜色与背景色相似会导致我们忽略关键信息,比如数值单位。
3.1. 使用场景举例
- 步骤一:? ?执行命令stress-ng --hdd 1 --timeout 600来模拟10分钟的IO等待飙高场景。
- 步骤二:正常运维场景下,此时我们已经收到了现网的CPU告警,此时到机器上执行dstat -c 关注CPU的使用情况,可以看到iowait的使用率很高,那么此时我们就可以再执行dstat -cd --nocolor来同时关注CPU和磁盘IO的情况,从执行结果中可以看到每当iowait高时,磁盘的写请求就会很大,说明iowait的升高与磁盘写相关。
?? ? 通过上面的一个小例子可以看出,dstat的使用场景是我们有初步的怀疑方向后使用dstat命令监控我们关注的指标项,dstat命令可以在一个页面中使用比较好的格式展示我们想要的指标,sar命令也可以做到这样的效果,但是一旦参数变多,就会让界面比较混乱。
4. 常用插件
插件命令 | 插件描述 | --top-cpu | 显示CPU占用最大的进程 | --top-io | 显示正常I/O最大的进程 | --top-mem | 显示占用最多内存的进程 | --proc-count | 显示正在运行的程序数量 |
4.1. 使用举例
dstat --nocolor --top-cpu --top-io --top-mem --proc-count
|