如何通过命令行监控 Lightsail 资源使用情况?
我在 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 命令
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:**仅显示设备的扩展 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 使用率百分比(没有进程,也没有等待磁盘读/写)。
使用前面的命令行工具,识别资源使用率高的进程。使用此信息为您的工作负载选择具有足够资源的实例。
相关内容
- 已提问 2 个月前lg...
- 已提问 1 个月前lg...
- AWS 官方已更新 3 个月前
- AWS 官方已更新 8 个月前
- AWS 官方已更新 8 个月前
- AWS 官方已更新 6 个月前