

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

# 使用 Amazon DevOps Guru for Amazon RDS 分析效能異常
<a name="devops-guru-for-rds"></a>

Amazon DevOps Guru 是全受管操作服務，可協助開發人員和操作員改善其應用程式的效能和可用性。DevOps Guru 分擔任務找出操作問題，讓您快速落實建議來改善應用程式。如需詳細資訊，請參閱《Amazon DevOps Guru 使用者指南》**中的[什麼是 Amazon DevOps Guru？](https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html)。

DevOps Guru 偵測、分析所有 Amazon RDS 資料庫引擎的現有操作問題，並提出建議。DevOps Guru for RDS 擴大這種能力，將機器學習套用至 RDS for PostgreSQL 資料庫的績效詳情指標。這些監控功能可讓 DevOps Guru for RDS 偵測和診斷效能瓶頸，並建議具體的修正動作。DevOps Guru for RDS 也可以在 RDS for PostgreSQL 資料庫中，於問題發生前偵測到異常情況。

您現在可以在 RDS 主控台中檢視這些建議。如需詳細資訊，請參閱[Amazon RDS 的建議](monitoring-recommendations.md)。

下列影片為 DevOps Guru for RDS.的概觀。

[![AWS Videos](http://img.youtube.com/vi/N3NNYgzYUDA/0.jpg)](http://www.youtube.com/watch?v=N3NNYgzYUDA)


若要深入了解此主題，請參閱 [Amazon DevOps Guru for RDS under the hood](https://aws.amazon.com/blogs/database/amazon-devops-guru-for-rds-under-the-hood/) (Amazon DevOps Guru for RDS 幕後)。

**Topics**
+ [DevOps Guru for RDS 的好處](#devops-guru-for-rds.benefits)
+ [DevOps Guru for RDS 的運作方式](#devops-guru-for-rds.how-it-works)
+ [設定 DevOps Guru for RDS](#devops-guru-for-rds.configuring)

## DevOps Guru for RDS 的好處
<a name="devops-guru-for-rds.benefits"></a>

如果您負責 RDS for PostgreSQL 資料庫，您可能不知道已發生事件或退化而正在影響該資料庫。得知問題時，您可能不知道為何發生或如何處理。您不需要轉向資料庫管理員 (DBA) 求助，或依賴第三方工具，您可以遵循 DevOps Guru for RDS 的建議。

您可以從 DevOps Guru for RDS 的詳細分析中獲得下列好處：

**快速診斷**  
DevOps Guru for RDS 持續監控並分析資料庫遙測。績效詳情、增強型監控和 Amazon CloudWatch 為您的資料庫執行個體收集遙測資料。DevOps Guru for RDS 使用統計和機器學習技術來挖掘此資料並偵測異常。若要進一步了解遙測資料，請參閱，以及《Amazon RDS 使用者指南》**中的[在 Amazon RDS 以績效詳情監控資料庫負載](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)和[以增強型監控來監控 OS 指標](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html)。

**快速解決**  
每個異常都指出效能問題，並建議調查途徑或更正行動。例如，DevOps Guru for RDS 可能建議您調查特定的等待事件。或者，可能建議您調整應用程式集區設定，以限制資料庫連線的數目。採用這些建議，解決效能問題會比手動疑難排解更快。

**主動式洞察**  
DevOps Guru for RDS 會使用資源中的指標，在潛在問題行為變得更嚴重之前進行偵測。例如，它可以偵測資料庫何時使用越來越多磁碟上暫存資料表，因為這可能會影響效能。DevOps Guru 會接著提供建議，協助您在問題變得更嚴重之前加以解決。

**Amazon 工程師和機器學習的深厚知識**  
為了偵測效能問題並協助您解決瓶頸，DevOps Guru for RDS 仰賴機器學習 (ML) 和進階數學公式。Amazon 資料庫工程師以多年來管理數十萬個資料庫的底蘊，努力發展 DevOps Guru for RDS 的研究結果。憑藉此共同知識，DevOps Guru for RDS 可以教導您最佳實務。

## DevOps Guru for RDS 的運作方式
<a name="devops-guru-for-rds.how-it-works"></a>

DevOps Guru for RDS 從 Amazon RDS 績效詳情收集 RDS for PostgreSQL 資料庫的相關資料。最重要的指標是 `DBLoad`。DevOps Guru for RDS 取用績效詳情指標、使用機器學習來分析指標，然後將洞察發佈至儀表板。

「洞察」**是指 DevOps Guru 偵測到一堆相關異常。

在 DevOps Guru for RDS 中，*異常*是偏離所謂 RDS for PostgreSQL 資料庫正常效能的一種模式。

### 主動式洞察
<a name="devops-guru-for-rds.how-it-works.insights.proactive"></a>

*主動洞察*可讓您在異常行為發生前了解該行為。它包含具有建議和相關指標的異常情況，可幫助您在問題擴大之前解決 RDS for PostgreSQL 資料庫的問題。這些洞察會發佈在 DevOps Guru 儀表板。

例如，DevOps Guru 可能會偵測到您的 RDS for PostgreSQL 資料庫正在建立許多磁碟上暫存資料表。若未解決問題，之後可能導致效能問題。每個主動洞察都包含修正行為的建議，以及 [使用 Amazon DevOps Guru 主動洞察，調校 RDS for PostgreSQL](PostgreSQL.Tuning_proactive_insights.md) 中相關主題的連結。如需詳細資訊，請參閱《Amazon DevOps Guru 使用者指南》**中的[在 DevOps Guru 中使用洞察](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html)。

### 反應式洞察
<a name="devops-guru-for-rds.how-it-works.insights.reactive"></a>

*反應式洞察*會在發生異常行為時有效識別。如果 DevOps Guru for RDS 在您的 RDS for PostgreSQL 資料庫執行個體中發現效能問題，則會在 DevOps Guru 儀表板中發佈反應式洞察。如需詳細資訊，請參閱《Amazon DevOps Guru 使用者指南》**中的[在 DevOps Guru 中使用洞察](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html)。

#### 因果異常
<a name="devops-guru-for-rds.how-it-works.anomalies.causal"></a>

*因果異常*是反應式洞察中最高等級的異常。**資料庫負載 (DB 負載)** 是 DevOps Guru for RDS 所謂的因果異常。

異常指派**高**、**中**、**低**的嚴重性層級來測量效能影響。如需進一步了解，請參閱《Amazon DevOps Guru 使用者指南》**中的 [DevOps Guru for RDS 的重要概念](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.definitions.html)。

如果 DevOps Guru 在您的資料庫執行個體上偵測到目前異常，則會在 RDS 主控台的 **Databases** (資料庫) 頁面中提醒您。主控台還會提醒您過去 24 小時內發生的異常。若要從 RDS 主控台移至異常頁面，請選擇提醒訊息中的連結。RDS 主控台也會在頁面中提醒您注意 RDS for PostgreSQL 資料庫執行個體。

#### 情境異常
<a name="devops-guru-for-rds.how-it-works.anomalies.contextual"></a>

*情境異常*是**資料庫負載**內的研究結果，與反應式洞察相關。每個情境異常描述一個需要調查的特定 RDS for PostgreSQL 效能問題。例如，DevOps Guru for RDS 可能建議您考慮增加 CPU 容量，或調查導致資料庫負載的等待事件。

**重要**  
建議您先在測試執行個體上測試任何變更，然後再修改生產執行個體。如此就可以了解變更的影響。

如需進一步了解，請參閱《Amazon DevOps Guru 使用者指南》**中的[分析 Amazon RDS 中的異常](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.analyzing.html)。

## 設定 DevOps Guru for RDS
<a name="devops-guru-for-rds.configuring"></a>

若要讓 DevOps Guru for Amazon RDS 發佈有關 RDS for PostgreSQL 資料庫的洞察，請完成下列任務。

**Topics**
+ [設定 DevOps Guru for RDS 的 IAM 存取政策](#devops-guru-for-rds.configuring.access)
+ [對 RDS for PostgreSQL 資料庫執行個體開啟績效詳情](#devops-guru-for-rds.configuring.performance-insights)
+ [開啟 DevOps Guru 並指定資源涵蓋範圍](#devops-guru-for-rds.configuring.coverage)

### 設定 DevOps Guru for RDS 的 IAM 存取政策
<a name="devops-guru-for-rds.configuring.access"></a>

若要在 RDS 主控台中檢視 DevOps Guru 的提醒，您的 AWS Identity and Access Management (IAM) 使用者或角色必須具有下列任一政策：
+  AWS 受管政策 `AmazonDevOpsGuruConsoleFullAccess`
+  AWS 受管政策和下列`AmazonDevOpsGuruConsoleReadOnlyAccess`任一政策：
  +  AWS 受管政策 `AmazonRDSFullAccess`
  + 包含 `pi:GetResourceMetrics` 和 `pi:DescribeDimensionKeys` 的客戶受管政策

如需詳細資訊，請參閱[設定績效詳情的存取政策](USER_PerfInsights.access-control.md)。

### 對 RDS for PostgreSQL 資料庫執行個體開啟績效詳情
<a name="devops-guru-for-rds.configuring.performance-insights"></a>

DevOps Guru for RDS 依賴績效詳情取得資料。如果沒有績效詳情，DevOps Guru 只發佈異常，但不包括詳細的分析和建議。

在建立或修改 RDS for PostgreSQL 資料庫執行個體時，您可以啟用績效詳情。如需詳細資訊，請參閱[開啟和關閉 Amazon RDS 的 Performance Insights](USER_PerfInsights.Enabling.md)。

### 開啟 DevOps Guru 並指定資源涵蓋範圍
<a name="devops-guru-for-rds.configuring.coverage"></a>

您可以開啟 DevOps Guru，使其以下列其中一個方式監控 RDS for PostgreSQL 資料庫。

**Topics**
+ [在 RDS 主控台開啟 DevOps Guru](#devops-guru-for-rds.configuring.coverage.rds-console)
+ [在 DevOps Guru 主控台中新增 RDS for PostgreSQL 資源](#devops-guru-for-rds.configuring.coverage.guru-console)
+ [使用 新增 RDS for PostgreSQL 資源 CloudFormation](#devops-guru-for-rds.configuring.coverage.cfn)

#### 在 RDS 主控台開啟 DevOps Guru
<a name="devops-guru-for-rds.configuring.coverage.rds-console"></a>

Amazon RDS 主控台中有多種途徑可供您開啟 DevOps Guru。

**Topics**
+ [建立 RDS for PostgreSQL 資料庫時開啟 DevOps Guru](#devops-guru-for-rds.configuring.coverage.rds-console.create)
+ [從通知橫幅開啟 DevOps Guru](#devops-guru-for-rds.configuring.coverage.rds-console.existing)
+ [開啟 DevOps Guru 時回應許可錯誤](#devops-guru-for-rds.configuring.coverage.rds-console.error)

##### 建立 RDS for PostgreSQL 資料庫時開啟 DevOps Guru
<a name="devops-guru-for-rds.configuring.coverage.rds-console.create"></a>

此建立工作流程中有一個設定可為資料庫開啟 DevOps Guru 涵蓋範圍。當您選擇 **Production** (生產) 範本時，此設定預設為開啟。

**建立 RDS for PostgreSQL 資料庫時開啟 DevOps Guru**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 請按照 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 中的步驟進行，一直執行到 (但不包括) 您選擇監控設定的步驟。

1. 在 **Monitoring** (監控) 中，選擇 **Turn on Performance Insights** (開啟績效詳情)。若要讓 DevOps Guru for RDS 提供對效能異常的詳細分析，必須開啟 Performance Insights。

1. 選擇 **Turn on DevOps Guru** (開啟 DevOps Guru)。  
![\[建立資料庫執行個體時開啟 DevOps Guru\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/devops-guru-enable-create.png)

1. 為資料庫建立一個標籤讓 DevOps Guru 可以監控資料庫。請執行下列操作：
   + 在 **Tag key** (標籤鍵) 的文字欄位中，輸入開頭為 **Devops-Guru-** 的名稱。
   + 在 **Tag value** (標籤值) 的文字欄位中，輸入任何一個值。例如，如果您輸入 **rds-database-1** 作為 RDS for PostgreSQL 資料庫的名稱，您也可以輸入 **rds-database-1** 作為標籤值。

   如需標籤的詳細資訊，請參閱《*Amazon DevOps Guru 使用者指南*》中的[使用標籤識別 DevOps Guru 應用程式中的資源](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-resource-tags.html)。

1. 完成[建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 中剩餘的步驟。

##### 從通知橫幅開啟 DevOps Guru
<a name="devops-guru-for-rds.configuring.coverage.rds-console.existing"></a>

如果 DevOps Guru 未涵蓋您的資源，則 Amazon RDS 會在以下位置透過橫幅通知您：
+ 資料庫叢集執行個體的 **Monitoring** (監控) 索引標籤
+ 績效詳情儀表板

![\[DevOps Guru 橫幅\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/devops-guru-enable-banner.png)


**為 RDS for PostgreSQL 資料庫開啟 DevOps Guru**

1. 在橫幅中，選擇 **Turn on DevOps Guru for RDS** (開啟 DevOps Guru for RDS)。

1. 輸入標籤金鑰名稱與值。如需標籤的詳細資訊，請參閱《*Amazon DevOps Guru 使用者指南*》中的[使用標籤識別 DevOps Guru 應用程式中的資源](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-resource-tags.html)。  
![\[在 RDS 主控台開啟 DevOps Guru\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/devops-guru-turn-on.png)

1. 選擇 **Turn on DevOps Guru** (開啟 DevOps Guru)。

##### 開啟 DevOps Guru 時回應許可錯誤
<a name="devops-guru-for-rds.configuring.coverage.rds-console.error"></a>

如果您在建立資料庫時從 RDS 主控台開啟 DevOps Guru，RDS 可能會顯示下列與缺少許可相關的橫幅。

![\[內含缺少許可錯誤的橫幅\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/devops-guru-permissions-error.png)


**回應許可錯誤**

1. 將使用者管理的角色 `AmazonDevOpsGuruConsoleFullAccess` 授予您的 IAM 使用者或角色。如需詳細資訊，請參閱[設定 DevOps Guru for RDS 的 IAM 存取政策](#devops-guru-for-rds.configuring.access)。

1. 開啟 RDS 主控台。

1. 在導覽窗格中，選擇 **Performance Insights** (績效詳情)。

1. 在叢集中選擇您剛剛建立的資料庫執行個體。

1. 選擇切換以開啟**DevOps Guru for RDS**。  
![\[選擇切換以開啟 DevOps Guru for RDS\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/devops-guru-pi-toggle-off.png)

1. 選擇一個標籤值。如需詳細資訊，請參閱《[Amazon DevOps Guru 使用者指南](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-resource-tags.html)》中的*使用標籤識別 DevOps Guru 應用程式中的資源*。  
![\[在 Amazon RDS 主控台開啟 DevOps Guru\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/devops-guru-turn-on.png)

1. 選擇 **Turn on DevOps Guru** (開啟 DevOps Guru)。

#### 在 DevOps Guru 主控台中新增 RDS for PostgreSQL 資源
<a name="devops-guru-for-rds.configuring.coverage.guru-console"></a>

您可以在 DevOps Guru 主控台上指定您的 DevOps Guru 資源涵蓋範圍。依照《*Amazon DevOps Guru 使用者指南*》中[指定 DevOps Guru 資源涵蓋範圍](https://docs.aws.amazon.com/devops-guru/latest/userguide/choose-coverage.html)中所述的步驟進行。在編輯分析的資源時，請選擇下列其中一個選項：
+ 選擇**所有帳戶資源**，以分析 AWS 帳戶 和 區域中所有支援的資源，包括 RDS for PostgreSQL 資料庫。
+ 選取 **CloudFormation 堆疊**以分析您所選堆疊中的 RDS for PostgreSQL 資料庫。如需詳細資訊，請參閱《Amazon [ DevOps Guru 使用者指南》中的使用 AWS CloudFormation 堆疊來識別 DevOps Guru 應用程式中的資源](https://docs.aws.amazon.com//devops-guru/latest/userguide/working-with-cfn-stacks.html)。 * DevOps *
+ 選擇**標籤**分析已標記的 RDS for PostgreSQL 資料庫。如需詳細資訊，請參閱《[Amazon DevOps Guru 使用者指南](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-resource-tags.html)》中的*使用標籤識別 DevOps Guru 應用程式中的資源*。

如需詳細資訊，請參閱《*Amazon DevOps Guru 使用者指南*》中的[啟用 DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/getting-started-enable-service.html)。

#### 使用 新增 RDS for PostgreSQL 資源 CloudFormation
<a name="devops-guru-for-rds.configuring.coverage.cfn"></a>

您可以使用標籤，將 RDS for PostgreSQL 資源的涵蓋圍範新增至 CloudFormation 範本。下列程序假設您具有同時適用於 RDS for PostgreSQL 資料庫執行個體和 DevOps Guru 堆疊的 CloudFormation 範本。

**使用 CloudFormation 標籤指定 RDS for PostgreSQL 資料庫執行個體**

1. 在適用於資料庫執行個體的 CloudFormation 範本中，使用金鑰/值對定義標籤。

   下列範例會將值 `my-db-instance1` 指派給 RDS for PostgreSQL 資料庫執行個體的 `Devops-guru-cfn-default`。

   ```
   MyDBInstance1:
     Type: "AWS::RDS::DBInstance"
     Properties:
       DBInstanceIdentifier: my-db-instance1
       Tags:
         - Key: Devops-guru-cfn-default
           Value: devopsguru-my-db-instance1
   ```

1. 在 DevOps Guru 堆疊的 CloudFormation 範本中，於資源集合篩選條件中指定相同的標籤。

   下列範例會設定 DevOps Guru，針對標籤值為 `my-db-instance1` 的資源提供涵蓋範圍。

   ```
   DevOpsGuruResourceCollection:
     Type: AWS::DevOpsGuru::ResourceCollection
     Properties:
       ResourceCollectionFilter:
         Tags:
           - AppBoundaryKey: "Devops-guru-cfn-default"
             TagValues:
             - "devopsguru-my-db-instance1"
   ```

   下列範例提供應用程式邊界 `Devops-guru-cfn-default` 內所有資源的涵蓋範圍。

   ```
   DevOpsGuruResourceCollection:
     Type: AWS::DevOpsGuru::ResourceCollection
     Properties:
       ResourceCollectionFilter:
         Tags:
           - AppBoundaryKey: "Devops-guru-cfn-default"
             TagValues:
             - "*"
   ```

如需詳細資訊，請參閱《CloudFormation 使用者指南》**中的 [AWS::DevOpsGuru::ResourceCollection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-devopsguru-resourcecollection.html) 和 [AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html)。