

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 作業系統監控
<a name="os-monitoring"></a>

Amazon RDS for MySQL 或 MariaDB 中的資料庫執行個體會在 Linux 作業系統上執行，該作業系統使用基礎系統資源：CPU、記憶體、網路和儲存。

```
MySQL [(none)]> SHOW variables LIKE 'version%';
+-------------------------+---------------------+
| Variable_name           | Value               |
+-------------------------+---------------------+
| version                 | 8.0.28              |
| version_comment         | Source distribution |
| version_compile_machine | aarch64             |
| version_compile_os      | Linux               |
| version_compile_zlib    | 1.2.11              |
+-------------------------+---------------------+
5 rows in set (0.00 sec)
```

資料庫和基礎作業系統的整體效能，完全取決於系統資源的使用率。例如，CPU 是系統效能的關鍵元件，因為它會執行資料庫軟體指示並管理其他系統資源。如果 CPU 過度使用 （也就是說，如果負載需要比為資料庫執行個體佈建更多的 CPU 功率），此問題會影響資料庫的效能和穩定性，進而影響您的應用程式。

資料庫引擎會動態配置和釋放記憶體。當 RAM 沒有足夠的記憶體來執行目前的工作時，系統會將記憶體頁面寫入位於磁碟上的交換記憶體。由於磁碟比記憶體慢得多，即使磁碟是以 SSD NVMe 技術為基礎，過度配置記憶體也會導致效能降低。高記憶體使用率會導致資料庫回應的延遲增加，因為頁面檔案的大小會成長以支援額外的記憶體。如果記憶體配置太高，以致於耗盡了 RAM 和交換記憶體空間，則資料庫服務可能會變得無法使用，使用者可能會發現錯誤，例如 `[ERROR] mysqld: Out of memory (Needed xyz bytes)`。

MySQL 和 MariaDB 資料庫管理系統使用儲存子系統，其中包含存放[磁碟上結構](https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html)的磁碟，例如資料表、索引、二進位日誌、重做日誌、復原日誌和雙寫緩衝區檔案。因此，相較於其他類型的軟體，資料庫必須執行許多磁碟活動。為了獲得最佳的資料庫操作，請務必監控和調整磁碟 I/O 使用率和磁碟空間配置。當資料庫達到磁碟支援的最大 IOPS 或輸送量限制時，資料庫效能可能會受到影響。例如，索引掃描導致的隨機存取暴增可能導致每秒大量的 I/O 操作，最終可能會影響基礎儲存體的限制。完整資料表掃描可能不會達到 IOPS 限制，但可能會導致高輸送量，以每秒 MB 為單位。監控和產生磁碟空間分配警示至關重要，因為 等錯誤`OS error code 28: No space left on device`可能會導致資料庫無法使用和損毀。

Amazon RDS 為您的資料庫執行個體執行所在的作業系統即時提供指標。Amazon RDS 會自動將一組作業系統指標發佈至 CloudWatch。您可以在 Amazon RDS 主控台和 CloudWatch 儀表板中顯示和分析這些指標，也可以在 CloudWatch 中設定所選指標的警示。範例包括：
+ `CPUUtilization` – CPU 使用率的百分比。
+ `BinLogDiskUsage` – 二進位日誌佔用的磁碟空間量。
+ `FreeableMemory` – 可用的隨機存取記憶體數量。這代表 的 `MemAvailable` 欄位值`/proc/meminfo`。
+ `ReadIOPS` – 每秒磁碟讀取 I/O 操作的平均數量。
+ `WriteThroughput` – 本機儲存體每秒寫入磁碟的平均位元組數。
+ `NetworkTransmitThroughput` – 資料庫節點上的傳出網路流量，結合了用於監控和複寫的資料庫流量和 Amazon RDS 流量。

如需 Amazon RDS 發佈至 CloudWatch 的所有指標的完整參考，請參閱 [Amazon RDS 文件中的 Amazon RDS 的 Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html)。

下表顯示 Amazon RDS 主控台上顯示的 Amazon RDS CloudWatch 指標範例。

![\[Amazon RDS 主控台上顯示的 Amazon RDS CloudWatch 指標\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/cloudwatch-metrics-rds-console.png)


下圖顯示 CloudWatch 儀表板中顯示的類似指標。

![\[CloudWatch 主控台上顯示的 Amazon RDS CloudWatch 指標\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/cloudwatch-metrics-cw-console.png)


另一組作業系統指標是由 Amazon RDS 的[增強型監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html)收集。此工具提供即時系統指標和作業系統程序資訊，讓您更深入了解 Amazon RDS for MariaDB 和 Amazon RDS for MySQL 資料庫執行個體的運作狀態。當您在資料庫執行個體上[啟用增強型監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.Enabling.html)並設定所需的精細程度時，工具會收集作業系統指標和程序資訊，您可以在 [Amazon RDS 主控台](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.html)上顯示和分析這些資訊，如下畫面所示。

![\[增強型監控收集的作業系統指標\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/enhanced-monitoring.png)


增強型監控提供的一些關鍵指標包括：
+ `cpuUtilization.total` – 使用中 CPU 的總百分比。
+ `cpuUtilization.user` – 使用者程式使用的 CPU 百分比。
+ `memory.active` – 指派的記憶體數量，以 KB 為單位。
+ `memory.cached` – 用於快取檔案系統型 I/O 的記憶體量。
+ `loadAverageMinute.one` – 最後一分鐘內請求 CPU 時間的程序數目。

如需指標的完整清單，請參閱 Amazon RDS 文件[中的增強型監控中的作業系統指標](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring-Available-OS-Metrics.html)。

在 Amazon RDS 主控台上，作業系統程序清單會提供資料庫執行個體中執行之每個程序的詳細資訊。清單分為三個部分：
+ **作業系統程序** ‒ 本節代表所有核心和系統程序的彙總摘要。這些程序通常對資料庫效能的影響最小。
+ **RDS 程序** – 本節代表支援 Amazon RDS 資料庫執行個體所需的 AWS 程序摘要。例如，它包含 Amazon RDS 管理代理程式、監控和診斷程序，以及類似的程序。
+ **RDS 子程序** – 本節代表支援資料庫執行個體的 Amazon RDS 程序摘要，在此情況下為`mysqld`程序及其執行緒。`mysqld` 執行緒會在父`mysqld`程序下方巢狀顯示。

下圖顯示 Amazon RDS 主控台中的作業系統程序清單。

![\[Amazon RDS 主控台中的作業系統程序清單\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/os-process-list.png)


Amazon RDS 從增強型監控將指標交付到您的 CloudWatch Logs 帳戶。Amazon RDS 主控台上顯示的監控資料會從 CloudWatch Logs 擷取。您也可以從 CloudWatch Logs [擷取資料庫執行個體的指標做為日誌串流](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.CloudWatchLogs.html)。這些指標會以 JSON 格式儲存。您可以在您所選的監控系統中，使用來自 CloudWatch Logs 的增強型監控 JSON 輸出。

為了在 CloudWatch 儀表板上顯示圖形並建立警示，以便在指標超過定義的閾值時啟動動作，您必須在 CloudWatch CloudWatch Logs 中建立指標篩選條件。如需詳細說明，請參閱 [AWS re：Post 文章](https://repost.aws/knowledge-center/custom-cloudwatch-metrics-rds)，了解如何篩選增強型監控 CloudWatch Logs，以產生 Amazon RDS 的自動自訂指標。

下列範例說明 `Custom/RDS` 命名空間`CPU.User`中的自訂指標。此自訂指標是透過從 CloudWatch Logs 篩選`cpuUtilization.user`增強型監控指標來建立。

![\[CPU.User 自訂指標\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/cpu-user-custom-metric.png)


當 CloudWatch 儲存庫中有指標可用時，您可以在 CloudWatch 儀表板中顯示和分析指標、套用進一步的數學和查詢操作，並設定警示來監控此特定指標，並在觀察到的值不符合定義的警示條件時產生警示。