

# OPS04-BP01 實作應用程式遙測
<a name="ops_telemetry_application_telemetry"></a>

 應用程式遙是工作負載可觀察性的基礎。您的應用程式應該發出遙測，讓您洞悉應用程式的狀態和業務成果的成就。從疑難排解到衡量新功能的影響，應用程式遙測可告知您建置、操作和發展工作負載的方式。 

 應用程式遙測由指標和日誌組成。指標是診斷資訊，就如您的脈搏或體溫。指標是共同用來描述應用程式的狀態。隨時間收集指標可以用來開發基準和偵測異常。日誌是應用程式傳送的訊息，其中關於內部狀態或發生的事件。錯誤碼、交易識別碼和使用者動作都是所記錄事件的範例。 

 **預期成果：** 
+  您的應用程式會發出指標和日誌，讓您洞悉其運作狀態和業務成果的成就。 
+  所有應用程式的指標和日誌會集中儲存在工作負載中。 

 **常用的反模式：** 
+  您的應用程式不會發出遙測。當發生錯誤時，您必須仰賴客戶來告知您。 
+  客戶已回報，您的應用程式沒有回應。不親自使用應用程式來了解目前的使用者體驗，您便沒有遙測功能，且無法確認問題存在或描述問題特性。 

 **建立此最佳實務的優勢：** 
+  您可以了解應用程式的運作狀態、使用者體驗，以及業務成果的成就。 
+  您可以快速反映應用程式運作狀態中的變更。 
+  您可以開發應用程式運作狀態趨勢。 
+  您可以做出明智的決策，改善您的應用程式。 
+  您可以更快地偵測並解決應用程式問題。 

 **若未建立此最佳實務，暴露的風險等級為：** 高 

## 實作指引
<a name="implementation-guidance"></a>

 實作應用程式遙測包含三個步驟：識別儲存遙測的位置、識別描述應用程式狀態的遙測，以及檢測要發出遙測的應用程式。 

 舉例來說，商務公司具有以微型服務為基礎的架構。作為架構設計程序的一部分，他們識別了應用程序遙測，而其會協助他們了解每個微型服務的狀態。例如，使用者購物車服務已發出遙測，其中包括關於新增到購物車、放棄購物車，以及將商品新增到購物車所需時間長度等事件。所有微型服務都會記錄錯誤、警告和交易資訊。遙測會傳送至 Amazon CloudWatch 進行儲存和分析。 

 **實作步驟** 

 第一步是針對工作負載中的應用程式識別儲存遙測的中心位置。如果您沒有現有的平台， [Amazon CloudWatch](https://aws.amazon.com/cloudwatch) 會提供遙測收集、儀表板、分析和事件產生功能。 

 若要識別您需要的遙測，請參考下列問題： 
+  我的應用程式的運作狀態是否良好？ 
+  我的應用程式是否實現了業務成果？ 

   您的應用程式應該發出日誌和指標，並共同回答這些問題。如果您無法使用現有的應用程式遙測來回答這些問題，請與商務和工程利害關係人合作，以建立可以回答這些問題的遙測清單。當識別並開發新的應用程式遙測時，您可以向 AWS 帳戶 團隊要求專家技術建議。 

   一旦識別了其他應用程式遙測，請與您的工程利害關係人合作，以檢測您的應用程式。 [適用於 Open Telemetry 的 AWS Distro](https://aws-otel.github.io/) 提供 API、程式庫和代理程式，收集應用程式遙測。 [此範例示範如何使用自訂指標檢測 JavaScript 應用程式。](https://aws-otel.github.io/docs/getting-started/js-sdk/metric-manual-instr)。 

   客戶若想要了解 AWS 提供的可觀察性服務，可以透過自己的 [一個觀察工作坊](https://catalog.workshops.aws/observability/en-US) 來運作或向其 AWS 帳戶 團隊要求支援來指引他們。此工作坊會透過 AWS 的可觀察性解決方案指引您，並提供如何使用它們的實際操作範例。 

   如需更深入探討應用程式遙測，請閱讀 Amazon Builder’s Library 中的 [偵測分散式系統，以了解運作狀態](https://aws.amazon.com/builders-library/instrumenting-distributed-systems-for-operational-visibility/) 一文。它會說明 Amazon 如何檢測應用程式，以及如何指引您開發自己的檢測指導方針。 

 **實作計劃的工作量：** 中 

## 資源
<a name="resources"></a>

 **相關的最佳實務：** 

[OPS04-BP02 實作和設定工作負載遙測](ops_telemetry_workload_telemetry.md) – 應用程式遙測是工作負載遙測的元件。若要了解整體工作負載的運作狀態，您必須了解構成工作負載之個別應用程式的運作狀態。

[OPS04-BP03 實作使用者活動遙測](ops_telemetry_customer_telemetry.md) – 使用者活動遙測通常是應用程式遙測的子集。新增至購物車事件、點擊流或已完成交易等使用者活動，可讓您洞悉使用者體驗。

[OPS04-BP04 實作相依性遙測](ops_telemetry_dependency_telemetry.md) – 相依性與應用程式遙測相關，而且可能會配備至您的應用程式。如果您的應用程式依賴 DNS 或資料庫等外部相依性，您的應用程式可以發出有關連線能力、逾時和其他事件的指標和日誌。

[OPS04-BP05 實作交易可追溯性](ops_telemetry_dist_trace.md) – 跨工作負載追蹤交易需要每個應用程式發出其如何處理共用事件的相關資訊。個別應用程式處理這些事件的方式是透過其應用程式遙測發出的。

[OPS08-BP02 定義工作負載指標](ops_workload_health_design_workload_metrics.md) – 工作負載遙測是工作負載的重要運作狀態指標。重要應用程式指標是工作負載指標的一部分。

 **相關文件：** 
+  [AWS Builders' Library – 偵測分散式系統，以瞭解運作狀態](https://aws.amazon.com/builders-library/instrumenting-distributed-systems-for-operational-visibility/) 
+  [適用於 OpenTelemetry 的 AWS Distro](https://aws-otel.github.io/) 
+  [AWS Well-Architected 卓越營運支柱白皮書 – 設計遙測](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/design-telemetry.html) 
+  [使用篩選條件從日誌事件建立指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) 
+  [使用 Amazon CloudWatch 實作記錄和監控](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html) 
+  [使用適用於 OpenTelemetry 的 AWS Distro 監控應用程式運作狀態和效能](https://aws.amazon.com/blogs/opensource/monitoring-application-health-and-performance-with-aws-distro-for-opentelemetry/) 
+  [新增功能 – 如何使用 Amazon CloudWatch Agent 更好地監控自訂應用程式指標](https://aws.amazon.com/blogs/devops/new-how-to-better-monitor-your-custom-application-metrics-using-amazon-cloudwatch-agent/) 
+  [AWS 的可觀測性](https://aws.amazon.com/products/management-and-governance/use-cases/monitoring-and-observability/) 
+  [案例 – 將指標發佈至 CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/PublishMetrics.html) 
+  [開始建置 – 如何有效率地監控您的應用程式](https://aws.amazon.com/startups/start-building/how-to-monitor-applications/) 
+  [使用 CloudWatch 搭配 AWS SDK](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/sdk-general-information-section.html) 

 **相關影片：** 
+  [AWS re:Invent 2021 - 可觀察性開放原始碼方式](https://www.youtube.com/watch?v=vAnIhIwE5hY) 
+  [使用 CloudWatch Agent 從 Amazon EC2 執行個體收集指標和日誌](https://www.youtube.com/watch?v=vAnIhIwE5hY) 
+  [如何輕鬆地為您的 AWS 工作負載設定應用程式監控 - AWS 線上技術會談](https://www.youtube.com/watch?v=LKCth30RqnA) 
+  [精通無伺服器應用程式的可觀察性 - AWS 線上技術會談](https://www.youtube.com/watch?v=CtsiXhiAUq8) 
+  [搭配 AWS 的開放原始碼可觀察性 - AWS 虛擬研討會](https://www.youtube.com/watch?v=vAnIhIwE5hY) 

 **相關範例：** 
+  [AWS 記錄和監控範例資源](https://github.com/aws-samples/logging-monitoring-apg-guide-examples) 
+  [AWS 解決方案：Amazon CloudWatch 監控架構](https://aws.amazon.com/solutions/implementations/amazon-cloudwatch-monitoring-framework/?did=sl_card&trk=sl_card) 
+  [AWS 解決方案︰集中式記錄](https://aws.amazon.com/solutions/implementations/centralized-logging/) 
+  [一個觀察工作坊](https://catalog.workshops.aws/observability/en-US) 