如何從命令列監控 Lightsail 資源使用量?

4 分的閱讀內容
0

我在 Amazon Lightsail 中託管的網站或應用程式停機或執行速度非常慢。我想從命令列監控 Lightsail 資源使用量,以便我對這些問題進行疑難排解。

簡短說明

包括高資源使用量在內,有幾個因素會影響 Lightsail 執行個體上執行的服務。使用一般工具監控 Lightsail 執行個體上的 CPU、記憶體、磁碟 I/O 以及網路使用情況等資源。您可以從命令列即時執行此操作。這些工具可以精細檢視哪些程序的 CPU、記憶體、磁碟 I/O 或網路使用率最高。

您可以使用以下資源,從命令列分析和監控 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_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 年 9 月 2 日 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,以 KB 計算。
  • **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:**遭強制等待 Hypervisor 處理其他虛擬處理器的 % CPU 使用量。
  • **%guest:**耗用在虛擬處理器上的 % CPU 使用量。
  • **閒置:**閒置時間的 % CPU 使用量 (沒有程序,也不等待磁碟讀取/寫入)。

使用上述命令列工具,識別資源使用量高的程序。使用此資訊以選擇具有足夠資源供您工作負載的執行個體。

AWS 官方
AWS 官方已更新 8 個月前