

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

# (選用) 使用範例應用程式試用 Application Signals
<a name="CloudWatch-Application-Signals-Enable-EKS-sample"></a>

若要先在範例應用程式上試用 CloudWatch Application Signals，然後再使用它來檢測您自己的應用程式，請遵循本節中的指示。這些指示使用指令碼來協助您建立 Amazon EKS 叢集、安裝範例應用程式，以及檢測範例應用程式以使用 Application Signals。

範例應用程式是由四個微服務組成的 Spring「寵物診所」應用程式。這些服務在 Amazon EC2 上的 Amazon EKS 中執行，並利用 Application Signals 啟用指令碼，透過 Java、Python 或 .NET 自動檢測代理程式啟用叢集。

**需求**
+ Application Signals 僅監控 Java、Python 或 .NET 應用程式。
+ 您必須在執行個體 AWS CLI 上安裝 。我們建議 AWS CLI 使用第 2 版，但第 1 版也應該有效。如需安裝 的詳細資訊 AWS CLI，請參閱[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。
+ 本節中的指令碼旨在執行於 Linux 和 macOS 環境中。對於 Windows 執行個體，我們建議您使用 AWS Cloud9 環境來執行這些指令碼。如需 的詳細資訊 AWS Cloud9，請參閱[什麼是 AWS Cloud9？](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html)。
+ 安裝支援的 `kubectl` 版本。您所使用的 `kubectl` 版本，必須與 Amazon EKS 叢集控制平面的版本差距在一個版本以內。例如，1.26 `kubectl` 用戶端可搭配使用 Kubernetes 1.25、1.26 和 1.27 版叢集。如果您已經有 Amazon EKS 叢集，您可能需要設定 的 AWS 登入資料`kubectl`。如需詳細資訊，請參閱[針對 Amazon EKS 叢集建立或更新 `kubeconfig` 檔案](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html)。
+ 安裝 `eksctl`。 `eksctl`使用 AWS CLI 與 互動 AWS，這表示它使用與 相同的 AWS 登入資料 AWS CLI。如需詳細資訊，請參閱[安裝或更新 `eksctl`](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html)。
+ 安裝 `jq`。需要 `jq` 才能執行 Application Signals 啟用指令碼。如需詳細資訊，請參閱[下載 jq](https://jqlang.github.io/jq/download/)。

## 步驟 1：下載指令碼
<a name="CloudWatch-Application-Signals-Enable-EKS-sample-scripts"></a>

若要使用範例應用程式下載指令碼以設定 CloudWatch Application Signals，可以下載壓縮的 GitHub 專案檔案並解壓縮到本機磁碟機，或者複製 GitHub 專案。

若要複製專案，請開啟終端視窗，並在指定工作目錄中輸入以下 Git 命令。

```
git clone https://github.com/aws-observability/application-signals-demo.git
```

## 步驟 2：建置並部署範例應用程式
<a name="CloudWatch-Application-Signals-Enable-EKS-sample-build"></a>

若要建置和推播範例應用程式映像，[請遵循下列指示](https://github.com/aws-observability/application-signals-demo?tab=readme-ov-file#build-the-sample-application-images-and-push-to-ecr)。

### 步驟 3：部署並啟用 Application Signals 和範例應用程式
<a name="CloudWatch-Application-Signals-Enable-EKS-sample-deploy"></a>

在完成下列步驟之前，請確定已完成 [(選用) 使用範例應用程式試用 Application Signals](#CloudWatch-Application-Signals-Enable-EKS-sample) 中列出的要求。

**部署並啟用 Application Signals 和範例應用程式**

1. 輸入以下命令。將 *new-cluster-name* 取代為您想要使用的新叢集名稱。將 *region-name* 取代為 AWS 區域的名稱，例如 `us-west-1`。

   此命令會設定在已啟用 Application Signals 的新 Amazon EKS 叢集中執行的範例應用程式。

   ```
   # this script sets up a new cluster, enables Application Signals, and deploys the
   # sample application
   cd application-signals-demo/scripts/eks/appsignals/one-step && ./setup.sh new-cluster-name region-name
   ```

   安裝指令碼大約需要 30 分鐘才能執行，並執行下列動作：
   + 在指定區域中建立新的 Amazon EKS 叢集。
   + 為 Application Signals 建立必要的 IAM 許可 (`arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess` 和 `arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy`)。
   + 透過安裝 CloudWatch 代理程式並自動檢測 CloudWatch 指標和 X-Ray 追蹤的範例應用程式，啟用 Application Signals。
   + 在相同的 Amazon EKS 叢集中部署 PetClinic Spring 範例應用程式。
   + 建立五個 CloudWatch Synthetics canary，名為 `pc-add-vist`、`pc-create-owners`、`pc-visit-pet`、`pc-visit-vet`、`pc-clinic-traffic`。這些 canary 將以一分鐘的頻率執行，以產生範例應用程式的合成流量，並演示 Synthetics canary 如何出現在 Application Signals 中。
   + 為 PetClinic 應用程式建立四個服務水準目標 (SLO)，名稱如下：
     + **搜尋擁有者的可用性**
     + **搜尋擁有者的延遲**
     + **註冊擁有者的可用性**
     + **註冊擁有者的延遲**
   + 使用自訂信任政策建立必要的 IAM 角色，並授予 Application Signals 下列許可：
     + `cloudwatch:PutMetricData`
     + `cloudwatch:GetMetricData`
     + `xray:GetServiceGraph`
     + `logs:StartQuery`
     + `logs:GetQueryResults`

1. (選用) 如果要查看 PetClinic 範例應用程式的原始碼，可以在根資料夾下找到它們。

   ```
   - application-signals-demo
     - spring-petclinic-admin-server
     - spring-petclinic-api-gateway
     - spring-petclinic-config-server
     - spring-petclinic-customers-service
     - spring-petclinic-discovery-server
     - spring-petclinic-vets-service
     - spring-petclinic-visits-service
   ```

1. 若要檢視已部署的 PetClinic 範例應用程式，請執行下列命令來查找 URL：

   ```
   kubectl get ingress
   ```

### 步驟 4：監控範例應用程式
<a name="CloudWatch-Application-Signals-Enable-EKS-sample-monitor"></a>

完成上一節中建立 Amazon EKS 叢集和部署範例應用程式的步驟後，可以使用 Application Signals 來監控應用程式。

**注意**  
若要讓 Application Signals 主控台開始填入，一些流量必須到達範例應用程式。先前的部分步驟建立了 CloudWatch Synthetics canary，可產生範例應用程式的流量。

#### 服務運作狀態監控
<a name="CloudWatch-Application-Signals-Enable-EKS-sample-monitor-service"></a>

啟用之後，CloudWatch Application Signals 會自動探索並填入服務清單，而不需要任何其他設定。

**若要檢視探索到的服務清單並監控其運作狀態**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，依次選擇 **Application Signals**、**服務**。

1. 若要檢視服務、其操作及其相依性，請在清單中選擇其中一個服務的名稱。

   這個以應用程式為中心的統一檢視有助於全面了解使用者如何與您的服務互動。如果發生效能異常，這可協助您分類問題。如需有關**服務**檢視的完整詳細資訊，請參閱 [使用 Application Signals 監控應用程式的運作狀態](Services.md)。

1. 選擇**服務操作**索引標簽，即可查看該服務操作的標準應用程式指標。例如，操作就是服務呼叫的 API 操作。

   然後，若要檢視該服務的單個操作的圖表，請選擇該操作名稱。

1. 選擇**相依性**索引標簽，查看應用程式具有的相依性，以及每個相依性的重要應用程式指標。相依性包括應用程式呼叫 AWS 的服務和第三方服務。

1. 若要從服務詳細資訊頁面中檢視相關追蹤，請在表格上方的三個圖表之一中選擇一個資料點。這會使用時間週期中篩選的追蹤填入新窗格。系統會根據您選擇的圖表對這些追蹤進行排序和篩選。例如，如果選擇**延遲**圖表，則會按照服務回應時間對追蹤排序。

1. 在 CloudWatch 主控台導覽窗格中，選擇 **SLO**。您會看到指令碼為範例應用程式建立的 SLO。如需 SLO 的詳細資訊，請參閱 [服務水準目標 (SLO)](CloudWatch-ServiceLevelObjectives.md)。

### (選用) 步驟 5：清除
<a name="CloudWatch-Application-Signals-Enable-EKS-sample-cleanup"></a>

完成測試 Application Signals 後，可以使用 Amazon 提供的指令碼來清除和刪除帳戶中為範例應用程式建立的成品。若要執行清除，請輸入下列命令。以您為範例應用程式建立的叢集名稱取代 *new-cluster-name*，並以 AWS 區域名稱取代 *region*-name，例如 `us-west-1`。

```
cd application-signals-demo/scripts/eks/appsignals/one-step && ./cleanup.sh new-cluster-name region-name
```