如何从命令行监控我的 Lightsail 资源使用情况?

4 分钟阅读
0

我在 Amazon Lightsail 中托管的网站或应用程序已关闭或运行非常缓慢。如何从命令行监控我的 Lightsail 资源使用情况,以便对这些问题进行排查?

简短描述

有几个因素会影响在 Lightsail 实例上运行的服务,包括高资源利用率。使用常用工具,您可以通过命令行实时监控 Lightsail 实例上的 CPU、内存、磁盘输入/输出和网络使用情况等资源。

通过命令行分析和监控 Lightsail 实例资源使用情况可提供实时的系统洞察。同时,这样还可以精细地查看哪些进程使用的 CPU、内存、磁盘输入/输出或网络最多。

以下是可用于从命令行分析和监控 Lightsail 实例的资源的资源:

  • atop 工具
  • htop 工具
  • iostat、vmstat 和 mpstat 命令

解决方法

atop 工具

atop 工具会报告所有进程的活动,即使这些进程已在指定的时间间隔内完成。该工具会持续记录所有相关的系统信息。由于这种持续的日志记录,如果再次出现问题,则需要分析历史数据。大多数 Linux 发行版的官方存储库中都包含 atop 工具。通过运行以下命令安装 atop 工具:

基于 Red Hat 的系统

$ sudo yum install atop

基于 Debian 的系统

$ sudo apt install atop

默认情况下,atop 工具会以 600 秒的间隔记录所有活动。要更改 atop 工具的配置以便每隔 60 秒记录一次活动,请运行以下命令:

基于 Red Hat 的系统

$sudo sed 's/600/60/' /etc/atop/atop.daily -i

基于 Debian 的系统

$ sudo sed 's/600/60/' /etc/default/atop -i

运行上述命令后,atop 会记录 60 秒间隔时间内的所有活动。数据存储在 /var/log/atop 中的日志文件中。这些文件以下列格式命名为“atop_ccyymmdd”。例如,“atop_20210902”是 2021 年 9 月 2 日的记录。

要访问日志文件,请运行命令 atop -r atologfilepath。以下示例显示了命令和日志文件:

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   ?%  |

在前面的输出示例中,第一个记录的快照是在 2021/09/02 17:03:44。要前进到下一个快照,请按键盘上的“t”键。要返回到上一个快照,请按“T”(大写“t”)键。

以下是您可以用于启动 atop 的常用选项:

按内存排序

$ atop -m

按磁盘详细信息排序

$ atop -d

按网络详细信息排序

$ atop -n

htop 工具

htop 工具是一款适用于 Linux 的交互式实时进程监控应用程序,可显示每个 CPU 或内核的使用情况。此工具还提供了一个有意义的文本图表,显示内存和交换使用情况。

要安装 htop,请运行以下命令:

基于 Red Hat 的系统

$ sudo yum install htop

基于 Debian 和 Ubuntu 的系统

$ sudo apt install htop

使用以下命令在系统上运行 htop:

$ htop

htop 工具列出了所有正在系统上运行的进程,并包含有关每个进程使用多少 CPU 和内存的信息。还包括用于启动进程的命令。

以下是输出中每列的定义:

  • **PID:**进程的进程 ID 号。
  • **BUSER:**进程拥有者。
  • **PR:**进程的优先级。数字越小,优先级越高。
  • **NI:**进程的 nice 值,影响其优先级。
  • **VIRT:**进程正在使用的虚拟内存量。
  • **RES:**进程正在使用的物理 RAM 量,以千字节为单位。
  • **SHR:**进程正在使用的共享内存量。
  • **S:**进程的当前状态(僵尸、休眠、正在运行、不间断休眠或被跟踪)。
  • **CPU:**进程使用的处理器时间的百分比。
  • **MEM:**进程使用的物理 RAM 的百分比。
  • **TIME+:**进程已使用的处理器时间。
  • **COMMAND:**启动进程的命令的名称。

iostat、vmstat 和 mpstat 命令

iostatvmstatmpstat 命令属于 sysstat 捆绑包的一部分。使用以下命令在 Lightsail 实例中安装这组工具:

基于 Red Hat 的系统,例如 Amazon Linux、CentOS 或 RHEL

$ sudo yum install sysstat

Debian 和 Ubuntu

$ sudo apt-get install sysstat

使用以下命令启动和启用 sysstat 以进行连续数据收集:

$ sudo systemctl start sysstat
$ sudo systemctl enable sysstat

“iostat”命令

iostat 命令收集并显示系统输入和输出存储设备统计数据。此工具通常用于跟踪存储设备性能问题,包括设备和磁盘。以下是常见的 iostat 选项:

  • **iostat:**获取报告和统计数据。
  • **iostat -x:**显示更详细的统计信息。
  • **iostat -c:**仅显示 CPU 统计数据。
  • **iostat -d:**仅显示设备报告。
  • **iostat -xd:**仅显示扩展的输入/输出统计数据。

以下是示例 iostat 命令输出:

$ iostat
Linux 4.14.246-187.474.amzn2.x86_64     10/22/2021     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.34    0.00    1.36    1.06    1.67   90.58

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda             41.64      1496.90       890.16     502148     298612

“vmstat”命令

vmstat(虚拟内存统计数据)命令收集并显示有关系统内存、进程、中断、分页和数据块输入/输出的信息。vmstat 命令允许您指定允许近乎实时地观察系统活动的采样间隔。以下是 vmstat 命令和输出的示例:

$ vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 1409320 2088 485404 0 0 568 724 232 393 4 2 93 1 1
0 0 0 1409332 2088 485404 0 0 0 67 146 261 0 0 100 0 0
0 0 0 1408916 2088 485404 0 0 0 0 157 276 0 0 100 0 0
0 0 0 1408980 2088 485408 0 0 0 0 161 259 0 0 100 0 0
0 0 0 1408984 2088 485408 0 0 0 0 105 190 0 0 100 0 0

以下是可与 vmstat 命令一起使用的常用选项:

-a 选项显示系统的活动和非活动内存:

$ vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
2 0 0 1402016 311232 218864 0 0 60 77 74 129 0 0 99 0 0

-d 选项报告磁盘统计数据:

$ vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
nvme0n1 7728 25 433681 4544 3133 93 555950 4196 0 1

“mpstat”命令 mpstat 命令收集并显示系统中所有逻辑处理器的性能统计数据。在没有选项的情况下运行 mpstat 命令会生成一个报告,其中包含自启动以来所有逻辑处理器的性能统计数据。

$ mpstat 
Linux 4.18.0-305.el8.x86_64 (ip-xxx-xx-x-xx.ec2.internal)     10/27/2021     _x86_64_    (2 CPU)

04:23:26 PM  CPU    %usr   %nice    %sys  %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:23:26 PM  all    8.42    0.13    2.43    1.49     0.18    0.05    0.22    0.00    0.00   87.08

上述示例中的第一行是一组列标签。第二行是每个列的值:

  • **%usr:**用户级别的 CPU 使用量百分比。
  • **%nice:**标记为“nice”的用户进程的 CPU 使用量百分比。
  • **%sys:**系统(Linux 内核)级别的 CPU 使用量百分比。
  • **%iowait:**等待磁盘读/写的 CPU 空闲使用量百分比。
  • **%irq:**处理硬件中断的 CPU 使用量百分比。
  • **%soft:**处理软件中断的 CPU 使用量百分比。
  • **%steal:**被迫等待管理程序处理其他虚拟处理器的 CPU 使用量百分比。
  • **%guest:**运行虚拟处理器所花费的 CPU 使用量百分比。
  • **idle:**空闲时间的 CPU 使用量百分比(没有进程,不等待磁盘读/写)。

使用上述命令行工具,您可以确定资源使用率高的进程。而且,您可以使用此信息为您的工作负载选择具有足够资源的实例。


AWS 官方
AWS 官方已更新 2 年前