如何使用 atop 和 atopsar 工具来获取 EC2 Linux 实例上进程的历史使用情况统计数据?
我想了解如何在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上下载和使用 atop 和 atopsar 工具。我想分析日志文件以监控实例上运行进程的历史 CPU、内存和磁盘 I/O 使用情况。
简短描述
您可以使用 atop 来记录历史资源使用情况以及每个进程和线程的 CPU 利用率、内存消耗和磁盘 I/O 的实时报告。atop 工具在记录统计数据时会作为后台服务保持活动状态。这样可以用于长期的服务器分析,因为该工具默认会将数据存储 28 天。然后,您可以使用 atopsar 等实用程序来生成有关 atop 所收集数据的系统活动报告。
**注意:**atop 工具仅在安装后才会记录数据。您无法检索 atop 安装之前的历史性能数据。
解决方法
安装 atop
有关安装说明,请参阅如何为运行 Amazon Linux、Red Hat Enterprise Linux (RHEL)、CentOS 或 Ubuntu 的 EC2 实例配置 ATOP 和 SAR 监控工具?
创建 atop 历史报告日志
atop 工具会在 /var/log/atop 中创建文件名格式为 atop_ccyymmdd 的日志文件。例如,atop_20210902 是 2021 年 9 月 2 日的记录。
要访问日志文件,请运行以下命令:
atop -r /var/log/atop/atop_ccyymmdd
**注意:**请将 ccyymmdd 替换为要查看的日期。
输出示例:
atop -r /var/log/atop/atop_20210902 ATOP - ip-172-20-139-91 2021/09/02 17:03:44 ---------------- 3h33m7s elapsed PRC | sys 6.51s | user 7.85s | #proc 103 | #tslpi 81 | #tslpu 0 | #zombie 0 | #exit 0 | CPU | sys 0% | user 3% | irq 0% | idle 197% | wait 0% | ipc notavail | curscal ?% | cpu | sys 0% | user 1% | irq 0% | idle 98% | cpu000 w 0% | ipc notavail | curscal ?% | cpu | sys 0% | user 1% | irq 0% | idle 98% | cpu001 w 0% | ipc notavail | curscal ?% |
在上述示例中,atop 于 2021 年 9 月 2 日 17:03:44 首次记录了快照。
要向下移动到下一个快照,请按小写字母 t 键。要返回到上一个快照,请按大写字母 T。要分析特定的时段,请按 b,然后输入日期和时间。atop 工具会跳转到您在 Enter new time(输入新时间)中输入的时间。
示例:
NET | lo ---- | pcki 2 | pcko 2 | sp 0 Mbps | si 0 Kbps | so 0 Kbps | erro 0 | Enter new time (format [YYYYMMDD]hhmm): PID TID RDDSK WRDSK WCANCL DSK CMD 1/4
要查看不同的统计数据,请按指定的快捷键。有关快捷键的完整列表,请参阅 atoptool 网站上的 Atop cheatsheet - keys overview(Atop 备忘单 - 按键概览)。
要对进程列表进行排序,请使用以下快捷键:
- 按 C 按 CPU 活动排序。
- 按 M 按内存消耗排序。
- 按 D 按磁盘活动排序。
- 按 N 按网络活动排序。
**注意:**仅在安装了 netatop 内核时,此键才有效。 - 按 A 按最活跃的系统资源排序(自动模式)。
要查看帮助文档,请按 h。
创建特定时间段的 atop 报告日志
要访问日志文件并且仅提取特定时间段的性能数据,请运行以下命令:
atop -r /var/log/atop/atop_ccyymmdd -b starttime -e endtime -M
**注意:**请将 ccyymmdd 替换为要查看的日期。此外,请将 starttime 替换为性能时段的开始时间,并将 endtime 替换为性能时段的结束时间。r 标志指定文件,b 标志指定开始时间,e 标志指定结束时间,M 标志指定内存。
以下命令示例返回 2024 年 4 月 22 日 08:00 至 08:10 之间的内存性能数据:
atop -r /var/log/atop/atop_20240422 -b 0800 -e 0810 -M
使用 atopsar 生成系统活动报告
您可以使用 atopsar 命令生成系统活动报告。如果使用 -c 标志,则 atopsar 会生成有关系统当前 CPU 利用率的报告。
命令示例:
atopsar -c
以下输出示例显示了间隔为一秒的 CPU 利用率:
atopsar -c 1 2 ip-172-20-139-91 4.14.238-182.422.amzn2.x86_64 #1 SMP Tue Jul 20 20:35:54 UTC 2021 x86_64 2021/09/02 -------------------------- analysis date: 2021/09/02 -------------------------- 18:50:16 cpu %usr %nice %sys %irq %softirq %steal %guest %wait %idle _cpu_ 18:50:17 all 0 0 0 0 0 0 0 0 200 0 0 0 0 0 0 0 0 0 100 1 0 0 0 0 0 0 0 0 100 18:50:18 all 0 0 0 0 0 0 0 0 200 0 0 0 0 0 0 0 0 0 100 1 0 0 0 0 0 0 0 0 100
要分析特定时间范围内的数据,请运行以下命令:
atopsar -A -b 13:00 -e 13:35
注意:****-A 标志会生成符合当天条件的所有报告。请将 13:00 替换为开始时间,并将 13:35 替换为结束时间。
要检索多个输出,请将 atopsar 的标志合并为一个命令。以下示例命令可查询 CPU 利用率、处理(器)负载以及进程和线程:
atopsar -cpP
输出示例:
ip-172-31-89-231 6.1.84-99.169.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Apr 8 19:19:48 UTC 2024 x86_64 2024/04/22 -------------------------- analysis date: 2024/04/22 -------------------------- 07:59:27 cpu %usr %nice %sys %irq %softirq %steal %guest %wait %idle cpu 08:00:27 all 0 0 0 0 0 0 0 4 95 08:01:27 all 0 0 0 0 0 0 0 0 100 08:02:27 all 0 0 0 0 0 0 0 0 100 08:03:27 all 0 0 0 0 0 0 0 0 100 -------------------------- analysis date: 2024/04/22 -------------------------- 07:59:27 pswch/s devintr/s clones/s loadavg1 loadavg5 loadavg15 load 08:00:27 203 70 1.07 0.13 0.29 0.14 08:01:27 53 31 0.07 0.05 0.23 0.13 08:02:27 59 31 0.87 0.02 0.19 0.12 08:03:27 68 35 0.22 0.00 0.15 0.10 -------------------------- analysis date: 2024/04/22 -------------------------- 07:59:27 clones/s pexit/s curproc curzomb thrrun thrslpi thrslpu procthr 08:00:27 1.07 1.07 114 0 1 83 58 08:01:27 0.07 0.07 114 0 1 83 58 08:02:27 0.87 0.88 109 0 1 83 53 08:03:27 0.22 0.28 105 0 1 76 52
有关 atopsar 检索和显示的标志和输出值的详细列表,请参阅 Linux man 网站上的 atopsar。

