0

不是所有的Linux工具都会让人惊叹,但这个绝对让你叫绝

 4 weeks ago
source link: https://www.51cto.com/article/785513.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

不是所有的Linux工具都会让人惊叹,但这个绝对让你叫绝

作者:didiplus 2024-04-07 10:21:48
今天我要向大家介绍一款非常强大的系统诊断和监控工具——sysdig。它能替代top、iftop、lsof和strace等工具,让你的工作更加高效。

今天我要向大家介绍一款非常强大的系统诊断和监控工具——sysdig。它能替代top、iftop、lsof和strace等工具,让你的工作更加高效。下面让我举几个应用场景,让你亲眼见证它的强大!

154dbc160718fd30242088123fb07e6fc2252e.png

什么是sysdig

sysdig是一款开源的系统诊断和监控工具,Sysdig可以看做是 strace + tcpdump + lsof + htop + iftop 以及其他系统分析工具的合集 。能够实时捕获系统的运行状态并以可视化的方式展示。通过sysdig,用户可以深入了解系统的各项指标、进程活动、网络流量等情况,从而更好地进行故障排查、性能优化和安全监控。

安装sysdig

首先,我们需要安装sysdig工具。sysdig提供了多种安装方式,包括源代码编译安装和各种包管理器安装。在大多数Linux发行版上,您可以通过包管理器轻松安装sysdig。例如,在Ubuntu系统上,可以使用以下命令安装:

sudo apt-get  -y install sysdig

安装成功后,通过下面命令查看对应的版本信息:

controlplane $ sysdig --version
sysdig version 0.26.4

场景一:跟踪进程的系统调用

跟踪进程的系统调用是故障排查中常用的手段,可以帮助您了解应用程序在执行过程中的具体行为。举例来说,假设一个应用程序在处理某个请求时出现了失败,通过跟踪系统调用,您可以得知是在哪个环节出现了问题,或者是因为缺少了哪个依赖库。现在假设您有一台运行Nginx服务的服务器,想要查看该Nginx服务的系统调用,您可以使用以下命令:

sysdig proc.name=nginx
或
sysdig proc.pid = 进程号

执行完上述命令后,它会实时监听Nginx的进程,如下图:

e3a32f95710b60d20ac0949d8dfc3b35127db5.webp

监听Nginx

我们在另外一个终端向这个nginx发送一个HTTP请求,这时,sysdig就会捕抓到请求Nginx的所有数据。如下图:

63c6eb3245d0c98243c95692a15194fba52fbd.webp

监听Nginx的结果

场景二:系统性能分析

这也是sysdig的拿手好戏之一。比如,要查看CPU使用最高的进程,您可以使用以下命令:

sysdig -c  topprocs_cpu

执行上述命令后,如下图:

57790fe57e946c5cc7a125483003b6ced8cd0b.webp

监控CPU情况

这将列出使用CPU最高的进程,可以清晰的看出当前系统中哪些进程占用CPU最高,一目了然,非常直观。

查看网络使用最高的进程,您可以执行以下命令:

sysdig -c topprocs_net

执行完上述命令后,将列出使用网络最高的进程,可以看出哪些进程使用网络流量比较大。如下图:

082601768705607849c2917ca2a274502dcfc2.webp

监控网络情况

要查看读写硬盘最高的进程,您可以执行以下命令:

sysdig -c  topprocs_file

执行上述命令后,如下图:

937914305cdeca3cbda2089cf55d1d509940a3.webp

监控硬盘读写情况

这里会帮你列出读写硬盘最高的进程,假设你的系统硬盘读写慢,你想知道是那个进程,占用的磁盘IO比较大,就可以通过这个命令得出来,哪个进程现在占用大量的磁盘IO,从而造成硬盘的一个瓶颈。

查看网络链接,您可以执行以下命令:

sysdig -c netstat

执行上述命令后,如下图:

34c6f4640541887aa8d2097c21fe12a7e95713.webp

这里面列出的,与我们直接使用netstat命令列出的内容类似,包括监听,网络链接等等。

查看进程列表,您可以执行以下命令:

sysdig -c ps

执行这个命令后,帮你列出当前系统中所有的进程,包括进程ID以及它的文件描述符的限制,如下图:

14327da33cce9b9897b12311aaa90e4de6b291.webp

查看系统打开的文件描述,您可以执行以下命令:

sysdig -c  lsof

执行完这个命令后,将列出系统中打开的所有文件描述符。包括进程PID以及文件,都能看到。如下图:

696526c80c748ce7480146c4c96f70660d16d4.webp

场景三:查看某个目录被哪些进程打开

想要了解某个目录被哪些进程打开,可以使用以下命令:

sysdig fd.name contains /etc

它将会过滤出打开文件描述符中,包含etc的路径,etc目录下的所有的打开文件都能在这里看到。如下图:

d42e2e2020f8034cc3a4669c90fe8a85f3303b.webp

sysdig是一款强大的系统诊断和监控工具,结合系统调用跟踪和抓包功能,能够实时捕获系统运行状态并以可视化方式展示,提供了丰富的命令行工具和高级功能,可应用于性能优化、故障排查、安全监控等多个场景,是系统管理员和运维工程师的得力助手。

责任编辑:赵宁宁 来源: 攻城狮成长日记

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK