本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
啟用 CloudWatch Application Signals
使用 CloudWatch Application Signals 自動檢測您的應用程式, AWS 以便您可以根據業務目標追蹤應用程式效能。Application Signals 為您提供 Java 應用程式、其相依性及其優勢的統一、以應用程式為中心的檢視。如需詳細資訊,請參閱Application Signals。
CloudWatch Application Signals 利用 CloudWatch 代理程式從自動檢測的應用程式中接收指標和追蹤,選擇性地套用規則以降低高基數,然後將處理過的遙測資料發佈到 CloudWatch。可以使用代理程式組態檔案,為 CloudWatch 代理程式提供專門針對 Application Signals 的自訂組態。首先,代理程式組態檔案的 logs
區段內的 metrics_collected
區段下方會顯示 application_signals
區段,指定 CloudWatch 代理程式將從您的自動檢測應用程式中接收指標。同樣,代理程式組態檔案的 traces
區段內的 traces_collected
區段下方會顯示 application_signals
區段,指定 CloudWatch 代理程式可從您的自動檢測應用程式中接收追蹤。此外,您可以選擇性地傳遞自訂組態規則,以減少發佈本節所述的高基數遙測。
對於 Amazon EKS 叢集,當您安裝 Amazon CloudWatch Observability EKS 附加元件時,預設會啟用 CloudWatch 代理程式,以便從您的自動檢測應用程式中接收指標和追蹤。如果您想要選擇性地傳遞自訂組態規則,可以在建立或使用其他組態更新 Amazon EKS 附加元件時,在自訂代理程式組態中傳遞至該附加元件來實現,如 (選用) 額外組態 中所述。
對於包括 Amazon EC2 在內的其他支援平台,必須使用代理程式組態來啟動 CloudWatch 代理程式,它可透過指定
application_signals
區段以及本節稍後所述的任何自訂組態規則來啟用 Application Signals。
以下是 CloudWatch 代理程式組態檔案中與 CloudWatch Application Signals 相關的欄位概觀。
logs
-
metrics_collected
– 此欄位包含若干區段,用於指定代理程式來收集日誌,以啟用 CloudWatch Application Signals 和 Container Insights 等使用案例,它們具有 Amazon EKS 的增強可觀測性。注意
之前,此區段也用於指定代理程式來收集採用內嵌指標格式的日誌。不再需要這些設定。
application_signals
(選用) 指定您要啟用 CloudWatch Application Signals,以便從自動檢測的應用程式中接收指標,從而提升 CloudWatch Application Signals。rules
(選用) 規則陣列,用於有條件地選取指標和追蹤,並套用動作以處理高基數案例。每個規則可以包含下列欄位:rule_name
(選用) 規則的名稱。selectors
(選用) 一組指標和追蹤維度比對器。每個選取器都必須提供下列欄位:dimension
如果selectors
不為空,則為必填欄位。這會指定要用作篩選條件的指標和追蹤維度。match
如果selectors
不為空,則為必填欄位。用於比對指定的維度值的萬用字元模式。
action
(選用) 要套用至符合指定選取器之指標和追蹤的動作。action
的值必須是下列其中一個關鍵字:keep
指定僅將指標和追蹤傳送至 CloudWatch (如果與selectors
相符)。drop
指定丟棄與selectors
相符的指標和追蹤。replace
指定取代與selectors
相符的指標和追蹤維度。它們根據replacements
部分進行取代。
replacements
在action
為replace
時需要。當action
為replace
時,維度和值對陣列將套用至符合指定selectors
的指標和追蹤。每個取代都必須提供下列欄位:target_dimension
如果replacements
不為空,則為必填欄位。指定需要取代的維度。value
如果replacements
不為空,則為必填欄位。用來取代target_dimension
原始值的值。
limiter
(選用) 使用本節來限制 Application Signals 傳送至 CloudWatch 的指標和維度,以最佳化您的成本。disabled
(選用) 如果true
,則會停用指標限制功能。預設為false
。drop_threshold
(選用) 一個 CloudWatch 代理程式可在一個輪換間隔內匯出的每個服務的不同指標數量上限。預設值為 500。rotation_interval
(選用) 限制器為差異計數重設指標記錄的間隔。這表示為字串,具有數字序列和單位尾碼。支援分數。支援的單位字尾為s
、m
、h
、us
、ms
和ns
預設值為
1h
一小時。log_dropped_metrics
(選用) 指定代理程式是否應在捨棄 Application Signals 指標時將日誌寫入 CloudWatch 代理程式日誌。預設值為false
。注意
若要啟用此記錄,
agent
區段中的debug
參數也必須設定為true
。
-
traces
-
traces_collected
application_signals
選用。指定此選項可讓 CloudWatch 代理程式從您的自動檢測應用程式中接收追蹤,以便提升 CloudWatch Application Signals。
-
注意
即使在 logs
區段中所包含的 metrics_collected
區段下指定自訂 application_signals
規則,它們也會隱式地套用至 traces_collected
區段。相同的規則集將套用至指標和追蹤。
當有多個具有不同動作的規則時,它們會依照下列順序套用:keep
、drop
、然後 replace
。
以下是套用自訂規則的完整 CloudWatch 代理程式組態檔案範例。
{ "logs": { "metrics_collected": { "application_signals": { "rules": [ { "rule_name": "keep01", "selectors": [ { "dimension": "Service", "match": "pet-clinic-frontend" }, { "dimension": "RemoteService", "match": "customers-service" } ], "action": "keep" }, { "rule_name": "drop01", "selectors": [ { "dimension": "Operation", "match": "GET /api/customer/owners/*" } ], "action": "drop" }, { "rule_name": "replace01", "selectors": [ { "dimension": "Operation", "match": "PUT /api/customer/owners/*/pets/*" }, { "dimension": "RemoteOperation", "match": "PUT /owners" } ], "replacements": [ { "target_dimension": "Operation", "value": "PUT /api/customer/owners/{ownerId}/pets{petId}" } ], "action": "replace" } ] } } }, "traces": { "traces_collected": { "application_signals": {} } } }
對於上一個範例組態檔案,rules
會按如下方式處理:
規則
keep01
可確保維度Service
為pet-clinic-frontend
和維度RemoteService
為customers-service
的任何指標和追蹤被保留。對於套用
keep01
後已處理的指標和追蹤,drop01
規則可確保捨棄維度Operation
為GET /api/customer/owners/*
的指標和追蹤。對於套用
drop01
後已處理的指標和追蹤,replace01
規則會更新維度Operation
為PUT /api/customer/owners/*/pets/*
和維度RemoteOperation
為PUT /owners
的指標和追蹤,而它們的Operation
維度現在會被取代為PUT /api/customer/owners/{ownerId}/pets{petId}
。
以下是 CloudWatch 組態檔案的完整範例,可透過將指標限制變更為 100、啟用捨棄指標的記錄,以及將輪換間隔設定為兩小時,來管理 Application Signals 中的基數。
{ "logs": { "metrics_collected": { "application_signals": { "limiter": { "disabled": false, "drop_threshold": 100, "rotation_interval": "2h", "log_dropped_metrics": true } } }, "traces": { "traces_collected": { "application_signals": {} } } } }