

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

# 應用程式層級 CloudWatch 組態
<a name="application-level-configuration"></a>

應用程式日誌和指標是由執行中的應用程式產生，且特定於應用程式。請確定您定義了充分監控組織定期使用之應用程式所需的日誌和指標。例如，您的組織在適用於 Web 應用程式的 Microsoft Internet Information Server (IIS) 上可能已標準化。您可以為 IIS 建立標準日誌和指標 CloudWatch 組態，該組態也可用於您的組織。應用程式特定的組態檔案可以存放在集中位置 （例如 S3 儲存貯體），並由工作負載擁有者或透過自動擷取存取，並複製到 CloudWatch 組態目錄。CloudWatch 代理程式會自動將每個 EC2 執行個體或伺服器的組態檔案目錄中找到的 CloudWatch 組態檔案合併為複合 CloudWatch 組態。最終結果是包含組織標準系統層級組態的 CloudWatch 組態，以及所有相關的應用程式層級 CloudWatch 組態。

工作負載擁有者應識別和設定所有關鍵應用程式和元件的日誌檔案和指標。

## 設定應用程式層級日誌
<a name="application-logs-configuration"></a>

應用程式層級記錄會根據應用程式是商用off-the-shelf(COTS) 還是自訂開發的應用程式而有所不同。COTS 應用程式及其元件可能會為日誌組態和輸出提供數個選項，例如日誌詳細資訊層級、日誌檔案格式和日誌檔案位置。不過，大多數 COTS 或第三方應用程式不允許您從根本上變更記錄 （例如，更新應用程式的程式碼以包含無法設定的其他日誌陳述式或格式）。您至少應該為 COTS 或第三方應用程式設定記錄選項，以記錄警告和錯誤層級資訊，最好是 JSON 格式。

您可以在 CloudWatch 組態中包含應用程式的日誌檔案，將自訂開發的應用程式與 CloudWatch Logs 整合。自訂應用程式提供更好的日誌品質和控制，因為除了包含任何其他必要的詳細資訊之外，您還可以自訂日誌輸出格式、分類和分隔元件輸出以分隔日誌檔案。請務必檢閱並標準化記錄程式庫，以及組織所需的資料和格式，以便更輕鬆地分析和處理。

您也可以使用 CloudWatch Logs `[PutLogEvents](https://docs.aws.amazon.com//AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html)` API 呼叫或使用 AWS SDK 寫入 CloudWatch 日誌串流。您可以使用 API 或 SDK 進行自訂記錄需求，例如協調跨分散式元件和伺服器的單一日誌串流記錄。不過，維護最簡單且最廣泛適用的解決方案是設定您的應用程式寫入日誌檔案，然後使用 CloudWatch 代理程式讀取日誌檔案並將其串流至 CloudWatch。

您也應該考慮要從應用程式日誌檔案測量的指標類型。您可以使用指標篩選條件來測量、繪製和警示 CloudWatch 日誌群組中的此資料。例如，您可以使用指標篩選條件，透過在日誌中識別失敗的登入嘗試來計算這些嘗試。

您也可以在應用程式日誌檔案中使用 [https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html)。

## 設定應用程式層級指標
<a name="application-metrics"></a>

自訂指標是由 AWS 服務直接提供給 CloudWatch 的指標，它們會在 CloudWatch 指標的自訂命名空間中發佈。所有應用程式指標都視為自訂 CloudWatch 指標。應用程式指標可能符合 EC2 執行個體、應用程式元件、API 呼叫，甚至是商業函數。您還必須考慮您為指標選擇的維度的重要性和基數。具有高基數的維度會產生大量自訂指標，並可能增加您的 CloudWatch 成本。

CloudWatch 可協助您以多種方式擷取應用程式層級指標，包括下列項目：
+ 透過定義您要從 [ procstat 外掛程式](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-procstat-process-metrics.html)擷取的個別程序，來擷取程序層級指標。
+ 應用程式會將指標發佈至 Windows Performance Monitor，此指標會在 CloudWatch 組態中定義。
+ 指標篩選條件和模式會套用到 CloudWatch 中的應用程式日誌。
+ 應用程式會使用 CloudWatch 內嵌指標格式寫入 CloudWatch 日誌。
+ 應用程式會透過 API 或 AWS SDK 將指標傳送至 CloudWatch。
+ 應用程式會使用設定的 CloudWatch 代理程式，將指標傳送至[已收集](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-collectd.html)或 [StatsD](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-statsd.html) 協助程式。

您可以使用 procstat 來監控和測量 CloudWatch 代理程式的關鍵應用程式程序。這可協助您在應用程式不再執行關鍵程序時發出警示並採取動作 （例如，通知或重新啟動程序）。您也可以測量應用程式程序的效能特性，並在特定程序運作異常時發出警示。

如果您無法使用其他自訂指標更新 COTS 應用程式，Procstat 監控也很有用。例如，您可以建立測量 `my_process` `cpu_time`並包含自訂`application_version`維度的指標。如果您的不同指標有不同的維度，您也可以為應用程式使用多個 CloudWatch 代理程式組態檔案。

如果您的應用程式在 Windows 上執行，您應該評估應用程式是否已將指標發佈至 Windows Performance Monitor。許多 COTS 應用程式與 Windows Performance Monitor 整合，可協助您輕鬆監控應用程式指標。CloudWatch 也與 Windows Performance Monitor 整合，您可以擷取其中現有的任何指標。

請務必檢閱應用程式提供的記錄格式和日誌資訊，以判斷可以使用指標篩選條件擷取哪些指標。您可以檢閱應用程式的歷史日誌，以判斷錯誤訊息和異常關機的呈現方式。您也應該檢閱先前報告的問題，以判斷是否可以擷取指標，以防止問題重複發生。您也應該檢閱應用程式的文件，並要求應用程式開發人員確認如何識別錯誤訊息。

對於自訂開發的應用程式，請與應用程式的開發人員合作，定義可使用 CloudWatch 內嵌指標格式、 AWS SDK 或 AWS API 實作的重要指標。建議的方法為使用內嵌指標格式。您可以使用 AWS 提供的開放原始碼內嵌指標格式程式庫，協助您以所需的格式撰寫陳述式。您也需要更新[應用程式特定的 CloudWatch 組態](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Generation_CloudWatch_Agent.html)，以包含內嵌指標格式代理程式。這會導致 EC2 執行個體上執行的代理程式充當本機內嵌指標格式端點，將內嵌指標格式指標傳送至 CloudWatch。

如果您的應用程式已支援將指標發佈至收集或統計，您可以利用它們將指標擷取至 CloudWatch。