余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

linux历史问题排查神器-sar命令

xiyangw 2023-05-14 12:00 12 浏览 0 评论

工作中总会碰到几次要分析机器历史问题的需求,之前没有系统化的整理过,也没有深入的去理解那些排查系统性能工具的指标输出,导致在遇上这种需求的时候,总是心虚,能搪塞过去就搪塞过去,不过随着工作年限的增加,遇到这种需求,再说不出个123来,就配不上工牌上那“高级运维工程师”几个字了。这篇文章,就来拆解下这个linux历史问题排查神器-sar命令

如果你的系统没有安装sysstat这个包,那么是没有sar命令的,也不会有可分析的文件,需要执行命令yum -y install sysstat去安装,安装完成后,就有sar命令了。同时也会自动生成相关目录及计划任务/etc/cron.d/sysstat。

linux历史问题排查神器-sar命令

sar常用命令

假设你要全面的分析系统指标,又没有足够的耐心将这篇文章看完,想着现学现卖,那么直接执行下面的命令,然后去看系统输出的各项指标吧,看不懂的,就来这个页面搜索下指标名称,就可以找到对应的解释,如果文章中没有解释,那就需要去文章开头附的参考资料中寻找答案了。
万能的sar命令如下:

# 输出26日的20:00:01到23:00:01之间的所有报告
$ sar -f sa26 -A -s 20:00:01 -e 23:00:01 | less

# 每隔3s打印下当前系统的所有性能指标并输出到/tmp/sar_3.log文件中
$ sar -A 3 >> /tmp/sar_3.log

各选项如下:

-f:指定要分析的文件sa文件,默认保留近三十天的,文件名格式:sa[日期],如1号的就是sa1,15号的就是sa15,不过建议使用stat命令查一下文件最近改动时间,比如sa15,查出来的可能是上个月15号的日志,等到这个月16号,再看sa15这个文件,那么文件最近改动时间,就是当月的15号了,上月的已经被删除了。在分析之前,一定要先确认自己分析的文件没错哦,别分析了半天,看的不是你想看的那天的,那就尴尬了。


-A:输出全部的性能指标,包括磁盘、系统平均负载、内存、网卡流量等等,如果想单独输出某方面的指标,需要加其他选项,这个后面细说。


-s:指定要输出的报告起始时间,上面的命令是输出20:00:01之后的。

-e:指定要输出的报告截止时间,上面的命令是输出23:00:01之前的。

-u:输出CPU使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息

-r:输出内存和交换空间的统计信息

-b:显示I/O和传送速率的统计信息

-a:文件读写情况

-c:输出进程统计信息,每秒创建的进程数

-R:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出系统交换活动信息


CPU相关指标

# 输出26号,20:00:00到22:00:00,CPU相关的指标(-P ALL:输出每个核心的详细指标信息)

$ sar -f sa26 -u -P ALL -u ALL -s 20:00:00 -e 22:00:00

输出的各项指标含义如下:

  • CPU:表示当前是哪个CPU,all表示所有cpu的指标平均值。
  • %usr:CPU在用户模式下,执行进程的时间百分比 。
  • %nice:CPU处在带NICE值的用户模式下的时间百分比。
  • %system: CPU处在系统模式(内核态)下,执行进程的时间百分比。
  • %iowait:CPU用于等待I/O操作完成(等待输入输出完成),占用CPU总时间的百分比,如果此值过高,表示硬盘存在I/O瓶颈 。
  • %steal:管理程序为另一个虚拟进程提供服务而等待虚拟CPU的百分比。
  • %irq:CPU服务硬件中断(简称硬中断)所花费的时间百分比。
  • %soft:CPU服务软件中断(简称软中断)所花费的时间百分比。
  • %guest:CPU运行虚拟处理器所花费的时间百分比。
  • %gnice:Percentage of time spent by the CPU or CPUs to run a niced guest.
  • %idle:CPU空闲时间百分比,如果此值过高,表示CPU较空闲。如果此值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应查看内存使用,必要时需要加大内存容量 ,如果此值持续低于10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

任务创建和系统切换活动相关

# 输出26号,20:00:00到22:00:00,任务创建和系统切换活动相关指标
$ sar -f sa26 -w -s 20:00:00 -e 22:00:00

各项指标解释如下:

proc/s:每秒创建的总任务数

cswch/s:每秒上下文切换的总数。

系统负载相关

# 输出26号,20:00:00到22:00:00,进程队列长度和平均负载状态的指标
$ sar -f sa26 -q -s 20:00:00 -e 22:00:00

输出的各项指标含义如下:

runq-sz :运行队列的长度,等待运行的进程数量

plist-sz:进程列表中进程和线程的数量

ldavg-1 :最后1分钟的系统平均负载

ldavg-5 :过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载

blocked:当前阻塞的等待I/O完成的任务数。

内存统计信息相关

# 输出26号,20:00:00到22:00:00,内存统计信息相关的指标
$ sar -f sa26 -R -s 20:00:00 -e 22:00:00
输出的各项指标含义如下:

frmpg/s:系统每秒释放的内存页数。负数表示系统分配的页面数。注意,根据机器的体系结构,页面的大小为4 kB或8 kB。
bufpg/s:每秒系统用作缓冲区的额外内存页数。负值意味着系统使用更少的页作为缓冲区。
campg/s:系统每秒缓存的额外内存页数。负值意味着缓存中的页面更少。

内存和交换空间相关

# 输出26号,20:00:00到22:00:00,内存和交换空间相关的指标
$ sar -f sa26 -r -u ALL -s 20:00:00 -e 22:00:00

输出的各项指标含义如下:

kbmemfree:空闲的内存数量(单位为KB),这个值和free命令中的free值基本一致,不包括buffer和cache的空间。


kbmemused:已使用的内存数量,不包含内核使用的内存(单位为KB)。这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间。


%memused:已使用内存的百分数。物理内存使用率,这个值是kbmemused和内存总量(不包括swap)的一个百分比。


kbbuffers:内核缓冲区buffer,使用的内存数量(单位为KB)。这个值就是free命令中的buffer。


kbcached:内核高速缓存cache数据使用的内存数量(单位为KB)。这个值就是free命令中的cache。


kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。


%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比。


kbactive:以KB为单位的活动内存数量(最近使用的内存,除非绝对必要,通常不会回收)。


kbinact:非活动内存的数量(以KB为单位)(最近使用较少的内存)。


kbdirty:等待“写回磁盘”的以KB为单位的内存量。

系统交换活动相关信息

# 输出26号,20:00:00到22:00:00,系统交换活动相关的指标
$ sar -f sa26 -W -s 20:00:00 -e 22:00:00
输出的各项指标含义如下:

pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量

内存分页相关

# 输出26号,20:00:00到22:00:00,内存和交换空间相关的指标
$ sar -f sa26 -B -s 20:00:00 -e 22:00:00

输出的各项指标含义如下:

pgpgin/s:每秒从磁盘空间或交换空间置换到内存的字节数(单位为KB)。

pgpgout/s:每秒从内存置换到磁盘空间或交换空间的字节数(单位为KB)。

fault/s:每秒钟系统产生的缺页数(主缺页加次缺页)。

majflt/s:每秒钟产生的主缺页数。

pgfree/s:每秒被放入空闲队列中的页个数。

pgscank/s:每秒被kswapd扫描的页个数。

pgscand/s:每秒直接被扫描的页个数。

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数。

%vmeff:每秒清除的页占总扫描页的百分比。

网络设备统计相关

# 输出26号,20:00:00到22:00:00,eth0这块网卡的网络设备统计相关的指标
# 省略egrep的话,输出所有网卡,也可以egrep中填入多块网卡名称,| 分隔即可
$ sar -f sa26 -n DEV -s 20:00:00 -e 22:00:00 | egrep 'eth0|IFACE'

输出的各项指标含义如下:

IFACE:网络设备名。

rxpck/s:每秒接收的包数量。

txpck/s:每秒传输的包数量。

rxbyt/s:每秒接收的字节数(单位为byte)。

txbyt/s:每秒传输的字节数(单位为byte)。

rxkB/s:每秒收的数据量(单位为kB)。

txkB/s:每秒发的数据量(单位为kB)。

rxcmp/s:每秒接收压缩包的数量。

txcmp/s:每秒传输压缩包的数量。

rxmcst/s:每秒接收的多播(multicast)包的总数排查网络设备故障。

网络设备故障相关

# 输出26号,20:00:00到22:00:00,eth0这块网卡的故障相关的指标(省略egrep的话,输出所有网卡,也可以egrep中填入多块网卡名称,| 分隔即可)
$ sar -f sa26 -n EDEV -s 20:00:00 -e 22:00:00 | egrep 'eth0|IFACE'

输出的各项指标含义如下:

IFACE:网络设备名。

rxerr/s:每秒接收的坏包数量。

txerr/s:传输包时每秒发生错误的数量。

coll/s:传输包时每秒发生冲突的数量。

rxdrop/s:接收包时,每秒丢弃的包的数量(缺乏缓存导致)。

txdrop/s:传输包时,每秒丢弃的包的数量(缺乏缓存导致)。

txcarr/s:传输包时,每秒发生的传输错误的数量。

rxfram/s:接收包时,每秒发生帧校验错误的数量。

rxfifo/s:接收包时,每秒钟缓冲区溢出错误的数量。

txfifo/s:传输包时,每秒钟缓冲区溢出错误的数量。

I/O和传送速率

# 输出26号,20:00:00到22:00:00,机器上所有I/O和传送速率相关指标
$ sar -f sa26 -b -s 20:00:00 -e 22:00:00

输出的各项指标含义如下:

tps:每每秒向磁盘设备请求数据的次数,包括读、写请求,其为rtps与wtps的和。每一次IO下发后会先将多个请求合并为一个I/O磁盘请求,这里tps指请求合并后的请求计数


rtps:每秒向磁盘设备的读请求次数

wtps:每秒向磁盘设备的写请求次数

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

磁盘相关

# 输出26号,20:00:00到22:00:00,机器上所有磁盘的使用相关指标

$ sar -f sa26 -d -p -s 20:00:00 -e 22:00:00

# -p:打印设备的名字。此选项与选项-d一起使用。默认不加-p的话情况下,名称打印为dev m-n,

# 其中m和n为设备的主号码和副号码。使用-p选项将显示设备名,易读性更高。

# 设备的主号码和副号码可以通过lsblk命令(输出的MAJ:MIN列,就是主号码和副号码)查看。

输出的各项指标含义如下:

DEV:磁盘设备,加上用参数-p可以打印出sda等磁盘设备名称;如不加参数-p,设备则显示为dev253-0等。

tps:每秒向磁盘设备请求数据的次数,包括读、写请求,其为rtps与wtps的和。

每一次IO下发后会先将多个请求合并为一个I/O磁盘请求,这里tps指请求合并后的请求计数。rd_sec/s:每秒读扇区的次数。

wr_sec/s:每秒写扇区的次数。

avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。

avgqu-sz:磁盘请求队列的平均长度。

await:从请求磁盘到系统处理完,每次请求的平均消耗时间,包括请求队列等待时间(单位是毫秒)。

svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间。man手册中提示该字段将在将来的sysstat版本中删除。不要相信这个指标了。

%util:I/O请求占CPU的百分比。man手册解释:Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100%.

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: