如何从命令行监控我的 Lightsail 资源使用情况?
我在 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 命令
iostat、vmstat 和 mpstat 命令属于 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 官方已更新 3 年前
- AWS 官方已更新 3 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前