本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
手動建立或編輯 CloudWatch 代理程式組態檔案
CloudWatch 代理程式組態檔案是包含四個區段JSON的檔案:agent
、logs
、 metrics
和 traces
。
-
agent
區段包括代理程式整體組態的各個欄位。 -
metrics
本節指定收集和發佈至 的自訂指標 CloudWatch。如果您僅使用代理程式來收集日誌,您可以省略檔案中的metrics
區段。 -
logs
本節指定要發佈至 Logs 的 CloudWatch 日誌檔案。如果伺服器執行 Windows Server,這部分可以包含來自 Windows 事件記錄的事件。 -
traces
區段會指定收集並傳送至 的追蹤來源 AWS X-Ray。
本節說明 CloudWatch 代理程式組態檔案的結構和欄位。您可以檢視此組態檔案的結構描述定義。結構描述定義位於 Linux 伺服器上
的 和執行 Windows Server 的伺服器上installation-directory
/doc/amazon-cloudwatch-agent-schema.json
的 。installation-directory
/amazon-cloudwatch-agent-schema.json
如果您手動建立或編輯 代理程式組態檔案,您可以給予它任何名稱。若要簡化故障診斷,我們建議您在 Linux 伺服器上將它命名為 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
,且在執行 Windows Server 的伺服器上將它命名為 $Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json
。在您建立檔案後,您可以將此檔案複製到其他您希望安裝代理程式的伺服器。
注意
CloudWatch 客服人員收集的指標、日誌和追蹤會產生費用。如需定價的詳細資訊,請參閱 Amazon CloudWatch Pricing
agent
區段可以包含下列欄位。精靈不會建立 agent
區段。反之,精靈會省略它並在此區段的所有欄位中使用預設值。
-
metrics_collection_interval
– 選用。指定此組態檔案中指定的所有指標的收集頻率。您可以針對特定指標類型覆寫此值。此值是以秒數指定。例如,指定每隔 10 秒收集 10 個原因指標,也就是將其設定為每 5 分鐘收集 300 個指定指標。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊,請參閱 高解析度指標。
預設值為 60。
-
region
– 指定在監控 Amazon EC2執行個體時用於 CloudWatch 端點的區域。收集的指標會傳送到這個區域,例如us-west-1
。如果您省略此欄位,客服人員會將指標傳送至 Amazon EC2執行個體所在的區域。如果您要監控現場部署伺服器,將不會使用此欄位;代理程式會從 AWS 組態檔案的
AmazonCloudWatchAgent
描述檔中讀取區域。 -
credentials
– 指定將指標、日誌和追蹤傳送到不同 AWS 帳戶時要使用IAM的角色。若有指定,這個欄位會有一個role_arn
參數。-
role_arn
– 指定角色的 Amazon Resource Name (ARN),IAM以便在將指標、日誌和追蹤傳送到不同 AWS 帳戶時用於身分驗證。如需詳細資訊,請參閱將指標、日誌和追蹤傳送到不同帳戶。
-
-
debug
– 選用。指定執行具有偵錯日誌訊息的 CloudWatch 代理程式。預設值為false
。 -
aws_sdk_log_level
– 選用。僅支援 1.247350.0 版及更新版本的 CloudWatch 代理程式。您可以指定此欄位,讓客服人員為 AWS SDK端點執行記錄。此欄位的值可包含下列選項中的一或多項。如有多個選項,請使用
|
字元進行分隔。LogDebug
LogDebugWithSigning
LogDebugWithHTTPBody
LogDebugRequestRetries
LogDebugWithEventStreamBody
如需這些選項的詳細資訊,請參閱 LogLevelType。
-
logfile
– 指定 CloudWatch 客服人員寫入日誌訊息的位置。如果您指定空白字串、日誌將移至 stderr。如果您未指定此選項,預設位置如下:-
Linux:
/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
-
Windows Server:
c:\\ProgramData\\Amazon\\CloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log
CloudWatch 客服人員會自動輪換其建立的日誌檔案。日誌檔案大小達到 100 MB 時即輪換。代理最多保留 7 天輪換的日誌檔,而且最多保留五個已輪換的備份日誌檔。備份日誌檔案的檔案名稱會附加時間戳記。時間戳記會顯示檔案輪換的日期和時間:例如,
amazon-cloudwatch-agent-2018-06-08T21-01-50.247.log.gz
。 -
-
omit_hostname
– 選用。根據預設,主機名稱會發佈為代理收集的指標維度,除非您使用metrics
區段中的append_dimensions
欄位。將omit_hostname
設定為true
,以防止主機名稱發佈為維度,即使您並未使用append_dimensions
。預設值為false
。 -
run_as_user
– 選用。指定要用來執行 CloudWatch 代理程式的使用者。如果不指定此參數,則會使用根使用者。此選項只適用於 Linux 伺服器。如果您指定此選項,使用者必須先存在,才能啟動 CloudWatch 代理程式。如需詳細資訊,請參閱以不同的使用者執行 CloudWatch 代理程式。
-
user_agent
– 選用。指定 CloudWatch 代理程式API呼叫 CloudWatch 後端時所使用的user-agent
字串。預設值是由代理程式版本、用來編譯代理程式的 Go 程式設計語言版本、執行時間作業系統和架構、建置時間以及啟用的外掛程式組成的字串。 -
usage_data
- 選用。根據預設, CloudWatch 代理程式會在發佈指標或日誌到 CloudWatch 時,將本身的運作狀態和效能資料傳送至 CloudWatch。此資料不會產生任何費用。您可以針對usage_data
指定false
,防止代理程式傳送此資料。如果您省略此參數,會使用預設值true
,且代理程式會傳送運作狀態和效能資料。如果將此值設定為
false
,必須停止並重新啟動代理程式,設定才會生效。
以下是 agent
區段的範例。
"agent": { "metrics_collection_interval": 60, "region": "us-west-1", "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "debug": false, "run_as_user": "cwagent" }
Linux 和 Windows 常用的欄位
在執行 Linux 或 Windows Server 的伺服器上,metrics
區段包含下列欄位:
-
namespace
– 選用。用於代理程式所收集指標的命名空間。預設值為CWAgent
。長度上限為 255 個字元。以下是範例:{ "metrics": { "namespace": "Development/Product1Metrics", ...... }, }
-
append_dimensions
– 選用。將 Amazon EC2 指標維度新增至客服人員收集的所有指標。這也會導致代理程式無法將主機名稱發佈為維度。下列清單顯示了
append_dimensions
的唯一支援的鍵/值對。其他鍵/值對會被忽略。代理程式支援這些鍵值組,如以下清單中所示。您無法變更鍵值,為其發布其他維度名稱。"ImageId":"${aws:ImageId}"
會將執行個體的 AMI ID 設定為ImageId
維度的值。"InstanceId":"${aws:InstanceId}"
會將執行個體的執行個體 ID 設定為InstanceId
維度的值。"InstanceType":"${aws:InstanceType}"
會將執行個體的執行個體類型設定為InstanceType
維度的值。"AutoScalingGroupName":"${aws:AutoScalingGroupName}"
會將執行個體的 Auto Scaling 群組名稱設定為AutoScalingGroupName
維度的值。
欲將維度以任意鍵/值對附加至指標中,請針對該類型指標,在此欄位中使用
append_dimensions
參數。如果您指定的值取決於 Amazon EC2中繼資料,且您使用代理,則必須確保伺服器可以存取 Amazon 的端點EC2。如需這些端點的詳細資訊,請參閱 中的 Amazon Elastic Compute Cloud (Amazon EC2)Amazon Web Services 一般參考。
-
aggregation_dimensions
– 選用。指定彙整所收集指標的維度。例如,如果您彙整AutoScalingGroupName
維度上的指標,來自各 Auto Scaling 群組的所有執行個體的指標將會彙總並可整體檢視。您可以彙整一或多個維度的指標。例如,為單一執行個體 ID、單一執行個體類型及兩個維度組合指定
[["InstanceId"], ["InstanceType"], ["InstanceId","InstanceType"]]
彙總指標。您也可以指定
[]
將所有指標彙整至一個集合,無視所有維度。 -
endpoint_override
– 指定FIPS要用作代理程式傳送指標的端點的端點或私有連結。指定此選項並設定私有連結可讓您將指標傳送至 Amazon VPC端點。如需詳細資訊,請參閱什麼是 AmazonVPC?。的值
endpoint_override
必須是 的字串URL。例如,組態檔案的下列指標部分會將代理程式設定為在傳送指標時使用VPC端點。
{ "metrics": { "endpoint_override": "vpce-XXXXXXXXXXXXXXXXXXXXXXXXX.monitoring.us-east-1.vpce.amazonaws.com", ...... }, }
-
metrics_collected
– 必要。指定要收集哪些指標,包括要透過StatsD
或collectd
收集的自訂指標。此區段包含數個子區段。metrics_collected
區段的內容取決於此組態檔案適用於執行 Linux 或 Windows Server 的伺服器。 -
force_flush_interval
– 指定指標在傳送到伺服器之前停留在記憶體緩衝區內的最長時間 (以秒為單位)。不論此欄位的設定如何,如果緩衝區中的指標大小達到 1 MB 或有 1000 個不同的指標,系統便會立即將指標傳送到伺服器。預設值為 60。
-
credentials
– 指定將指標傳送至不同帳戶時要使用IAM的角色。若有指定,這個欄位會有一個role_arn
參數。-
role_arn
– 指定將指標傳送至不同帳戶時,要用於身分驗證IAM的角色ARN的 。如需詳細資訊,請參閱將指標、日誌和追蹤傳送到不同帳戶。若在此處指定,此值會覆寫組態檔案中agent
區段指定的role_arn
(若有的話)。
-
Linux 區段
在執行 Linux 的伺服器上,組態檔案的 metrics_collected
區段也可以包含下列欄位。
其中的許多欄位可包含 measurement
區段,列出您想要對該資源收集的指標。這些 measurement
區段可以指定完整的指標名稱 (例如 swap_used
),或只在部分指標名稱中附加資源的類型。例如,在 diskio
的 measurement
區段中指定 reads
導致收集 diskio_reads
指標。
-
collectd
– 選用。指定您想要使用collectd
通訊協定來擷取自訂指標。您可以使用collectd
軟體將指標傳送給 CloudWatch 客服人員。如需有關 collectd 可用組態選項的詳細資訊,請參閱 使用 collectd 擷取自訂指標。 -
cpu
– 選用。指定要收集的CPU指標。此區段僅適用於 Linux 執行個體。您必須包含至少一個resources
和totalcpu
欄位,才能收集任何CPU指標。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
resources
- 選用。請以值*
指定此欄位,以便收集 per-cpu 指標。唯一允許的值為:*
。 -
totalcpu
– 選用。指定是否要報告彙總所有 cpu 核心的 cpu 指標。預設值為 true。 -
measurement
– 指定要收集的 CPU 指標陣列。可能值為time_active
、time_guest
、time_guest_nice
、time_idle
、time_iowait
、time_irq
、time_nice
、time_softirq
、time_steal
、time_system
、time_user
、usage_active
、usage_guest
、usage_guest_nice
、usage_idle
、usage_iowait
、usage_irq
、usage_nice
、usage_softirq
、usage_steal
、usage_system
和usage_user
。如果您包含cpu
,即需要此欄位。根據預設,
cpu_usage_*
指標的單位是Percent
,cpu_time_*
指標則沒有單位。在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
-
metrics_collection_interval
– 選用。指定收集 cpu 指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。例如,指定每隔 10 秒收集 10 個原因指標,也就是將其設定為每 5 分鐘收集 300 個指定指標。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊,請參閱 高解析度指標。
-
append_dimensions
– 選用。其他僅用於 cpu 指標的維度。若您指定此欄位,則除了使用全域append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。
-
-
disk
– 選用。指定要收集哪些磁碟指標。僅收集掛載磁碟區的指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
resources
– 選用。指定磁碟掛載點的陣列。此欄位限制僅從列出的掛載點 CloudWatch 收集指標。您可以指定*
作為值,收集來自所有掛載點的指標。預設值為收集來自所有掛載點的指標。 -
measurement
– 指定要收集的磁碟指標陣列。可能值為free
、total
、used
、used_percent
、inodes_free
、inodes_used
及inodes_total
。如果您包含disk
,即需要此欄位。注意
disk
指標會包含Partition
的維度,表示所產生的自訂指標數依存於與您執行個體相關聯的分割區數。您擁有的磁碟分割數量取決於AMI您使用的磁碟分割,以及您連接至伺服器的 Amazon EBS磁碟區數量。若要檢視各個
disk
指標的預設單位,請參閱 Linux 和 macOS 執行個體上的代理程式收集 CloudWatch的指標。在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
之None
的預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
-
ignore_file_system_types
– 指定收集磁碟指標時要排除的檔案系統類型。包括sysfs
、devtmpfs
等的有效值。 -
drop_device
– 將此設為true
會導致Device
未包含在磁碟指標的維度中。防止
Device
作為維度使用,對於使用 Nitro 系統的執行個體而言會很有用,因為在這些執行個體上,當執行個體重新啟動時,每個磁碟掛載的裝置名稱都會變更。這可能會導致指標中的資料不一致,並導致警示根據這些指標進入INSUFFICIENT DATA
狀態。預設值為
false
。 -
metrics_collection_interval
– 選用。指定收集磁碟指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需詳細資訊,請參閱高解析度指標。
-
append_dimensions
– 選用。指定要用作僅磁碟指標額外維度的鍵值對。如果您指定此欄位,除了使用append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。您可以使用的鍵值對如下。您也可以指定其他自訂金鑰值對。
"VolumeId":"${aws:VolumeId}"
會將VolumeId
維度新增至區塊裝置磁碟指標。對於 Amazon EBS磁碟區,這會是 Amazon EBS磁碟區 ID。對於EC2執行個體存放區,這將是裝置序列。使用此參數需要將drop_device
參數設定為false
。
-
-
diskio
– 選用。指定要收集哪些磁碟 i/o 指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
resources
- 選用。如果您指定裝置陣列, 只會從這些裝置 CloudWatch 收集指標。否則,會收集所有裝置的指標。您也可以指定 * 作為值,收集來自所有裝置的指標。 -
measurement
– 指定要收集的 diskio 指標陣列。可能值為reads
、writes
、read_bytes
、write_bytes
、read_time
、write_time
、io_time
及iops_in_progress
。如果您包含diskio
,即需要此欄位。在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
之None
的預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
-
metrics_collection_interval
– 選用。指定收集 diskio 指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊,請參閱 高解析度指標。
-
append_dimensions
– 選用。其他僅用於 diskio 指標的維度。如果您指定此欄位,除了使用append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。
-
-
swap
– 選用。指定要收集哪些 swap 記憶體指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
measurement
– 指定要收集的切換指標陣列。可能值為free
、used
及used_percent
。如果您包含swap
,即需要此欄位。若要檢視各個
swap
指標的預設單位,請參閱 Linux 和 macOS 執行個體上的代理程式收集 CloudWatch的指標。在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
之None
的預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
-
metrics_collection_interval
– 選用。指定收集 swap 指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊,請參閱 高解析度指標。
-
append_dimensions
– 選用。其他僅用於 swap 指標的維度。如果您指定此欄位,除了使用全域append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。以高解析度指標收集。
-
-
mem
– 選用。指定要收集哪些記憶體指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
measurement
– 指定要收集的記憶體指標陣列。可能值為active
、available
、available_percent
、buffered
、cached
、free
、inactive
、total
、used
及used_percent
。如果您包含mem
,即需要此欄位。若要檢視各個
mem
指標的預設單位,請參閱 Linux 和 macOS 執行個體上的代理程式收集 CloudWatch的指標。在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
-
metrics_collection_interval
– 選用。指定收集 mem 指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊,請參閱 高解析度指標。
-
append_dimensions
– 選用。其他僅用於 mem 指標的維度。若您指定此欄位,則除了使用append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。
-
-
net
– 選用。指定要收集哪些網路指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
resources
- 選用。如果您指定網路介面陣列, 只會從這些介面 CloudWatch 收集指標。否則,會收集所有裝置的指標。您也可以指定*
作為值,收集來自所有介面的指標。 -
measurement
– 指定要收集的聯網指標陣列。可能值為bytes_sent
、bytes_recv
、drop_in
、drop_out
、err_in
、err_out
、packets_sent
及packets_recv
。如果您包含net
,即需要此欄位。若要檢視各個
net
指標的預設單位,請參閱 Linux 和 macOS 執行個體上的代理程式收集 CloudWatch的指標。在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
-
metrics_collection_interval
– 選用。指定收集 net 指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。例如,指定每隔 10 秒收集 10 個原因指標,也就是將其設定為每 5 分鐘收集 300 個指定指標。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊,請參閱 高解析度指標。
-
append_dimensions
– 選用。其他僅用於 net 指標的維度。如果您指定此欄位,則除了使用append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。
-
-
netstat
– 選用。指定要收集TCP的連線狀態和UDP連線指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
measurement
– 指定要收集的 netstat 指標陣列。可能值為tcp_close
、tcp_close_wait
、tcp_closing
、tcp_established
、tcp_fin_wait1
、tcp_fin_wait2
、tcp_last_ack
、tcp_listen
、tcp_none
、tcp_syn_sent
、tcp_syn_recv
、tcp_time_wait
及udp_socket
。如果您包含netstat
,即需要此欄位。若要檢視各個
netstat
指標的預設單位,請參閱 Linux 和 macOS 執行個體上的代理程式收集 CloudWatch的指標。在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
-
metrics_collection_interval
– 選用。指定收集 netstat 指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊,請參閱 高解析度指標。
-
append_dimensions
– 選用。其他僅用於 netstat 指標的維度。如果您指定此欄位,則除了使用append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。
-
-
processes
– 選用。指定要收集哪些程序指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
measurement
– 指定要收集的程序指標陣列。可能值為blocked
、dead
、idle
、paging
、running
、sleeping
、stopped
、total
、total_threads
、wait
及zombies
。如果您包含processes
,即需要此欄位。所有
processes
指標的預設單位皆為None
。在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
-
metrics_collection_interval
- 選用。指定收集程序指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。例如,指定每隔 10 秒收集 10 個原因指標,也就是將其設定為每 5 分鐘收集 300 個指定指標。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需詳細資訊,請參閱高解析度指標。
-
append_dimensions
– 選用。其他僅用於程序指標的維度。如果您指定此欄位,則除了使用append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。
-
-
nvidia_gpu
– 選用。指定要收集的NVIDIAGPU指標。本節僅適用於使用NVIDIAGPU加速器設定且已安裝NVIDIA系統管理介面 (nvidia-smi) 的主機上的 Linux 執行個體。收集的NVIDIAGPU指標會加上字串的字首
nvidia_smi_
,以與其他加速器類型收集的指標區分開來。此區段可以包含下列欄位:-
drop_original_metrics
– 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。 -
measurement
– 指定要收集的NVIDIAGPU指標陣列。如需此處要使用之可能值的清單,請參閱 收集NVIDIAGPU指標 的資料表中的 Metric (指標) 資料欄。在每個指標的項目中,您可以選擇性指定以下一個或兩個項目:
-
rename
– 為此指標指定不同的名稱。 -
unit
– 指定此指標使用的單位,並覆寫指標的None
預設單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
-
metrics_collection_interval
- 選用。指定收集NVIDIAGPU指標的頻率,覆寫組態檔案agent
區段中metrics_collection_interval
指定的全域。
-
-
procstat
- 選用。指定您想要從個別的程序擷取指標。如需有關 procstat 可用組態選項的詳細資訊,請參閱 使用 procstat 外掛程式收集程序指標。 -
statsd
– 選用。指定您想要使用StatsD
通訊協定來擷取自訂指標。 CloudWatch 代理程式充當通訊協定的常駐程式。您可以使用任何標準StatsD
用戶端,將指標傳送至 CloudWatch 客服人員。如需有關 StatsD 可用組態選項的詳細資訊,請參閱 使用 StatsD 擷取自訂指標。 -
ethtool
– 選用。指定您想要使用ethtool
外掛程式來擷取網路指標。此外掛程式可以匯入標準 ethtool 公用程式收集的指標,以及來自 Amazon EC2執行個體的網路效能指標。如需有關 ethtool 可用組態選項的詳細資訊,請參閱 收集網路效能指標。
以下是適用於 Linux 伺服器的 metrics
區段的範例。在此範例中,收集三個CPU指標、三個 netstat 指標、三個程序指標和一個磁碟指標,並設定代理程式從collectd
用戶端接收其他指標。
"metrics": { "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"],[]], "metrics_collected": { "collectd": {}, "cpu": { "resources": [ "*" ], "measurement": [ {"name": "cpu_usage_idle", "rename": "CPU_USAGE_IDLE", "unit": "Percent"}, {"name": "cpu_usage_nice", "unit": "Percent"}, "cpu_usage_guest" ], "totalcpu": false, "drop_original_metrics": [ "cpu_usage_guest" ], "metrics_collection_interval": 10, "append_dimensions": { "test": "test1", "date": "2017-10-01" } }, "netstat": { "measurement": [ "tcp_established", "tcp_syn_sent", "tcp_close" ], "metrics_collection_interval": 60 }, "disk": { "measurement": [ "used_percent" ], "resources": [ "*" ], "drop_device": true }, "processes": { "measurement": [ "running", "sleeping", "dead" ] } }, "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" } }
Windows Server
在 Windows Server 的 metrics_collected
區段中,您可以擁有各個 Windows 效能物件的子區段,例如 Memory
、Processor
及 LogicalDisk
。如需有關哪些物件和計數器可供使用的資訊,請參閱 Microsoft Windows 文件中的「效能計數器
在各物件的子區段中,您指定要收集的 measurement
計數器陣列。您在組態檔案中指定的每個物件都需要 measurement
陣列。您也可以指定 resources
欄位來命名要收集指標的執行個體。您也可以為 resources
指定 *
,為每個執行個體收集單獨的指標。如果您省略具有執行個體之計數器的 resources
,所有執行個體的資料將彙總為一組資料。如果您省略沒有執行個體的resources
計數器, CloudWatch 則客服人員不會收集計數器。若要判斷計數器是否具有執行個體,您可以使用下列其中一個命令。
Powershell:
Get-Counter -ListSet *
命令列 (非 Powershell):
TypePerf.exe –q
在每個物件區段,您也可以指定以下可選的欄位:
-
metrics_collection_interval
- 選用。指定為此物件收集指標的頻率,以覆寫組態檔案中agent
區段指定的全域metrics_collection_interval
。此值是以秒數指定。例如,指定每隔 10 秒收集 10 個原因指標,也就是將其設定為每 5 分鐘收集 300 個指定指標。
如果您將此值設為低於 60 秒,每個指標都將以高解析度指標進行收集。如需詳細資訊,請參閱高解析度指標。
-
append_dimensions
– 選用。指定僅用於此物件指標的其他維度。如果您指定此欄位,則除了使用全域append_dimensions
欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外,也會使用您在此欄位指定的內容。 -
drop_original_metrics
- 選用。如果您使用metrics
區段中的aggregation_dimensions
欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不希望原始指標傳送至 CloudWatch,您可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度報告給 的指標 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。
在每個計數器區段,您也可以指定以下可選的欄位:
-
rename
– 指定要 CloudWatch 用於此指標的不同名稱。 -
unit
– 指定用於此指標的單位。您指定的單位必須是有效的 CloudWatch 指標單位,如 中的Unit
描述所列MetricDatum。
您可以在 中包含其他選用區段metrics_collected
:
-
statsd
– 讓您使用StatsD
通訊協定擷取自訂指標。 CloudWatch 代理程式充當通訊協定的常駐程式。您可以使用任何標準StatsD
用戶端,將指標傳送至 CloudWatch客服人員。如需詳細資訊,請參閱使用 StatsD 擷取自訂指標。 -
procstat
– 讓您可以從個別程序擷取指標。如需詳細資訊,請參閱使用 procstat 外掛程式收集程序指標。
以下是適用於 Windows Server 的 metrics
區段範例。在此範例中,會收集許多 Windows 指標,且也會將電腦設為從 StatsD
用戶端接收其他指標。
"metrics": { "metrics_collected": { "statsd": {}, "Processor": { "measurement": [ {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"}, "% Interrupt Time", "% User Time", "% Processor Time" ], "resources": [ "*" ], "append_dimensions": { "d1": "win_foo", "d2": "win_bar" } }, "LogicalDisk": { "measurement": [ {"name": "% Idle Time", "unit": "Percent"}, {"name": "% Disk Read Time", "rename": "DISK_READ"}, "% Disk Write Time" ], "resources": [ "*" ] }, "Memory": { "metrics_collection_interval": 5, "measurement": [ "Available Bytes", "Cache Faults/sec", "Page Faults/sec", "Pages/sec" ], "append_dimensions": { "d3": "win_bo" } }, "Network Interface": { "metrics_collection_interval": 5, "measurement": [ "Bytes Received/sec", "Bytes Sent/sec", "Packets Received/sec", "Packets Sent/sec" ], "resources": [ "*" ], "append_dimensions": { "d3": "win_bo" } }, "System": { "measurement": [ "Context Switches/sec", "System Calls/sec", "Processor Queue Length" ], "append_dimensions": { "d1": "win_foo", "d2": "win_bar" } } }, "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "aggregation_dimensions" : [["ImageId"], ["InstanceId", "InstanceType"], ["d1"],[]] } }
logs
區段可包含下列欄位:
-
logs_collected
– 若包含logs
區段,則為必要項目。指定要從伺服器收集哪些日誌檔和 Windows 事件日誌。它可以包含兩個欄位,files
及windows_events
。-
files
– 指定 CloudWatch 代理程式要收集的一般日誌檔案。它包含一個欄位collect_list
,可進一步定義這些檔案。-
collect_list
– 若包含files
,則為必要項目。包含項目陣列,各項目指定一個要收集的日誌。每個項目可以包含下列欄位:-
file_path
– 指定要上傳至 CloudWatch Logs 的日誌檔案路徑。接受標準 Unix glob 匹配規則,以及將**
作為超級星號。例如,指定/var/log/**.log
以收集/var/log
樹狀目錄中的所有.log
檔案。如需更多範例,請參閱 Glob Library。 您也可以使用標準星號作為標準萬用字元。例如,
/var/log/system.log*
符合檔案 (如/var/log
中的system.log_1111
、system.log_2222
等等)。只有最新的檔案會根據檔案修改時間推送至 CloudWatch 日誌。我們建議您使用萬用字元來指定一系列的相同類型的檔案,例如
access_log.2018-06-01-01
和access_log.2018-06-01-02
,而不是多種的檔案,例如access_log_80
和access_log_443
。若要指定多種種類的檔案,可將另一個日誌串流項目新增至代理程式組態檔案,讓每個種類的日誌檔案進入不同的日誌串流。 -
auto_removal
- 選用。如果這是true
, CloudWatch 代理程式會在讀取此日誌檔案並輪換後自動將其刪除。日誌檔案通常在全部內容上傳至 CloudWatch Logs 後刪除,但如果客服人員到達 EOF(檔案結尾),並且也偵測到另一個符合相同 的較新的日誌檔案file_path
,客服人員會刪除OLD檔案,因此您必須確定在建立OLD檔案之前,已完成檔案的寫入NEW。RUST 追蹤程式庫已知不相容,因為它可能會建立NEW日誌檔案,然後仍嘗試寫入OLD日誌檔案。 代理程式只會從建立多個檔案的日誌檔案中移除完整檔案,例如為每個日期建立不同檔案的日誌檔案。如果日誌檔案持續寫入單一檔案,則不會移除該日誌檔案。
如果您已經有記錄檔案輪換或移除方法,建議您省略此欄位或將其設定為
false
。如果您省略此欄位,則會使用
false
的預設值。 -
log_group_name
- 選用。在日誌中指定要用作日誌群組名稱的項目 CloudWatch 。建議您使用此欄位來指定日誌群組名稱以防止混淆。若省略
log_group_name
,則會使用file_path
值 (包含最後的點) 作為日誌群組名稱。例如,如果檔案路徑是/tmp/TestLogFile.log.2017-07-11-14
,日誌群組名稱即為/tmp/TestLogFile.log
。如果您指定日誌群組名稱,則可以使用
{instance_id}
、{local_hostname}
、{hostname}
和{ip_address}
作為名稱中的變數。 從EC2中繼資料{hostname}
擷取主機名稱,{local_hostname}
並使用網路組態檔案中的主機名稱。若您使用這些變數來建立多個不同的日誌群組,請注意每個區域每個帳戶的上限為 1,000,000 個日誌群組。
可用的字元為 a–z、A–Z、0–9、'_' (底線)、'-' (連字號)、'/' (正斜線) 和 '.' (句點)。
-
log_group_class
- 選用。指定哪些日誌群組類別要用於新日誌群組。如需有關日誌群組類別的詳細資訊,請參閱日誌類別。有效值為
STANDARD
和INFREQUENT_ACCESS
。如果您省略此欄位,預設為使用STANDARD
。重要
建立日誌群組後,其類別即無法變更。
-
log_stream_name
- 選用。在日誌中指定要用作 CloudWatch 日誌串流名稱的項目。作為名稱的一部分,您可以使用{instance_id}
、{local_hostname}
、{hostname}
和{ip_address}
作為名稱內的變數。 從EC2中繼資料{hostname}
擷取主機名稱,{local_hostname}
並使用網路組態檔案中的主機名稱。如果省略此欄位,則會使用全域
logs
區段中的log_stream_name
參數值。如果該數值也省略,則會使用{instance_id}
的預設值。若日誌串流尚未存在,則會自動建立。
-
retention_in_days
- 選用。指定在指定日誌群組中保留日誌事件的天數。如果代理程式目前正在建立日誌群組,且您忽略此欄位,則此新日誌群組保留期將設為永不過期。
-
如果此日誌群組已存在,並且您指定此欄位,則會使用您指定的新保留期。如果您因為日誌群組已存在而忽略此欄位,則日誌群組的保留期不會變更。
CloudWatch 代理程式精靈在用來建立代理程式組態檔案時,會使用
-1
作為此欄位的預設值,而您不會指定日誌保留的值。精靈設定的此-1
值指定日誌群組中的事件永遠不會過期。然而,手動將此值編輯為-1
並不會有任何作用。
有效值為:1、3、5、7、14、30、60、90、120、150、180、365、400、545、731、1827、2192、2557、2922、3288 和 3653。
如果將代理程式設定為將多個日誌串流寫入同一日誌群組,則在某個位置指定
retention_in_days
將為整個日誌群組設定日誌保留期。如果您為多個位置的同一日誌群組指定retention_in_days
,則如果所有這些值都相等,則會設定保留期。但是,如果在多個位置為同一日誌群組指定不同的retention_in_days
值,則不會設定日誌保留期,且代理程式將停止並傳回錯誤。注意
客服人員IAM的角色或IAM使用者必須具有
logs:PutRetentionPolicy
,才能設定保留政策。如需詳細資訊,請參閱允許 CloudWatch 客服人員設定日誌保留政策。警告
如果您為已存在的日誌群組設定
retention_in_days
,則該日誌群組中在您指定的天數之前發佈的所有日誌都將遭到刪除。例如,將其設定為 3 會導致超過 3 天之前的所有日誌遭到刪除。 -
filters
- 選用。可以包含項目陣列,每個項目都指定正則表達式和篩選條件類型,以指定是發佈還是捨棄與篩選條件相符的日誌項目。如果您省略此欄位,日誌檔案中的所有日誌都會發佈至 CloudWatch Logs。如果您包含此欄位,代理程式會使用您指定的所有篩選條件來處理每個日誌訊息,而且只會將傳遞所有篩選條件的日誌事件發佈至 CloudWatch Logs。未傳遞所有篩選條件的日誌項目仍會保留在主機的日誌檔案中,但不會傳送至 CloudWatch 日誌。篩選條件陣列中的每個項目可以包含下列欄位:
type
– 表示篩選條件的類型。有效值為include
和exclude
。使用include
,日誌項目必須符合要發佈至 CloudWatch Logs 的表達式。使用 時exclude
,符合篩選條件的每個日誌項目都不會傳送至 CloudWatch Logs。expression
– 遵循RE2語法的規則運算式字串。 注意
CloudWatch 代理程式不會檢查您提供的任何規則表達式的效能,或限制規則表達式評估的執行時間。我們建議您小心不要編寫評估代價過高的表達式。如需可能問題的詳細資訊,請參閱規則表達式拒絕服務 - ReDoS
例如,下列 CloudWatch 代理程式組態檔案的摘錄會將屬於 的日誌PUT和POST請求發佈至 CloudWatch Logs,但不包括來自 Firefox 的日誌。
"collect_list": [ { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/test.log", "log_group_name": "test.log", "log_stream_name": "test.log", "filters": [ { "type": "exclude", "expression": "Firefox" }, { "type": "include", "expression": "P(UT|OST)" } ] }, ..... ]
注意
組態檔案中篩選條件的順序對效能來說很重要。在上述範例中,代理程式將捨棄與
Firefox
相符的所有日誌,然後才開始評估第二個篩選條件。若要由多個篩選條件評估較少個日誌項目,請將您希望排除更多日誌的篩選條件放置在組態檔案中的第一位。 -
timezone
- 選用。指定將時間戳記放在日誌事件時要使用的時區。有效值為UTC
和Local
。預設值為Local
。如果您未指定
timestamp_format
的值,則此參數會被忽略。 -
timestamp_format
- 選用。使用純文字和以 % 開頭的特殊符號,指定時間戳記格式。如果您省略此欄位,將使用目前時間。如果您使用此欄位,您可以使用以下清單中的符號作為格式的一部分,如果單一日誌項目包含兩個符合格式的時間戳記,則會使用第一個時間戳記。
此符號清單與舊版 CloudWatch Logs 代理程式使用的清單不同。如需這些差異的摘要,請參閱 統一 CloudWatch 代理程式與舊版 CloudWatch Logs 代理程式之間的時間戳記差異。
%y
-
年,不包含世紀的填充零的十進位數字。例如,
19
表示 2019。 %Y
-
年,包含世紀的十進位數字。例如:
2019
。 %b
-
月,當地的縮寫名稱
%B
-
月,當地的完整名稱
%m
-
月,填充零的十進位數字
%-m
-
月,十進位數字 (非填充零)
%d
-
日,填充零的十進位數字
%-d
-
日,十進位數字 (非填充零)
%A
-
完整的週間日名稱,例如
Monday
%a
-
週間日名稱的縮寫,例如
Mon
%H
-
小時 (24 小時制),填充零的十進位數字
%I
-
小時 (12 小時制),填充零的十進位數字
%-I
-
小時 (12 小時制),十進位數字 (非填充零)
%p
-
AM 或 PM
%M
-
分鐘,填充零的十進位數字
%-M
-
分鐘,十進位數字 (非填充零)
%S
-
秒鐘,填充零的十進位數字
%-S
-
秒鐘,十進位數字 (非填充零)
%f
-
分數秒為十進位數字 (1-9 的數字),在左側填補零。
%Z
-
時區,例如
PST
%z
-
時區,表示為本機時區與 之間的偏移UTC。例如:
-0700
。只有此格式受支援。例如,-07:00
不是有效的格式。
-
multi_line_start_pattern
– 指定用於識別日誌訊息開始處的模式。日誌訊息是由符合模式的一列及不符合模式的任何後續幾列所組成。如果您省略此欄位,會停用多行模式,而開頭使用非空白字元的任何行皆可結束之前的日誌訊息,並開始新的日誌訊息。
如果您包含此欄位,即可指定
{timestamp_format}
使用與您的時間戳記格式相同的規則表達式。否則,您可以為 CloudWatch Logs 指定不同的規則運算式,以用於判斷多行項目的起始行。 -
encoding
– 指定日誌檔案的編碼,以便正確讀取檔案。如果您指定不正確的編碼,可能導致資料遺失,因為無法解碼的字元會被替換為其他的字元。預設值為
utf-8
。以下是所有的可能值:ascii, big5, euc-jp, euc-kr, gbk, gb18030, ibm866, iso2022-jp, iso8859-2, iso8859-3, iso8859-4, iso8859-5, iso8859-6, iso8859-7, iso8859-8, iso8859-8-i, iso8859-10, iso8859-13, iso8859-14, iso8859-15, iso8859-16, koi8-r, koi8-u, macintosh, shift_jis, utf-8, utf-16, utf-16le, UTF-16, UTF-16LE, windows-874, windows-1250, windows-1251, windows-1252, windows-1253, windows-1254, windows-1255, windows-1256, windows-1257, windows-1258, x-mac-cyrillic
-
-
-
windows_events
區段會指定要從執行 Windows Server 的伺服器收集的 Windows 事件類型。它包括以下欄位:-
collect_list
– 若包含windows_events
,則為必要項目。指定要收集的 Windows 事件類型和層級。每個要收集的記錄在此區段都有一個項目,其中可包含下列欄位:-
event_name
– 指定要記錄的 Windows 事件類型。這和 Windows 事件記錄的通道名稱相同:例如,System
、Security
、Application
等。要記錄的每個 Windows 事件類型都需要此欄位。注意
從 Windows 日誌頻道 CloudWatch 擷取訊息時,它會根據日誌頻道的
Full Name
屬性來查詢日誌頻道。同時,Windows 事件檢視器導覽窗格會顯示日誌頻道的Log Name
屬性。Full Name
和Log Name
並不總是相符。若要確認頻道的Full Name
,在 Windows 事件檢視器中按一下滑鼠右鍵,然後開啟 Properties (屬性)。 -
event_levels
– 指定要記錄日誌的事件層級。您必須指定要記錄的每個層級。可能的值包括INFORMATION
、WARNING
、ERROR
、CRITICAL
及VERBOSE
。要記錄的每個 Windows 事件類型都需要此欄位。 -
log_group_name
– 必要。在日誌中指定要用作日誌群組名稱的項目 CloudWatch 。 -
log_stream_name
- 選用。在日誌中指定要用作 CloudWatch 日誌串流名稱的項目。作為名稱的一部分,您可以使用{instance_id}
、{local_hostname}
、{hostname}
和{ip_address}
作為名稱內的變數。 從EC2中繼資料{hostname}
擷取主機名稱,{local_hostname}
並使用網路組態檔案中的主機名稱。如果省略此欄位,則會使用全域
logs
區段中的log_stream_name
參數值。如果該數值也省略,則會使用{instance_id}
的預設值。若日誌串流尚未存在,則會自動建立。
-
event_format
- 選用。指定在 CloudWatch 日誌中存放 Windows 事件時要使用的格式。xml
會使用與 Windows 事件檢視器相同的XML格式。text
會使用舊版 CloudWatch Logs 代理程式格式。 -
retention_in_days
- 選用。指定在指定日誌群組中保留 Windows 事件的天數。如果代理程式目前正在建立日誌群組,且您忽略此欄位,則此新日誌群組保留期將設為永不過期。
-
如果此日誌群組已存在,並且您指定此欄位,則會使用您指定的新保留期。如果您因為日誌群組已存在而忽略此欄位,則日誌群組的保留期不會變更。
CloudWatch 代理程式精靈在用來建立代理程式組態檔案時,會使用
-1
作為此欄位的預設值,而您不會指定日誌保留的值。這個由精靈設定的-1
值會指定日誌群組中的事件不會過期。然而,手動將此值編輯為-1
並不會有任何作用。
有效值為:1、3、5、7、14、30、60、90、120、150、180、365、400、545、731、1827、2192、2557、2922、3288 和 3653。
如果將代理程式設定為將多個日誌串流寫入同一日誌群組,則在某個位置指定
retention_in_days
將為整個日誌群組設定日誌保留期。如果您為多個位置的同一日誌群組指定retention_in_days
,則如果所有這些值都相等,則會設定保留期。但是,如果在多個位置為同一日誌群組指定不同的retention_in_days
值,則不會設定日誌保留期,且代理程式將停止並傳回錯誤。注意
客服人員IAM的角色或IAM使用者必須具有
logs:PutRetentionPolicy
,才能設定保留政策。如需詳細資訊,請參閱允許 CloudWatch 客服人員設定日誌保留政策。警告
如果您為已存在的日誌群組設定
retention_in_days
,則該日誌群組中在您指定的天數之前發佈的所有日誌都將遭到刪除。例如,將其設定為 3 會導致超過 3 天之前的所有日誌遭到刪除。
-
-
-
-
log_stream_name
– 必要。指定預設的日誌串流名稱,以用於在collect_list
項目內的log_stream_name
參數中沒有定義個別日誌串流名稱的任何日誌或 Windows 事件。 -
endpoint_override
– 指定FIPS要用作代理程式傳送日誌之端點的端點或私有連結。指定此欄位並設定私有連結可讓您將日誌傳送至 Amazon VPC端點。如需詳細資訊,請參閱什麼是 AmazonVPC?。的值
endpoint_override
必須是 的字串URL。例如,組態檔案日誌區段的下列部分會將代理程式設定為在傳送日誌時使用VPC端點。
{ "logs": { "endpoint_override": "vpce-XXXXXXXXXXXXXXXXXXXXXXXXX.logs.us-east-1.vpce.amazonaws.com", ...... }, }
-
force_flush_interval
– 指定日誌在傳送到伺服器之前停留在記憶體緩衝區內的最長時間 (以秒為單位)。不論此欄位的設定如何,如果緩衝區中的日誌大小達到 1 MB,系統會立即將日誌傳送到伺服器。預設值為 5。如果您使用代理程式以內嵌指標格式來報告高解析度指標,並在這些指標上設定警示,請保留此參數的預設值 5 設定。否則,系統在報告指標時會產生延遲,從而導致對部分或不完整的資料發出警示。
-
credentials
– 指定將日誌傳送到不同 AWS 帳戶時要使用IAM的角色。若有指定,這個欄位會有一個role_arn
參數。-
role_arn
– 指定將日誌傳送至不同 AWS 帳戶時,要用於身分驗證IAM的角色ARN的 。如需詳細資訊,請參閱將指標、日誌和追蹤傳送到不同帳戶。此處若有指定,會覆寫組態檔案中agent
區段指定的role_arn
(如果有)。
-
-
metrics_collected
– 此欄位可以包含 區段,以指定代理程式要收集日誌,以啟用 CloudWatch Application Signals 和 Container Insights 等使用案例,並增強 Amazon 的可觀測性EKS。application_signals
(選用) 指定您要啟用 CloudWatch Application Signals 如需此組態的詳細資訊,請參閱 啟用 CloudWatch 應用程式訊號。-
kubernetes
– 此欄位可以包含enhanced_container_insights
參數,您可以使用 參數來啟用 Container Insights,以增強 Amazon 的可觀測性EKS。enhanced_container_insights
– 將此設定為true
以啟用 Container Insights,並增強 Amazon 的可觀測性EKS。如需詳細資訊,請參閱Container Insights 具有增強的 Amazon 可觀測性 EKS。accelerated_compute_metrics
– 將此設定為false
,以選擇退出在 Amazon EKS叢集上收集 Nvidia GPU指標。如需詳細資訊,請參閱NVIDIA GPU 指標。
-
emf
— 若要收集日誌中內嵌的指標,已不再需要新增此emf
欄位。這是一個舊版欄位,指定要收集內嵌指標格式之日誌的代理程式。您可以從這些記錄產生測量結果資料。如需詳細資訊,請參閱在日誌中內嵌指標。
以下是 logs
區段的範例。
"logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log", "log_group_name": "amazon-cloudwatch-agent.log", "log_stream_name": "my_log_stream_name_1", "timestamp_format": "%H: %M: %S%y%b%-d" }, { "file_path": "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\test.log", "log_group_name": "test.log", "log_stream_name": "my_log_stream_name_2" } ] }, "windows_events": { "collect_list": [ { "event_name": "System", "event_levels": [ "INFORMATION", "ERROR" ], "log_group_name": "System", "log_stream_name": "System" }, { "event_name": "CustomizedName", "event_levels": [ "INFORMATION", "ERROR" ], "log_group_name": "CustomizedLogGroup", "log_stream_name": "CustomizedLogStream" } ] } }, "log_stream_name": "my_log_stream_name", "metrics_collected": { "kubernetes": { "enhanced_container_insights": true } } }
透過將traces
區段新增至 CloudWatch 代理程式組態檔案,您可以啟用 CloudWatch Application Signals 或從 X-Ray 和儀器收集追蹤 OpenTelemetry SDK,並將其傳送至 X-Ray。
重要
代理程式IAM的角色或IAM使用者必須具有將追蹤資料傳送至 X-Ray AWSXrayWriteOnlyAccess的政策。如需詳細資訊,請參閱建立IAM角色和使用者以搭配 CloudWatch 客服人員使用。
若要快速開始收集追蹤,您可以將下列內容新增至 CloudWatch 代理程式組態檔案。
"traces_collected": { "xray": { }, "otlp": { } }
如果您將上一節新增至 CloudWatch 代理程式組態檔案並重新啟動代理程式,這會導致代理程式使用下列預設選項和值開始收集追蹤。如需有關這些參數的更多資訊,請參閱本節後面的參數定義。
"traces_collected": { "xray": { "bind_address": "127.0.0.1:2000", "tcp_proxy": { "bind_address": "127.0.0.1:2000" } }, "otlp": { "grpc_endpoint": "127.0.0.1:4317", "http_endpoint": "127.0.0.1:4318" } }
traces
區段可以包含下列欄位:
-
traces_collected
– 若包含traces
區段,則為必要項目。指定SDKs要收集追蹤的來源。它可以包含下列欄位:-
application_signals
- 選用。指定您要啟用 CloudWatch Application Signals 如需此組態的詳細資訊,請參閱 啟用 CloudWatch 應用程式訊號。 -
xray
- 選用。指定您要從 X-Ray 收集追蹤SDK。此區段可以包含下列欄位:-
bind_address
– 選用。指定 CloudWatch 代理程式用來接聽 X-Ray 追蹤UDP的地址。格式是ip:port
。此地址必須符合 X-Ray 中設定的地址SDK。如果您省略此欄位,預設為使用
127.0.0.1:2000
。 -
tcp_proxy
- 選用。設定用於支援 X-Ray 遠端取樣的代理地址。如需詳細資訊,請參閱 X-Ray 文件中的設定取樣規則。此區段可以包含下列欄位。
-
bind_address
- 選用。指定 CloudWatch 代理程式應設定代理TCP的地址。格式是ip:port
。此地址必須符合 X-Ray 中設定的地址SDK。如果您省略此欄位,預設為使用
127.0.0.1:2000
。
-
-
-
otlp
- 選用。指定您要從 收集追蹤 OpenTelemetry SDK。如需 AWS 適用於 的 Distro 的詳細資訊 OpenTelemetry,請參閱AWS 適用於 的 Distro OpenTelemetry。如需 AWS Distro for 的詳細資訊 OpenTelemetry SDKs,請參閱簡介 。 此區段可以包含下列欄位:
-
grpc_endpoint
– 選用。指定 CloudWatch 代理程式用來接聽 OpenTelemetry 使用 gRPC 遠端程序呼叫傳送的追蹤的地址。格式是ip:port
。此地址必須符合 中 gRPC 匯出器的地址集 OpenTelemetry SDK。如果您省略此欄位,預設為使用
127.0.0.1:4317
。 -
http_endpoint
- 選用。指定 CloudWatch 代理程式用來接聽透過 傳送的OTLP追蹤的地址HTTP。格式是ip:port
。此地址必須符合 中為HTTP匯出者設定的地址 OpenTelemetry SDK。如果您省略此欄位,預設為使用
127.0.0.1:4318
。
-
-
-
concurrency
- 選用。指定可用於上傳追蹤的 X-Ray 的同時呼叫最大數目。預設值為8
-
local_mode
- 選用。如果true
,代理程式不會收集 Amazon EC2執行個體中繼資料。預設為false
。 -
endpoint_override
- 選用。指定FIPS要用作 CloudWatch 代理程式傳送追蹤的端點的端點或私有連結。指定此欄位並設定私有連結可讓您將追蹤傳送至 Amazon VPC端點。如需詳細資訊,請參閱什麼是 Amazon VPC的值
endpoint_override
必須是 的字串URL。 -
region_override
- 選用。指定要用於 X-Ray 端點的區域。 CloudWatch 代理程式會將追蹤傳送至指定區域中的 X-Ray。如果您省略此欄位,代理程式會將追蹤傳送至 Amazon EC2執行個體所在的區域。如果在此處指定「區域」,則其會優先於組態檔案
agent
部分中的region
參數。 -
proxy_override
- 選用。指定 CloudWatch 代理程式在傳送請求至 X-Ray 時要使用的代理伺服器地址。必須將代理伺服器的通訊協定指定為此地址的一部分。 -
credentials
– 指定將追蹤傳送到不同 AWS 帳戶時要使用IAM的角色。若有指定,這個欄位會有一個role_arn
參數。-
role_arn
– 指定將追蹤傳送至不同 AWS 帳戶時,要用於身分驗證IAM的角色ARN的 。如需詳細資訊,請參閱將指標、日誌和追蹤傳送到不同帳戶。此處若有指定,會覆寫組態檔案中agent
區段指定的role_arn
(如果有)。
-
以下是 Linux 伺服器的完整 CloudWatch 代理程式組態檔案範例。
measurement
部分中所列、您想收集的指標項目,可以是特定完整的指標名稱,或只在指標名稱附加到類型的資源。例如,在 diskio
的 measurement
區段中指定 reads
或 diskio_reads
部分將導致收集 diskio_reads
指標。
此範例包含在 measurement
區段中兩種指定指標的方式。
{ "agent": { "metrics_collection_interval": 10, "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log" }, "metrics": { "namespace": "MyCustomNamespace", "metrics_collected": { "cpu": { "resources": [ "*" ], "measurement": [ {"name": "cpu_usage_idle", "rename": "CPU_USAGE_IDLE", "unit": "Percent"}, {"name": "cpu_usage_nice", "unit": "Percent"}, "cpu_usage_guest" ], "totalcpu": false, "metrics_collection_interval": 10, "append_dimensions": { "customized_dimension_key_1": "customized_dimension_value_1", "customized_dimension_key_2": "customized_dimension_value_2" } }, "disk": { "resources": [ "/", "/tmp" ], "measurement": [ {"name": "free", "rename": "DISK_FREE", "unit": "Gigabytes"}, "total", "used" ], "ignore_file_system_types": [ "sysfs", "devtmpfs" ], "metrics_collection_interval": 60, "append_dimensions": { "customized_dimension_key_3": "customized_dimension_value_3", "customized_dimension_key_4": "customized_dimension_value_4" } }, "diskio": { "resources": [ "*" ], "measurement": [ "reads", "writes", "read_time", "write_time", "io_time" ], "metrics_collection_interval": 60 }, "swap": { "measurement": [ "swap_used", "swap_free", "swap_used_percent" ] }, "mem": { "measurement": [ "mem_used", "mem_cached", "mem_total" ], "metrics_collection_interval": 1 }, "net": { "resources": [ "eth0" ], "measurement": [ "bytes_sent", "bytes_recv", "drop_in", "drop_out" ] }, "netstat": { "measurement": [ "tcp_established", "tcp_syn_sent", "tcp_close" ], "metrics_collection_interval": 60 }, "processes": { "measurement": [ "running", "sleeping", "dead" ] } }, "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "aggregation_dimensions" : [["ImageId"], ["InstanceId", "InstanceType"], ["d1"],[]], "force_flush_interval" : 30 }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "log_group_name": "amazon-cloudwatch-agent.log", "log_stream_name": "amazon-cloudwatch-agent.log", "timezone": "UTC" }, { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/test.log", "log_group_name": "test.log", "log_stream_name": "test.log", "timezone": "Local" } ] } }, "log_stream_name": "my_log_stream_name", "force_flush_interval" : 15, "metrics_collected": { "kubernetes": { "enhanced_container_insights": true } } } }
以下是執行 Windows Server 之伺服器的完整 CloudWatch 代理程式組態檔案範例。
{ "agent": { "metrics_collection_interval": 60, "logfile": "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log" }, "metrics": { "namespace": "MyCustomNamespace", "metrics_collected": { "Processor": { "measurement": [ {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"}, "% Interrupt Time", "% User Time", "% Processor Time" ], "resources": [ "*" ], "append_dimensions": { "
customized_dimension_key_1
": "customized_dimension_value_1
", "customized_dimension_key_2
": "customized_dimension_value_2
" } }, "LogicalDisk": { "measurement": [ {"name": "% Idle Time", "unit": "Percent"}, {"name": "% Disk Read Time", "rename": "DISK_READ"}, "% Disk Write Time" ], "resources": [ "*" ] }, "customizedObjectName
": { "metrics_collection_interval": 60, "customizedCounterName
": [ "metric1
", "metric2
" ], "resources": [ "customizedInstances
" ] }, "Memory": { "metrics_collection_interval": 5, "measurement": [ "Available Bytes", "Cache Faults/sec", "Page Faults/sec", "Pages/sec" ] }, "Network Interface": { "metrics_collection_interval": 5, "measurement": [ "Bytes Received/sec", "Bytes Sent/sec", "Packets Received/sec", "Packets Sent/sec" ], "resources": [ "*" ], "append_dimensions": { "customized_dimension_key_3
": "customized_dimension_value_3
" } }, "System": { "measurement": [ "Context Switches/sec", "System Calls/sec", "Processor Queue Length" ] } }, "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "aggregation_dimensions" : [["ImageId"], ["InstanceId", "InstanceType"], ["d1"],[]] }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log", "log_group_name": "amazon-cloudwatch-agent.log", "timezone": "UTC" }, { "file_path": "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\test.log", "log_group_name": "test.log", "timezone": "Local" } ] }, "windows_events": { "collect_list": [ { "event_name": "System", "event_levels": [ "INFORMATION", "ERROR" ], "log_group_name": "System", "log_stream_name": "System", "event_format": "xml" }, { "event_name": "CustomizedName", "event_levels": [ "WARNING", "ERROR" ], "log_group_name": "CustomizedLogGroup
", "log_stream_name": "CustomizedLogStream
", "event_format": "xml" } ] } }, "log_stream_name": "example_log_stream_name" } }
手動儲存 CloudWatch 代理程式組態檔案
如果您手動建立或編輯 CloudWatch 代理程式組態檔案,您可以為其提供任何名稱。若要簡化故障診斷,我們建議您在 Linux 伺服器上將它命名為 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
,且在執行 Windows Server 的伺服器上將它命名為 $Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json
。在您建立檔案後,您可以將此檔案複製到其他您希望執行代理程式的伺服器。
將 CloudWatch 代理程式組態檔案上傳至 Systems Manager 參數存放區
如果您打算使用SSM代理程式在伺服器上安裝 CloudWatch 代理程式,則在手動編輯 CloudWatch 代理程式組態檔案之後,您可以將其上傳至 Systems Manager 參數存放區。若要這樣做,您可以使用 Systems Manager put-parameter
命令。
若要能夠在 參數存放區中存放檔案,您必須使用具有足夠許可IAM的角色。如需詳細資訊,請參閱建立IAM角色和使用者以搭配 CloudWatch 客服人員使用。
使用下列命令,其中 parameter name
是 參數存放區中要用於此檔案的名稱,以及 configuration_file_pathname
是您編輯之組態檔案的路徑和檔案名稱。
aws ssm put-parameter --name "
parameter name
" --type "String" --value file://configuration_file_pathname