

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

# 監控 Apache Iceberg 工作負載
<a name="monitoring"></a>

若要監控 Iceberg 工作負載，您有兩個選項：分析[中繼資料表](https://iceberg.apache.org/docs/latest/spark-queries/#inspecting-tables)或使用[指標報告程式](https://iceberg.apache.org/javadoc/latest/index.html?org/apache/iceberg/metrics/MetricsReporter.html)。指標報告程式在 Iceberg 1.2 版中推出，僅適用於 REST 和 JDBC 目錄。

如果您使用的是 AWS Glue Data Catalog，您可以在 Iceberg 公開的中繼資料資料表上設定監控，以深入了解 Iceberg 資料表的運作狀態。

監控對於效能管理和疑難排解至關重要。例如，當 Iceberg 資料表中的分割區達到特定百分比的小型檔案時，您的工作負載可以啟動壓縮任務，將檔案合併成較大的檔案。這可防止查詢減速超過可接受的層級。

## 資料表層級監控
<a name="table-level-monitoring"></a>

下列畫面顯示在 Amazon Quick Sight 中建立的資料表監控儀表板。此儀表板會使用 Spark SQL 查詢 Iceberg 中繼資料表，並擷取詳細的指標，例如作用中檔案的數量和總儲存體。然後，此資訊會存放在 AWS Glue 資料表中，以供操作之用。最後，使用 Amazon Athena 建立 Quick Sight 儀表板，如下圖所示。此資訊可協助您識別和解決系統中的特定問題。

![\[用於監控 Iceberg 資料表的 Quick Sight 儀表板\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/apache-iceberg-on-aws/images/quicksight-table.png)


Quick Sight 儀表板範例會收集 Iceberg 資料表的下列關鍵效能指標 (KPIs)：


| **KPI** | **Description** | **Query** | 
| --- |--- |--- |
| **檔案數量** | Iceberg 資料表中的檔案數目 （適用於所有快照） | <pre>select count(*) <br />from <catalog.database.table_name>.all_files</pre> | 
| **作用中檔案的數量** | Iceberg 資料表最後一個快照中的作用中檔案數目 | <pre>select count(*) <br />from <catalog.database.table_name>.files</pre> | 
| **平均檔案大小** | Iceberg 資料表中所有檔案的平均檔案大小，以 MB 為單位 | <pre>select avg(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.all_files</pre> | 
| **平均作用中檔案大小** | Iceberg 資料表中作用中檔案的平均檔案大小，以 MB 為單位 | <pre>select avg(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.files</pre> | 
| **小型檔案的百分比** | 小於 100 MB 的作用中檔案百分比 | <pre>select cast(sum(case when file_size_in_bytes < 100000000 then 1 else 0 end)*100/count(*) as decimal(10,2)) <br />from <catalog.database.table_name>.files</pre> | 
| **總儲存體大小** | 資料表中所有檔案的總大小，不包括孤立檔案和 Amazon S3 物件版本 （如果啟用） | <pre>select sum(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.all_files</pre> | 
| **作用中儲存體大小總計** | 指定資料表目前快照中所有檔案的總大小 | <pre>select sum(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.files</pre> | 

如需建立儀表板的詳細資訊，請參閱 [Quick Sight 文件](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html)。

## 資料庫層級監控
<a name="database-level-monitoring"></a>

下列範例顯示在 Quick Sight 中建立的監控儀表板，以提供 Iceberg 資料表集合的資料庫層級 KPIs概觀。

![\[用於 Iceberg 資料庫層級監控的 QuickSight 儀表板\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/apache-iceberg-on-aws/images/quicksight-database.png)


此儀表板會收集下列 KPIs：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/apache-iceberg-on-aws/monitoring.html)

## 預防性維護
<a name="preventive-maintenance"></a>

透過設定先前章節中討論的監控功能，您可以從預防性而非被動角度接近資料表維護。例如，您可以使用資料表層級和資料庫層級指標來排程動作，如下所示：
+ 當資料表達到 N 個小型檔案時，使用 bin 封裝壓縮來分組小型檔案。
+ 當資料表達到指定分割區中的 N 個刪除檔案時，使用 bin 封裝壓縮來合併刪除檔案。
+ 當總儲存體比作用中儲存體高 X 倍時，透過移除快照來移除已壓縮的小型檔案。