本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用內嵌指標格式發佈自訂指標
使用 Amazon CloudWatch 內嵌指標格式 (EMF),您可以從 AWS Lambda Web 函數發佈自己的指標,例如下單、快取命中率或付款延遲。您的應用程式會將結構化 JSON 物件寫入其日誌,CloudWatch 會從中擷取指標。使用自訂指標來追蹤應用程式的功能。Lambda 發佈的指標僅描述請求結果和資源用量。
您也可以直接呼叫 CloudWatch PutMetricData API 來發佈自訂指標,但我們建議 EMF for Web Functions:
-
沒有新增的請求延遲 – 您的應用程式不會在提供 HTTP 回應的路徑上呼叫 CloudWatch API。
-
沒有額外的許可 – 您不需要
cloudwatch:PutMetricData許可。EMF 使用與執行角色已經需要的日誌相同的 Amazon CloudWatch Logs 許可。 -
使用日誌集中化 – 由於 EMF 指標會與您的日誌一起傳輸,因此主要區域具有端點提供的每個區域的值。您發佈的指標只會
PutMetricData出現在您呼叫它的區域中。
EMF 如何與 Web 函數搭配使用
EMF 指標會透過下列步驟從您的應用程式傳送至 CloudWatch:
-
您的應用程式會直接將 EMF 格式的 JSON 物件寫入標準輸出,後面接著換行。
-
Lambda 會在請求執行的區域中將其擷取為日誌事件,並將其集中到首頁 AWS 區域,與任何其他日誌輸出相同。如需詳細資訊,請參閱Amazon CloudWatch Logs 中的 Web 函數日誌。
-
CloudWatch 從請求執行的區域中的物件擷取指標,Lambda 會將指標複寫到主要區域。指標會出現在您在 物件中指定的命名空間中。在主要區域中,指標包含端點提供的每個區域中的值。
您的自訂指標會顯示在您自己的命名空間中,而不是在 中AWS/Lambda/Web。該命名空間保留給 Lambda 發佈的指標。
發佈自訂指標
下列Node.js範例會在 MyWebApp 命名空間下方發佈具有 PaymentProvider維度的 CheckoutLatency 指標和 OrdersPlaced 指標。它會使用 寫入 EMF 物件process.stdout.write。請勿將 EMF 物件傳遞至 console方法。Lambda 會在自己的 JSON 日誌事件中包裝console輸出,而 CloudWatch 不會從包裝的物件擷取指標。
function publishCheckoutMetrics(provider, latencyMs, orders) { process.stdout.write(JSON.stringify({ _aws: { Timestamp: Date.now(), CloudWatchMetrics: [ { Namespace: 'MyWebApp', Dimensions: [['PaymentProvider']], Metrics: [ { Name: 'CheckoutLatency', Unit: 'Milliseconds' }, { Name: 'OrdersPlaced', Unit: 'Count' } ] } ] }, PaymentProvider: provider, CheckoutLatency: latencyMs, OrdersPlaced: orders, // Fields outside the metric definitions are kept as searchable log context. requestPath: '/checkout' }) + '\n'); }
您可以使用 EMF 用戶端程式庫,例如 GitHub 網站上的 aws-embedded-metrics,Node.jsconsole或 CloudWatch 代理程式。
請注意欄位在 EMF 物件中扮演的三個角色:
-
在 中命名的欄位
Metrics會成為 CloudWatch 指標。 -
在 中命名的欄位
Dimensions會變成指標維度。將不同維度值的數量保持在低。每個組合都會建立個別的指標。 -
任何其他欄位都會保留在日誌事件中,做為您可以使用 Amazon CloudWatch Logs Insights 查詢的內容,但不會建立指標。
刻意使用最後一個屬性:將請求 ID 或客戶 ID 等高基數值附加為純欄位而非維度,因此您可以在 Logs Insights 中找到特定請求,而不會乘以指標計數。
自訂指標的帳單
EMF 會產生日誌擷取和自訂指標費用。日誌事件會以 Amazon CloudWatch Logs 價格計費,而擷取的指標會以 CloudWatch 自訂指標計費。日誌事件的第一個集中化是免費的。CloudWatch 會在執行請求的區域中擷取 EMF 指標,而 Lambda 會將它們複寫到主要區域,因此在主要區域外提供的請求會在兩個區域中產生自訂指標。
日誌磁碟區、指標數量和不同維度組合的數量會影響成本。以您將在 或 圖形上發出警示的精細程度發佈指標,並避免高基數維度。
如需目前價格,請參閱 Amazon CloudWatch 定價