如何通过命令行监控 Lightsail 资源使用情况?

4 分钟阅读
0

我在 Amazon Lightsail 中托管的网站或应用程序已关闭或运行速度非常缓慢。我想通过命令行监控 Lightsail 资源使用情况,以便解决这些问题。

简短描述

有多个因素,包括高资源利用率,会影响在 Lightsail 实例上运行的服务。使用常用工具监控 Lightsail 实例上的 CPU、内存、磁盘 I/O 和网络等资源的使用情况。您可以通过命令行实时监控这些资源。通过这些工具,可以详细查看哪些进程使用了最多的 CPU、内存、磁盘 I/O 或网络。

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

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

解决方法

atop 工具

atop 工具会报告所有进程的活动,即使这些进程在指定的时间间隔内已经结束。该工具持续记录所有相关的系统信息。由于这种日志记录是连续的,所以如果再次发生问题,您可以分析历史数据找出原因。atop 工具包含在大多数 Linux 分发版的官方存储库中。请运行以下命令安装 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\ _20230902”是 2023 年 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:**仅显示设备的扩展 I/O 统计信息。

以下是 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(虚拟内存统计信息)命令收集和显示系统内存、进程、中断、分页文件和数据块 I/O 的信息。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
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 官方已更新 9 个月前