洞悉 Linux 系统运行细节,使用 atop 监测和回看系统负载状态

   日期:2024-12-24    作者:czdytfhm4 浏览:53    移动:http://w.yusign.com/mobile/quote/4842.html

Linux系统的资源使用情况,你可以通过使用命令如、和来实时监控内存、CPU及端口的使用状态。对于需要追踪历史资源消耗动态的场景,命令则能有效帮助用户查看过去的系统负载情况。

本篇教程的灵感源自一位小伙伴的真实经历:她曾遇到服务器不定期卡顿的问题没想到腾讯云的客服指导她使用 进行故障排查,结果发现是 周期性执行导致的系统卡顿。腾讯云客服的专业性让人印象深刻。鉴于此,本次使用腾讯云的轻量应用服务器详解 的使用,更好地监控服务器性能。

是一个用于Linux和Unix类操作系统的时间间隔内系统活动分析工具。看它的名字,很容易联想到 Linux 自带的 ,其实确实挺像的,不过与 更像的,应该是 和 。 主要是允许用户从命令行界面上查看系统过去的CPU使用率、磁盘I/O、内存与交换分区使用情况。甚至可以记录进程统计以及网络接口活动在内的多种信息。

的 GitHub 项目地址: https://github.com/Atoptool/atop/

我们先来看看 命令

 

比如: 我们想看 用户的进程占用,就可以使用

 
 

发现 的进程比较多,这个时候,还可以用 命令查看端口号:

 

你可以看到, 命令是一个实时展示 Linux 系统中进程活动及其资源占用情况的动态监视工具无法查看历史数据

至于 的主要特点包括

  • 自动周期性记录:它可以定期捕获系统活动快照,这些快照可以存储在日志文件中以供日后分析。
  • 历史数据回放:用户能够以类似于“即时”视图的方式浏览过去的数据,其实就是回看历史快照。
  • 丰富的信息展示:提供丰富的系统性能指标,涵盖系统层面的各种活动。
  • 灵活的查询选项:支持对特定时间段内的数据进行筛选和查询。

因此,那些需要深入了解其系统过去一段时间内行为的系统管理员来说, 是一个非常有价值的工具。

区别在于,腾讯云轻量应用服务器控制台的曲线是宏观的,但是 的信息更加细致,可以到进程级别。

主要的原因,还是 的历史数据回放功能。虽然我们自己也可以用 crontab 来定时记录系统活动快照,但是, 的 服务,可以自动记录系统活动快照,而且, 还可以自动删除过期的系统活动快照,非常方便。与其自己造造轮子,不如直接使用 的 服务。

其次,还有一个很有趣的事情: 就是粉丝用户的反馈,她说她在用腾讯云的轻量应用服务器,总是不知道为什么,服务器卡顿腾讯云的客服教她使用 atop 排障,最后发现是服务器内 dnf-makecache 周期性执行,导致系统卡顿,感觉腾讯云的客服很专业,很细心;同时,她想更了解这个工具。

我是很惊讶的,没想到腾讯云的客服这么专业; 而且这个问题本身,我认为是超出腾讯云服务范围的,本来就是用户自己的事情,但是腾讯云的售后客服还是给出专业的解决方案,让人感觉挺有温度的,也有点小惊喜(o′ω`o)ノ

我甚至发现腾讯云的官方文档,也有提到 的使用方法: https://cloud.tencent.com/document/product/213/61086。既然官方都这么推荐,我也就详细介绍一下 的使用方法。

其实,作为一个命令行工具, 本身没什么要求: 的第一个发行版本 1.20 版本,对内核的最低要求是 2.6.2。只要你用的是目前主流 Linux,都可以运行 ,可能版本有所差异,但是不会影响使用。

目前正好腾讯云的轻量应用服务器的有活动,可以进去探索一下

  • 本站专属腾讯云轻量应用服务器: https://curl.mintimate.cn/1Hs6qNOVjJo

建议新建一台服务器后,登录服务器后,第一时间更新一次软件包管理器。这倒不是腾讯云的轻量应用服务器有问题,而是更新软件包管理器,可以保证软件包是最新的,避免一些潜在的 bug:

 
 
 

其实, 大体可以分为两个模式

  • 实时检测模式: 直接使用 进入 的交互界面,查看实时的数据,并且可以使用命令进行交互。
  • 历史数据模式: 通过预先设定的监控定时器配置,查看历史数据快照。

历史数据模式其实就是历史的实时检测模式快照,所以我们使用 命令,只需要知道 交互模式如何使用,以及配置历史数据模式即可。

我们直接使用 进入类似于 的交互模式,查看实时数据:

 
 

上方是 CPU、内存、磁盘、网络、GPU 的利用率以及使用量。下方是进程列表,以及进程的详细信息。介绍一下常用的字段含义

  • PID: 进程 ID(Process ID,唯一标识一个进程的编号。
  • CID/POD: 容器 ID 或 Pod 名称,表示进程所属的容器或 Pod。
  • SYSCPU: 系统 CPU 时间,进程在内核态运行所消耗的 CPU 时间。
  • USRCPU: 用户 CPU 时间,进程在用户态运行所消耗的 CPU 时间。
  • RDELAY: 资源延迟时间,进程等待资源(如 CPU、内存、I/O 等)所消耗的时间。
  • BDELAY: 块设备延迟时间,进程等待块设备(如磁盘 I/O)所消耗的时间。
  • VGROW: 虚拟内存增长量,进程的虚拟内存使用量的变化。
  • RGROW: 常驻内存增长量,进程的常驻内存(物理内存)使用量的变化。
  • RDDSK: 读取磁盘的数据量,进程从磁盘读取的数据量。
  • WRDSK: 写入磁盘的数据量,进程向磁盘写入的数据量。
  • RNET: 接收网络数据量,进程从网络接收的数据量。
  • SNET: 发送网络数据量,进程向网络发送的数据量。
  • RUID: 实际用户 ID(Real User ID,启动进程的用户的 ID。
  • EUID: 有效用户 ID(Effective User ID,进程当前运行时的用户 ID。
  • ST: 进程状态(State,表示进程的当前状态(如运行、睡眠、僵尸等)。
  • EXC: 进程的退出代码(Exit Code,进程终止时的退出状态码。
  • THR: 线程数(Threads,进程中当前运行的线程数量。
  • S: 进程的调度优先级(Scheduling priority,进程的调度优先级。
  • CPUNR: CPU 编号(CPU Number,进程当前运行的 CPU 编号。
  • MEM: 内存使用量,进程当前使用的内存量。
  • CMD: 命令行,启动进程的命令行。

这些字段提供了关于系统中各个进程的详细信息,帮助用户监控和分析系统性能。

这个时候,你按下 即可退出,或者按住 退出。如果你保持这个界面,并不退出,可以按 或者 查看帮助信息

给大家翻译一下:

 

可以看到,命令还是很强大的。通常使用,我们只需要进入交互模式,之后排序一下进程列表,然后查看进程的详细信息即可。

比如: 如果你想看那个进程占用了最多的 CPU,那么我们只需要进入交互模式,然后按 (按 CPU 消耗资源排序) 排序,然后按 (显示通用信息) 查看进程信息,这个时候,你可以按 冻结刷新,观察好后按 退出即可。

在进入交互模式的时候,你可以直接追加参数,就不用进入交互模式后,再按相关指令排序进程列表或者切换展示视图了

 

接下来,我们看几个具体使用的场景。

之后,询问发送的信号:

 

默认情况,我们直接填 就可以了,也就是我们 的默认信号。如果无法 可以考虑使用 权限运行 ,或者使用

  • SIGKILL (9):强制终止信号。不能被捕获或忽略,进程必须立即终止。
  • SIGTERM (15):终止信号。通常用于请求进程正常终止。

首先,网络模块 并不是 自带的模块。是需要手动安装的,和 不同的是,它使用 动态内核模块支持(DKMS) 来装载到 。安装方法,可以看下一个章节的 网络扩展插件 。

在安装好后,我们只需要进入交互模式,然后按 (网络流量) 排序,就可以看到网络流量了。

不过可能会出现错误 :

这个时候,有两种可能:

  • 权限不足: 没有权限查看网络流量,这个时候,我们只需要使用 root 权限运行 atop 即可
  • 进程没有启动: 会自动关联 进程,如果 进程没有启动,那么就会报错。可以使用 查看 进程是否启动,如果没启动,那么可以使用 systemctl start netatop 启动 netatop 进程

安装好后的 主要包括两个部分:

  • 命令: 用于实时查看系统负载状态。
  • 的 服务: 用于定期记录系统活动快照。如果要查看历史数据, 的 服务是必不可少的。

至于安装 , 方法很多,主要有

  • 软件包管理器安装: 已经在各个软件包管理器内发布,不过版本可能不是最新的。
  • 源码编译安装: 下载 的源码,可以直接安装最新或者指定版本的 。

工具,已经在各个软件包管理器内发布,你只需要使用系统自带的软件包管理器进行安装即可

 
 

如果你想用高版本的 ,那么就需要手动编译,可以在 atop 官方下载界面 找到下载地址,之后下载到本地编译安装,比如我这里使用腾讯云轻量应用服务器操作

 

之后,进行编译

 
 
 

默认情况下, 没有自带网络监控模块(即可: netaop),需要我们自己安装。同样,首先前往官网,下载最新的 源码:

 

之后进行安装

 

如果编译过程出现内核头文件找不到,类似于

 

这个时候,我们可以使用查看 Linux 内核版本,并使用软件包管理器安装内核头部文件

 
 
 
 

这个时候 就已经安装好了:

 
 

上文说到, 部署和安装后,会自动配置一个由 所管理的守护进程,这个守护进程会自动运行 。如果想卸载这个守护进程,可以使用 停止 守护进程,然后使用 禁用 守护进程。

查看这个守护进程的状态,可以使用 命令

 

解释一下各个参数:

  • LOGOPT: 控制日志文件记录,允许您自定义日志文件的保存路径、命名规则、滚动周期以及其他与日志记录相关的选项。为表示不使用任何额外选项;
  • LOGINT: 监控周期,单位是秒
  • LOGGEN: 日志保留时间,单位是天
  • LOGPATH: 指定atop日志文件的路径。

当然,你也不用修改这个配置文件,只需要修改 文件即可覆写 内的相关配置。

使用 覆写或新建 文件,比如,我们想修改 的日志间隔时间,那么只需要修改 即可,比如:

 

上述的配置,表示 的日志间隔时间是 30 秒,日志保留时间是 7 天,日志文件保存在 目录下。

之后,我们只需要重启 守护进程即可生效:

 
 

那么, 守护进程产生的日志文件,如何有效地查看某段时间内的系统负载变化呢

我们只需要用 命令即可,比如:

 
 

这个时候,我们按 可以查看下一个时间快照节点,按 可以查看上一个时间快照节点。如果你想直接查看某个时间节点,那么可以使用 ,之后出现的提示框

 
 

是不是很方便呢?还有更方便的,你可以直接用组合键

 
 

其实,我个人认为 是没有必要卸载的,因为 的功能非常强大,而且 的守护进程对系统资源的消耗不大(可能只有 10M 左右的内存占用

如果关闭 和 的守护进程 ,那么 甚至没有资源的占用( 命令的 plus 版本🤔)。

如果还是想卸载 ~~

软件包管理器安装的 ,那么卸载 就非常简单了,只需要使用 或 卸载即可

 
 

如果你是手动编译安装的 ,那么卸载 就需要手动删除(其实就是把 自动执行的反过来(因为源码包内没有提供 的脚本,只能手动反操作了)

 
 

既然 已经卸载,那么也没必要保留 了,同样根据编译步骤,逆向操作即可

 
 
 

哈哈,我们了解了 的优势特别是其自动周期性记录和历史数据回放功能。本次的 分享就到这里啦~~ 感谢阅读。也给腾讯云的服务团队点个赞,非常专业和耐心,帮用户解决实际的问题

其实和 类似的工具还有很多(比如: 、、 等),主要还是看个人的使用习惯。就好比,查看端口的占用情况,你可以使用 、、 等命令,也可以使用 、 等工具

本文地址:http://w.yusign.com/quote/4842.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号