

AWS App Runner 自 2026 年 4 月 30 日起，不再開放給新客戶。如果您想要使用 App Runner，請在該日期之前註冊。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS App Runner 可用性變更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

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

# App Runner 服務的可觀測性
<a name="monitor"></a>

AWS App Runner 與數個 AWS 服務整合，為您的 App Runner 服務提供廣泛的可觀測性工具套件。本章中的主題說明這些功能。

**Topics**
+ [追蹤 App Runner 服務活動](monitor-activity.md)
+ [檢視串流至 CloudWatch Logs 的 App Runner 日誌](monitor-cwl.md)
+ [檢視報告給 CloudWatch 的 App Runner 服務指標](monitor-cw.md)
+ [在 EventBridge 中處理 App Runner 事件](monitor-ev.md)
+ [使用 記錄 App Runner API 呼叫 AWS CloudTrail](monitor-ct.md)
+ [使用 X-Ray 追蹤 App Runner 應用程式](monitor-xray.md)

# 追蹤 App Runner 服務活動
<a name="monitor-activity"></a>

AWS App Runner 會使用操作清單來追蹤 App Runner 服務中的活動。操作代表對 API 動作的非同步呼叫，例如建立服務、更新組態和部署服務。下列各節說明如何在 App Runner 主控台和使用 API 追蹤活動。

## 追蹤 App Runner 服務活動
<a name="monitor-activity.monitor"></a>

使用下列其中一種方法追蹤您的 App Runner 服務活動：

------
#### [ App Runner console ]

App Runner 主控台會顯示您的 App Runner 服務活動，並提供更多探索操作的方法。

**檢視 服務的活動**

1. 開啟 [App Runner 主控台](https://console.aws.amazon.com/apprunner)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**服務**，然後選擇您的 App Runner 服務。

   主控台會顯示服務儀表板，其中包含**服務概觀**。  
![\[App Runner 服務儀表板頁面顯示活動清單\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/images/console-dashboard.png)

1. 在服務儀表板頁面上，如果尚未選擇**活動**索引標籤，請選擇該索引標籤。

   主控台會顯示操作清單。

1. 若要尋找特定操作，請輸入搜尋詞彙以縮小清單範圍。您可以搜尋出現在資料表中的任何值。

1. 選擇任何列出的操作，以查看或下載相關日誌。

------
#### [ App Runner API or AWS CLI ]

[ListOperations](https://docs.aws.amazon.com/apprunner/latest/api/API_ListOperations.html) 動作，指定 App Runner 服務的 Amazon Resource Name (ARN)，會傳回此服務上發生的操作清單。每個清單項目都包含操作 ID 和一些追蹤詳細資訊。

------

# 檢視串流至 CloudWatch Logs 的 App Runner 日誌
<a name="monitor-cwl"></a>

您可以使用 Amazon CloudWatch Logs 來監控、存放和存取各種 AWS 服務中資源產生的日誌檔案。如需更多資訊，請參閱 [Amazon CloudWatch Logs 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)。

AWS App Runner 會收集應用程式部署和作用中服務的輸出，並將其串流至 CloudWatch Logs。下列各節列出 App Runner 日誌串流，並說明如何在 App Runner 主控台中檢視它們。

## App Runner 日誌群組和串流
<a name="monitor-cwl.streams"></a>

CloudWatch Logs 會將日誌資料保留在日誌串流中，以便進一步組織在日誌群組中。*日誌串流*是來自特定來源的一系列日誌事件。*日誌群組*是共用相同保留、監控和存取控制設定的日誌串流群組。

App Runner 會為您 中的每個 App Runner 服務定義兩個 CloudWatch Logs 日誌群組，每個群組都有多個日誌串流 AWS 帳戶。

### 服務日誌
<a name="monitor-cwl.streams.service"></a>

服務日誌群組包含 App Runner 在管理 App Runner 服務並對其採取行動時所產生的記錄輸出。


|  **日誌群組名稱**  |  **範例**  | 
| --- | --- | 
|  `/aws/apprunner/service-name/service-id/service`  |  `/aws/apprunner/python-test/ac7ec8b51ff34746bcb6654e0bcb23da/service`  | 

在服務日誌群組中，App Runner 會建立事件日誌串流，以擷取 App Runner 服務生命週期中的活動。例如，這可能會啟動或暫停您的應用程式。

此外，App Runner 會為每個與您的服務相關的長時間執行非同步操作建立日誌串流。日誌串流名稱反映操作類型和特定操作 ID。

*部署*是一種操作。部署日誌包含 App Runner 在您建立服務或部署應用程式新版本時所執行建置和部署步驟的記錄輸出。部署日誌串流名稱以 開頭`deployment/`，並以執行部署的操作 ID 結尾。此操作是初始應用程式部署的 [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html) 呼叫，或是每個後續部署的 [StartDeployment](https://docs.aws.amazon.com/apprunner/latest/api/API_StartDeployment.html) 呼叫。

在部署日誌中，每個日誌訊息都以字首開頭：
+ `[AppRunner]` – App Runner 在部署期間產生的輸出。
+ `[Build]` – 您自己的建置指令碼輸出。


|  **日誌串流名稱**  |  **範例**  | 
| --- | --- | 
|  `events`  |  *不適用 （固定名稱）*  | 
|  `operation-type/operation-id`  |  `deployment/c2c8eeedea164f459cf78f12a8953390`  | 

### 應用程式記錄
<a name="monitor-cwl.streams.deployment"></a>

應用程式日誌群組包含執行中應用程式程式碼的輸出。


|  **日誌群組名稱**  |  **範例**  | 
| --- | --- | 
|  `/aws/apprunner/service-name/service-id/application`  |  `/aws/apprunner/python-test/ac7ec8b51ff34746bcb6654e0bcb23da/application`  | 

在應用程式日誌群組中，App Runner 會為每個執行您應用程式的執行個體 （擴展單位） 建立日誌串流。


|  **日誌串流名稱**  |  **範例**  | 
| --- | --- | 
|  `instance/instance-id`  |  `instance/1a80bc9134a84699b7b3432ebeebb591`  | 

## 在主控台中檢視 App Runner 日誌
<a name="monitor-cwl.console"></a>

App Runner 主控台會顯示服務的所有日誌摘要，並可讓您檢視、探索和下載日誌。

**檢視 服務的日誌**

1. 開啟 [App Runner 主控台](https://console.aws.amazon.com/apprunner)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**服務**，然後選擇您的 App Runner 服務。

   主控台會顯示具有服務**概觀的服務**儀表板。  
![\[App Runner 服務儀表板頁面顯示活動清單\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/images/console-dashboard.png)

1. 在服務儀表板頁面上，選擇**日誌**索引標籤。

   主控台會在數個區段中顯示幾種類型的日誌：
   + **事件日誌** – App Runner 服務生命週期中的活動。主控台會顯示最新的事件。
   + **部署日誌** – 將來源儲存庫部署到您的 App Runner 服務。主控台會顯示每個部署的個別日誌串流。
   + **應用程式日誌** – 部署至 App Runner 服務的 Web 應用程式輸出。主控台會將所有執行中執行個體的輸出合併為單一日誌串流。  
![\[App Runner 服務儀表板頁面上的日誌索引標籤\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/images/service-dashboad-logs.png)

1. 若要尋找特定部署，請輸入搜尋詞彙，縮小部署日誌清單的範圍。您可以搜尋出現在資料表中的任何值。

1. 若要檢視日誌的內容，請選擇**檢視完整日誌** （事件日誌） 或日誌串流名稱 （部署和應用程式日誌）。

1. 選擇**下載**以下載日誌。對於部署日誌串流，請先選取日誌串流。

1. 選擇在 ** CloudWatch 中檢視**以開啟 CloudWatch 主控台，並使用其完整功能來探索您的 App Runner 服務日誌。對於部署日誌串流，請先選取日誌串流。
**注意**  
如果您想要檢視特定執行個體的應用程式日誌，而非合併的應用程式日誌，CloudWatch 主控台特別有用。

# 檢視報告給 CloudWatch 的 App Runner 服務指標
<a name="monitor-cw"></a>

Amazon CloudWatch AWS 會即時監控您的 Amazon Web Services (AWS) 資源和您在其上執行的應用程式。您可以使用 CloudWatch 收集和追蹤指標，這些是您可以為您的資源和應用程式測量的變數。您也可以使用它來建立監看指標的警示。達到特定閾值時，CloudWatch 會傳送通知，或自動變更受監控的資源。如需更多資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

AWS App Runner 會收集各種指標，讓您更清楚 App Runner 服務的使用情況、效能和可用性。有些指標會追蹤執行 Web 服務的個別執行個體，有些則位於整體服務層級。下列各節列出 App Runner 指標，並說明如何在 App Runner 主控台中檢視它們。

## App Runner 指標
<a name="monitor-cw.metrics"></a>

App Runner 會收集與您的服務相關的下列指標，並將其發佈至 `AWS/AppRunner` 命名空間中的 CloudWatch。

**注意**  
在 2023 年 8 月 23 日之前，**CPU 使用率**和**記憶體使用率**指標是根據 vCPU 單位和使用的記憶體數，而不是*使用率百分比*，如今天計算。如果您的應用程式在此日期之前在 App Runner 上執行，而且您選擇在 App Runner 或 CloudWatch 主控台上返回檢視此日期的指標，則您會看到兩個單位的指標顯示，因此也會看到一些異常。

**重要**  
您需要在 2023 年 8 月 23 日之前更新任何以 *CPU 使用*率和*記憶體使用率*指標值為基礎的 CloudWatch 警示。更新警示以根據百分比使用率觸發，而不是 vCPU 或 MB。如需更多資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

每個執行個體 （擴展單位） 都會個別收集執行個體**層級指標**。


|  **測量了什麼？**  |  **指標**  |  **Description**  | 
| --- | --- | --- | 
|  CPU utilization  |  `CPUUtilization`  |  服務組態預留的 CPU 總用量中，一分鐘期間內的平均 CPU 用量百分比。  | 
|  Memory utilization  |  `MemoryUtilization`  |  服務組態預留的總記憶體中一分鐘期間的平均記憶體用量百分比。  | 

會針對整個服務收集服務**層級指標**。


|  **測量了什麼？**  |  **指標**  |  **Description**  | 
| --- | --- | --- | 
|  CPU utilization  |  `CPUUtilization`  |  在一分鐘期間內所有執行個體的彙總 CPU 用量百分比，超出服務組態預留的總 CPU 用量。  | 
|  Memory utilization  |  `MemoryUtilization`  |  服務組態預留的總記憶體中，一分鐘期間內所有執行個體的彙總記憶體用量百分比。  | 
|  Concurrency  |  `Concurrency`  |  服務正在處理的並行請求的大致數量。  | 
|  HTTP request count  |  `Requests`  |  服務收到的 HTTP 請求數量。  | 
|  HTTP status counts  |  `2xxStatusResponses` `4xxStatusResponses` `5xxStatusResponses`  |  傳回每個回應狀態的 HTTP 請求數目，依類別分組 (2XX、4XX, 5XX)。  | 
|  HTTP request latency  |  `RequestLatency`  |  您的 Web 服務處理 HTTP 請求所需的時間，以毫秒為單位。  | 
|  Instance counts  |  `ActiveInstances`  |  正在為您的服務處理 HTTP 請求的執行個體數量。   如果`ActiveInstances`指標顯示零，表示沒有服務的請求。它不表示您服務的執行個體數量為零。   | 

## 在主控台中檢視 App Runner 指標
<a name="monitor-cw.console"></a>

App Runner 主控台會以圖形顯示 App Runner 為您的服務收集的指標，並提供更多探索方法。

**注意**  
目前，主控台只會顯示服務指標。若要檢視執行個體指標，請使用 CloudWatch 主控台。

**檢視 服務的日誌**

1. 開啟 [App Runner 主控台](https://console.aws.amazon.com/apprunner)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**服務**，然後選擇您的 App Runner 服務。

   主控台會顯示服務儀表板，其中包含**服務概觀**。  
![\[App Runner 服務儀表板頁面，顯示活動清單\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/images/console-dashboard.png)

1. 在服務儀表板頁面上，選擇**指標**索引標籤。

   主控台會顯示一組指標圖表。  
![\[App Runner 服務儀表板頁面上的指標索引標籤\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/images/service-dashboad-metrics.png)

1. 選擇持續時間 （例如 **12 小時**)，將指標圖形範圍限定在該持續時間的最近期間。

1. 選擇其中一個圖形區段頂端的**新增至儀表板**，或使用任何圖形上的功能表，將相關指標新增至 CloudWatch 主控台中的儀表板，以進行進一步調查。

# 在 EventBridge 中處理 App Runner 事件
<a name="monitor-ev"></a>

使用 Amazon EventBridge，您可以設定事件驅動規則，以監控 AWS App Runner 服務中的即時資料串流是否有特定模式。當規則的模式相符時，EventBridge 會在目標中啟動動作 AWS Lambda，例如 AWS Batch Amazon ECS 和 Amazon SNS。例如，您可以在部署至服務失敗時發出 Amazon SNS 主題訊號，以設定傳送電子郵件通知的規則。或者，您可以設定 Lambda 函數，以便在服務更新失敗時通知 Slack 頻道。如需 EventBridge 的詳細資訊，請參閱 [Amazon EventBridge 使用者指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)。

App Runner 會將下列事件類型傳送至 EventBridge
+ *服務狀態變更* – App Runner 服務的狀態變更。例如，服務狀態已變更為 `DELETE_FAILED`。
+ *服務操作狀態變更* – App Runner 服務上長時間非同步操作的狀態變更。例如，服務開始建立、服務更新成功完成，或服務部署完成但發生錯誤。

## 建立 EventBridge 規則以對 App Runner 事件採取行動
<a name="monitor-ev.rule"></a>

EventBridge *事件*是定義一些標準 EventBridge 欄位的物件，例如來源 AWS 服務和詳細資訊 （事件） 類型，以及具有事件詳細資訊的事件特定欄位集。若要建立 EventBridge 規則，您可以使用 EventBridge 主控台來定義*事件模式* （應該追蹤哪些事件），並指定*目標動作* （應該對配對執行的動作）。事件模式類似於其相符的事件。您可以指定要比對的欄位子集，並為每個欄位指定可能值的清單。本主題提供 App Runner 事件和事件模式的範例。

如需建立 EventBridge 規則的詳細資訊，請參閱《*Amazon EventBridge 使用者指南*》中的[為 AWS 服務建立規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html)。

**注意**  
有些服務支援 EventBridge 中的*預先定義模式*。這簡化了事件模式的建立方式。您在表單上選取欄位值，EventBridge 就會為您產生模式。目前，App Runner 不支援預先定義的模式。您必須將模式輸入為 JSON 物件。您可以使用本主題中的範例做為起點。

## App Runner 事件範例
<a name="monitor-ev.event-examples"></a>

這些是 App Runner 傳送至 EventBridge 之事件的一些範例。
+ 服務狀態變更事件。具體而言，從 `OPERATION_IN_PROGRESS`變更為 `RUNNING` 狀態的服務。

  ```
  { 
    "version": "0",
    "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
    "detail-type": "AppRunner Service Status Change",
    "source": "aws.apprunner",
    "account": "111122223333",
    "time": "2021-04-29T11:54:23Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:apprunner:us-east-2:123456789012:service/my-app/8fe1e10304f84fd2b0df550fe98a71fa"
    ],
    "detail": {
      "previousServiceStatus": "OPERATION_IN_PROGRESS",
      "currentServiceStatus": "RUNNING",
      "serviceName": "my-app",
      "serviceId": "8fe1e10304f84fd2b0df550fe98a71fa",
      "message": "Service status is set to RUNNING.",
      "severity": "INFO"
    }
  }
  ```
+ 操作狀態變更事件。具體而言， `UpdateService`操作已成功完成。

  ```
  { 
    "version": "0",
    "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
    "detail-type": "AppRunner Service Operation Status Change",
    "source": "aws.apprunner",
    "account": "111122223333",
    "time": "2021-04-29T18:43:48Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:apprunner:us-east-2:123456789012:service/my-app/8fe1e10304f84fd2b0df550fe98a71fa"
    ],
    "detail": {
      "operationStatus": "UpdateServiceCompletedSuccessfully",
      "serviceName": "my-app",
      "serviceId": "8fe1e10304f84fd2b0df550fe98a71fa",
      "message": "Service update completed successfully. New application and configuration is deployed.",
      "severity": "INFO"
    }
  }
  ```

## App Runner 事件模式範例
<a name="monitor-ev.pattern-examples"></a>

下列範例示範您可以在 EventBridge 規則中使用的事件模式，以符合一或多個 App Runner 事件。事件模式類似於事件。僅包含您要比對的欄位，並提供清單，而不是每個欄位的純量。
+ 比對特定帳戶服務的所有服務狀態變更事件，其中服務不再處於 `RUNNING` 狀態。

  ```
  { 
    "detail-type": [ "AppRunner Service Status Change" ],
    "source": [ "aws.apprunner" ],
    "account": [ "111122223333" ],
    "detail": {
      "previousServiceStatus": [ "RUNNING" ]
    }
  }
  ```
+ 比對特定帳戶服務的所有操作狀態變更事件，其中操作失敗。

  ```
  { 
    "detail-type": [ "AppRunner Service Operation Status Change" ],
    "source": [ "aws.apprunner" ],
    "account": [ "111122223333" ],
    "detail": {
      "operationStatus": [
        "CreateServiceFailed",
        "DeleteServiceFailed",
        "UpdateServiceFailed",
        "DeploymentFailed",
        "PauseServiceFailed",
        "ResumeServiceFailed"
      ]
    }
  }
  ```

## App Runner 事件參考
<a name="monitor-ev.ref"></a>

### 服務狀態變更
<a name="monitor-ev.ref.service"></a>

服務狀態變更事件已`detail-type`設定為 `AppRunner Service Status Change`。它具有下列詳細資訊欄位和值：

```
"serviceId": "your service ID",
"serviceName": "your service name",
"message": "Service status is set to CurrentStatus.",
"previousServiceStatus": "any valid service status",
"currentServiceStatus": "any valid service status",
"severity": "varies"
```

### 操作狀態變更
<a name="monitor-ev.ref.operation"></a>

操作狀態變更事件已`detail-type`設定為 `AppRunner Service Operation Status Change`。它具有下列詳細資訊欄位和值：

```
"operationStatus": "see following table",
"serviceName": "your service name",
"serviceId": "your service ID",
"message": "see following table",
"severity": "varies"
```

下表列出所有可能的狀態碼和相關訊息。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/monitor-ev.html)

# 使用 記錄 App Runner API 呼叫 AWS CloudTrail
<a name="monitor-ct"></a>

App Runner 已與 整合 AWS CloudTrail，此服務提供由使用者、角色或 App Runner 中的 AWS 服務所採取之動作的記錄。CloudTrail 會將 App Runner 的所有 API 呼叫擷取為事件。擷取的呼叫包括來自 App Runner 主控台的呼叫，以及對 App Runner API 操作的程式碼呼叫。如果您建立線索，您可以將 CloudTrail 事件持續交付至 Amazon S3 儲存貯體，包括 App Runner 的事件。即使您未設定追蹤，依然可以透過 CloudTrail 主控台中的**事件歷史記錄**檢視最新事件。使用 CloudTrail 收集的資訊，您可以判斷向 App Runner 提出的請求、提出請求的 IP 地址、提出請求的人員、提出請求的時間，以及其他詳細資訊。

若要進一步了解 CloudTrail，請參閱[「AWS CloudTrail 使用者指南」](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## CloudTrail 中的 App Runner 資訊
<a name="apprunner-info-in-cloudtrail"></a>

當您建立帳戶 AWS 帳戶 時，您的 上會啟用 CloudTrail。當活動在 App Runner 中發生時，該活動會與**事件歷史記錄**中的其他服務 AWS 事件一起記錄在 CloudTrail 事件中。您可以在 中檢視、搜尋和下載最近的事件 AWS 帳戶。如需詳細資訊，請參閱《使用 CloudTrail 事件歷史記錄檢視事件》[https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

若要持續記錄 中的事件 AWS 帳戶，包括 App Runner 的事件，請建立追蹤。*線索*能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。依預設，當您在主控台中建立追蹤時，該追蹤會套用至所有的 AWS 區域。線索會記錄 AWS 分割區中所有區域的事件，並將日誌檔案交付至您指定的 Amazon S3 儲存貯體。此外，您可以設定其他 AWS 服務，以進一步分析和處理 CloudTrail 日誌中所收集的事件資料。如需詳細資訊，請參閱下列內容：
+ [建立追蹤的概觀](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支援的服務和整合](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [設定 CloudTrail 的 Amazon SNS 通知](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [從多個區域接收 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)，以及[從多個帳戶接收 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

CloudTrail 會記錄所有 App Runner 動作，並記錄在 AWS App Runner API 參考中。例如，對 `CreateService`、`DeleteConnection` 以及 `StartDeployment` 動作發出的呼叫會在 CloudTrail 日誌檔案中產生項目。

每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項：
+ 該請求是否使用根或 IAM 使用者憑證提出。
+ 提出該請求時，是否使用了特定角色或聯合身分使用者的暫時安全憑證。
+ 請求是否由其他 AWS 服務提出。

如需詳細資訊，請參閱 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

## 了解 App Runner 日誌檔案項目
<a name="understanding-apprunner-entries"></a>

追蹤是一種組態，能讓事件以日誌檔案的形式交付到您指定的 Amazon S3 儲存貯體。CloudTrail 日誌檔案包含一或多個日誌專案。事件即為來自任何來源的單一請求，其中包含請求動作、動作日期和時間，以及請求參數的相關資訊。CloudTrail 日誌檔並非依公有 API 呼叫的堆疊追蹤排序，因此不會以任何特定順序出現。

以下範例顯示的是展示 `CreateService` 動作的 CloudTrail 日誌項目。

**注意**  
基於安全考量，某些屬性值會在日誌中修訂，並以文字 取代`HIDDEN_DUE_TO_SECURITY_REASONS`。這可防止意外暴露秘密資訊。不過，您仍然可以看到這些屬性在請求中傳遞或在回應中傳回。

### `CreateService` App Runner 動作的範例 CloudTrail 日誌項目
<a name="understanding-apprunner-entries.example"></a>

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDACKCEVSQ6C2EXAMPLE",
    "arn": "arn:aws:iam::123456789012:user/aws-user",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "aws-user"
  },
  "eventTime": "2020-10-02T23:25:33Z",
  "eventSource": "apprunner.amazonaws.com",
  "eventName": "CreateService",
  "awsRegion": "us-east-2",
  "sourceIPAddress": "192.0.2.0",
  "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36",
  "requestParameters": {
    "serviceName": "python-test",
    "sourceConfiguration": {
      "codeRepository": {
        "repositoryUrl": "https://github.com/github-user/python-hello",
        "sourceCodeVersion": {
          "type": "BRANCH",
          "value": "main"
        },
        "codeConfiguration": {
          "configurationSource": "API",
          "codeConfigurationValues": {
            "runtime": "python3",
            "buildCommand": "HIDDEN_DUE_TO_SECURITY_REASONS",
            "startCommand": "HIDDEN_DUE_TO_SECURITY_REASONS",
            "port": "8080",
            "runtimeEnvironmentVariables": "HIDDEN_DUE_TO_SECURITY_REASONS"
          }
        }
      },
      "autoDeploymentsEnabled": true,
      "authenticationConfiguration": {
        "connectionArn": "arn:aws:apprunner:us-east-2:123456789012:connection/your-connection/e7656250f67242d7819feade6800f59e"
      }
    },
    "healthCheckConfiguration": {
      "protocol": "HTTP"
    },
    "instanceConfiguration": {
      "cpu": "256",
      "memory": "1024"
    }
  },
  "responseElements": {
    "service": {
        "serviceName": "python-test",
        "serviceId": "dfa2b7cc7bcb4b6fa6c1f0f4efff988a",
        "serviceArn": "arn:aws:apprunner:us-east-2:123456789012:service/python-test/dfa2b7cc7bcb4b6fa6c1f0f4efff988a",
        "serviceUrl": "generated domain",
        "createdAt": "2020-10-02T23:25:32.650Z",
        "updatedAt": "2020-10-02T23:25:32.650Z",
        "status": "OPERATION_IN_PROGRESS",
        "sourceConfiguration": {
            "codeRepository": {
                "repositoryUrl": "https://github.com/github-user/python-hello",
                "sourceCodeVersion": {
                    "type": "Branch",
                    "value": "main"
                },
                "sourceDirectory": "/",
                "codeConfiguration": {
                    "codeConfigurationValues": {
                        "configurationSource": "API",
                        "runtime": "python3",
                        "buildCommand": "HIDDEN_DUE_TO_SECURITY_REASONS",
                        "startCommand": "HIDDEN_DUE_TO_SECURITY_REASONS",
                        "port": "8080",
                        "runtimeEnvironmentVariables": "HIDDEN_DUE_TO_SECURITY_REASONS"
                    }
                }
            },
            "autoDeploymentsEnabled": true,
            "authenticationConfiguration": {
                "connectionArn": "arn:aws:apprunner:us-east-2:123456789012:connection/your-connection/e7656250f67242d7819feade6800f59e"
            }
        },
        "healthCheckConfiguration": {
            "protocol": "HTTP",
            "path": "/",
            "interval": 5,
            "timeout": 2,
            "healthyThreshold": 3,
            "unhealthyThreshold": 5
        },
        "instanceConfiguration": {
            "cpu": "256",
            "memory": "1024"
        },
        "autoScalingConfigurationSummary": {
            "autoScalingConfigurationArn": "arn:aws:apprunner:us-east-2:123456789012:autoscalingconfiguration/DefaultConfiguration/1/00000000000000000000000000000001",
            "autoScalingConfigurationName": "DefaultConfiguration",
            "autoScalingConfigurationRevision": 1
        }
    }
},
  "requestID": "1a60af60-ecf5-4280-aa8f-64538319ba0a",
  "eventID": "e1a3f623-4d24-4390-a70b-bf08a0e24669",
  "readOnly": false,
  "eventType": "AwsApiCall",
  "recipientAccountId": "123456789012"
}
```

# 使用 X-Ray 追蹤 App Runner 應用程式
<a name="monitor-xray"></a>

AWS X-Ray 是一項 服務，可收集應用程式提供的請求相關資料，並提供可用來檢視、篩選和深入了解該資料的工具，以識別問題和最佳化的機會。對於應用程式的任何追蹤請求，您不僅可以查看請求和回應的詳細資訊，還可以查看應用程式對下游 AWS 資源、微服務、資料庫和 HTTP Web APIs發出的呼叫的詳細資訊。

X-Ray 使用來自支援雲端應用程式 AWS 的資源的追蹤資料來產生詳細的服務圖表。此服務圖表顯示用戶端、前端服務和後端服務，而前端服務會呼叫後端服務來處理請求和保留資料。使用服務圖形來識別瓶頸、延遲劇增的狀況和待解決的其他問題，以提升應用程式的效能。

如需 X-Ray 的詳細資訊，請參閱[《AWS X-Ray 開發人員指南》](https://docs.aws.amazon.com/xray/latest/devguide/)。

![\[App Runner 服務的 X-Ray 服務映射範例\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/images/xray-example.png)


## 檢測您的應用程式以進行追蹤
<a name="monitor-xray.instrument"></a>

使用可攜式遙測規格 [OpenTelemetry](https://github.com/open-telemetry) 檢測 App Runner 服務應用程式以進行追蹤。目前，App Runner 支援 [AWS Distro for OpenTelemetry](https://aws-otel.github.io/docs/introduction) (ADOT)，這是使用 AWS 服務收集和呈現遙測資訊的 OpenTelemetry 實作。X-Ray 實作追蹤元件。

根據您在應用程式中使用的特定 ADOT 開發套件，ADOT 最多支援兩種檢測方法：*自動*和*手動*。如需使用 SDK 進行檢測的詳細資訊，請參閱 [ADOT 文件](https://aws-otel.github.io/docs/introduction)，然後在導覽窗格中選擇您的 SDK。

### 執行期設定
<a name="monitor-xray.instrument.setup"></a>

 以下是檢測 App Runner 服務應用程式以進行追蹤的一般執行期設定指示。

**設定執行時間的追蹤**

1.  遵循 [AWS Distro for OpenTelemetry](https://aws-otel.github.io/docs/introduction) (ADOT) 中針對執行時間提供的指示來檢測您的應用程式。

1.  如果您使用的是原始碼儲存庫，請在 `apprunner.yaml` 檔案的 `build`區段中安裝必要的`OTEL`相依性；如果您使用的是容器映像，請在 Dockerfile 中安裝必要的相依性。

1.  如果您使用原始碼儲存庫，請在 `apprunner.yaml` 檔案中設定您的環境變數；如果您使用容器映像，請在 Dockerfile 中設定您的環境變數。  
**Example 環境變數**  
**注意**  
下列範例列出要新增至 `apprunner.yaml` 檔案的重要環境變數。如果您使用容器映像，請將這些環境變數新增至 Dockerfile。不過，每個執行時間都可以有自己的特性，您可能需要將更多環境變數新增至下列清單。如需執行時間特定指示的詳細資訊，以及如何為執行時間設定應用程式的範例，請參閱*入門*下的 [AWS Distro for OpenTelemetry](https://aws-otel.github.io/docs/introduction) 並前往執行時間。

   ```
   env:
       - name: OTEL_PROPAGATORS
         value: xray
       - name: OTEL_METRICS_EXPORTER
         value: none
       - name: OTEL_EXPORTER_OTLP_ENDPOINT
         value: http://localhost:4317  
       - name: OTEL_RESOURCE_ATTRIBUTES
         value: 'service.name=example_app'
   ```
**注意**  
 `OTEL_METRICS_EXPORTER=none` 是 App Runner 的重要環境變數，因為 App Runner Otel 收集器不接受指標記錄。它只接受指標追蹤。

### 執行時間設定範例
<a name="monitor-xray.instrument.example"></a>

下列範例示範使用 [ADOT Python SDK](https://aws-otel.github.io/docs/getting-started/python-sdk) 自動檢測您的應用程式。軟體開發套件會自動產生遙測資料，說明應用程式中 Python 架構使用的值，而不會新增單行 Python 程式碼。您只需要在兩個來源檔案中新增或修改幾行。

首先，新增一些相依性，如下列範例所示。

**Example requirements.txt**  

```
opentelemetry-distro[otlp]>=0.24b0
opentelemetry-sdk-extension-aws~=2.0
opentelemetry-propagator-aws-xray~=1.0
```

然後，檢測您的應用程式。執行此作業的方式取決於您的服務來源 - 來源映像或來源碼。

------
#### [ Source image ]

當您的服務來源是映像時，您可以直接檢測控制建置容器映像並在映像中執行應用程式的 Dockerfile。下列範例顯示 Python 應用程式的檢測 Dockerfile。檢測新增項目以粗體強調。

**Example Dockerfile**  

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest
RUN yum install python3.7 -y && curl -O https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py && yum update -y
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
RUN opentelemetry-bootstrap --action=install
ENV OTEL_PYTHON_DISABLED_INSTRUMENTATIONS=urllib3
ENV OTEL_METRICS_EXPORTER=none              
ENV OTEL_RESOURCE_ATTRIBUTES='service.name=example_app'
CMD OTEL_PROPAGATORS=xray OTEL_PYTHON_ID_GENERATOR=xray opentelemetry-instrument python3 app.py
EXPOSE 8080
```

------
#### [ Source code repository ]

當您的服務來源是包含應用程式來源的儲存庫時，您可以使用 App Runner 組態檔案設定間接檢測映像。這些設定控制 App Runner 產生的 Dockerfile，並用來建置應用程式的映像。下列範例顯示 Python 應用程式的檢測 App Runner 組態檔案。檢測新增項目以粗體強調。

**Example apprunner.yaml**  

```
version: 1.0
runtime: python3 
build:
  commands:
    build:
      - pip install -r requirements.txt
      - opentelemetry-bootstrap --action=install
run: 
  command: opentelemetry-instrument python app.py
  network: 
    port: 8080 
  env:
    - name: OTEL_PROPAGATORS
      value: xray
    - name: OTEL_METRICS_EXPORTER
      value: none
    - name: OTEL_PYTHON_ID_GENERATOR
      value: xray  
    - name: OTEL_PYTHON_DISABLED_INSTRUMENTATIONS 
      value: urllib3
    - name: OTEL_RESOURCE_ATTRIBUTES
      value: 'service.name=example_app'
```

------

## 將 X-Ray 許可新增至您的 App Runner 服務執行個體角色
<a name="monitor-xray.role"></a>

若要搭配 App Runner 服務使用 X-Ray 追蹤，您必須為服務的執行個體提供與 X-Ray 服務互動的許可。您可以建立執行個體角色與服務的關聯，並新增具有 X-Ray 許可的受管政策來執行此操作。如需 App Runner 執行個體角色的詳細資訊，請參閱 [執行個體角色](security_iam_service-with-iam.md#security_iam_service-with-iam-roles-service.instance)。將 `AWSXRayDaemonWriteAccess`受管政策新增至執行個體角色，並在建立期間將其指派給您的服務。

## 為您的 App Runner 服務啟用 X-Ray 追蹤
<a name="monitor-xray.config"></a>

當您[建立服務](manage-create.md)時，App Runner 預設會停用追蹤。您可以在設定可觀測性時為服務啟用 X-Ray 追蹤。如需詳細資訊，請參閱[管理可觀測性](manage-configure-observability.md#manage-configure-observability.manage)。

如果您使用 App Runner API 或 AWS CLI，則 ObservabilityConfiguration 資源物件中的 [TraceConfiguration](https://docs.aws.amazon.com/apprunner/latest/api/API_TraceConfiguration.html) 物件會包含追蹤設定。 [ObservabilityConfiguration](https://docs.aws.amazon.com/apprunner/latest/api/API_ObservabilityConfiguration.html) 若要停用追蹤，請勿指定`TraceConfiguration`物件。

在主控台和 API 案例中，請務必將上一節討論的執行個體角色與 App Runner 服務建立關聯。

## 檢視 App Runner 服務的 X-Ray 追蹤資料
<a name="monitor-xray.view"></a>

在 App Runner 主控台中[服務儀表板頁面](console.md#console.dashboard)的**可觀測性**索引標籤上，選擇**檢視服務映射**以導覽至 Amazon CloudWatch 主控台。

![\[App Runner 服務儀表板頁面顯示可觀測性索引標籤\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/images/service-dashboad-observability.png)


使用 Amazon CloudWatch 主控台來檢視應用程式提供之請求的服務映射和追蹤。服務映射會顯示請求延遲以及與其他應用程式 AWS 和服務互動等資訊。您新增至程式碼的自訂註釋可讓您輕鬆搜尋追蹤。如需詳細資訊，請參閱《*Amazon CloudWatch 使用者指南*》中的[使用 ServiceLens 監控應用程式的運作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html)狀態。