sysdig 超级系统工具、sar
一、Sysdig
是一个超级系统工具,比 strace、tcpdump、lsof 加起来还强大。可用来捕获系统状态信息,保存数据并进行过滤和分析。使用 Lua 开发,提供命令行接口以及强大的交互界面。
安装
https://www.cnblogs.com/NiceTime/p/7640558.html
使用示例
1、网络
查看占用网络带宽最多的进程
sysdig-probe-loader (不执行,下面会报错)
sysdig -c topprocs_net Bytes Process PID -------------------------------------------------------------------------------- 18.03KB prometheus 1408 388B sshd 1495
显示主机192.168.0.1的网络传输数据
as binary: sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1 as ASCII: sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1
查看连接最多的服务器端口
sysdig -c fdcount_by fd.sport "evt.type=accept" sysdig -c fdbytes_by fd.sport
查看客户端连接最多的ip
sysdig -c fdcount_by fd.cip "evt.type=accept" sysdig -c fdbytes_by fd.cip
列出所有不是访问apache服务的访问连接
sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
2、应用
查看机器所有的HTTP请求
sudo sysdig -s 2000 -A -c echo_fds fd.port=80 and evt.buffer contains GET
查看机器所有的SQL select查询
sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT
3、硬盘 I/O
查看使用硬盘带宽最多的进程
sysdig -c topprocs_file
列出使用大量文件描述符的进程
sysdig -c fdcount_by proc.name "fd.type=file"e
二、sar(System Activity Reporter 系统活动情况报告)
是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等。
我们可以使用sar
命令来获得整个系统性能的报告。这有助于我们定位系统性能的瓶颈,并且有助于我们找出这些烦人的性能问题的解决方法。
Linux 内核维护着一些内部计数器,这些计数器包含了所有的请求及其完成时间和 I/O 块数等信息,sar
命令从所有的这些信息中计算出请求的利用率和比例,以便找出瓶颈所在。
性能问题排查技巧:
- 怀疑 CPU 存在瓶颈,可用
sar -u
和sar -q
等来查看。 - 怀疑 内存存在瓶颈,可用
sar -B
、sar -r
和sar -W
等来查看。 - 怀疑 I/O 存在瓶颈,可用
sar -b
、sar -u
和sar -d
等来查看。
sar
命令来自于sysstat
工具包,如果提示sar
命令不存在,需先安装sysstat
语法
语法:sar [选项] [参数] 选项: -A:显示所有的报告信息; -b:显示I/O速率; -B:显示换页状态; -c:显示进程创建活动; -d:显示每个块设备的状态; -e:设置显示报告的结束时间; -f:从指定文件提取报告; -i:设状态信息刷新的间隔时间; -n:网络统计信息; -R:显示内存状态; -P:报告每个CPU的状态; -u:显示CPU整体的利用率; -v:显示索引节点,文件和其他内核表的状态; -w:显示交换分区状态; -x:显示给定进程的状态。 参数: 间隔时间:每次报告的间隔时间(秒); 次数:显示报告的次数。
常用用法
-
sar [command] 2 5
:每2秒输出一次sar [command]
,总计输入五次,省略5表示持续输出。 -
sar -n DEV 1 -e 22:26:00 >/tmp/123 &
:每秒采样一次网络情况直到22:26并把采样数据输出到/tmp/123。 -
sar -f /var/log/sa/sa27 -s 23:00:00 -e 00:00:00 -r
:本月27日23点至0点的内存数据,需要通过crontab设置定时任务。
1、CPU 状态统计
-P {CPU_LIST | ALL}
:用于分析多核CPU的性能状况,可以使用CPU_LIST分析指定核心的CPU状态,可以使用离散值和连续值,也可以使用ALL分析所有CPU核心状态。
# sar -P 0 1 3 # 表示每秒采集0号CPU状态,总共采样3次。 Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7) 12/21/2022 _x86_64_ (4 CPU) 11:15:32 AM CPU %user %nice %system %iowait %steal %idle 11:15:33 AM 0 2.97 0.00 0.99 0.00 0.00 96.04 11:15:34 AM 0 1.02 0.00 1.02 0.00 0.00 97.96 11:15:35 AM 0 2.00 0.00 2.00 0.00 0.00 96.00 Average: 0 2.01 0.00 1.34 0.00 0.00 96.66
CPU
:0 表示采集的是 0 号CPU,all 表示统计信息为所有 CPU 的平均值。%user
:指运行非特权用户进程时间百分率。%nice
:是指运行特权用户进程时间百分率。%system
:是指运行内核进程时间,这个时间包括了CPU处理软硬中断的时间。%iowait
:是指等待I/O完成的时间。%steal
:是指运行虚拟机的时间百分率,steal意味着被偷走的时间(一般是0)。%idle
:是指cpu空闲时间百分率,若机器上并未运行任何程序,所以此列一直为100%。
注意说明:
- 若 %iowait 的值过高,表示硬盘存在I/O瓶颈。
- 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。
- 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。
-q
:用于报告队列长度以及平均负载。
# sar -q 1 3 Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7) 12/21/2022 _x86_64_ (4 CPU) 11:21:52 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 11:21:53 AM 1 274 0.01 0.05 0.05 0 11:21:54 AM 2 274 0.01 0.05 0.05 0 11:21:55 AM 1 274 0.01 0.05 0.05 0 Average: 1 274 0.01 0.05 0.05 0
runq-sz
:等待cpu调度的任务数。plist-sz
:处于任务列表的任务总数。ldavg-1
,ldavg-5
,ldavg-15
:分别指1分钟,5分钟,15分钟内cpu的负载。blocked
:表示等待I/O完成而被阻塞的任务总数,不为0则需要留意I/O是否存在性能瓶颈。
Linux 状态命令之 sar_linux sar_奔跑的大西吉的博客-CSDN博客
https://www.oschina.net/p/sysdig?hmsr=aladdin1e1