手動建立或編輯 CloudWatch 代理程式組態檔 - Amazon CloudWatch

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

手動建立或編輯 CloudWatch 代理程式組態檔

CloudWatch 代理程式組態檔是一個 JSON 檔案,其中包含四個區段agentmetricslogstraces、和,說明如下:

  • agent 區段包括代理程式整體組態的各個欄位。

  • metrics區段會指定收集和發佈至的自訂量度 CloudWatch。如果您僅使用代理程式來收集日誌,您可以省略檔案中的 metrics 區段。

  • logs區段會指定要將哪些記錄檔發佈至 CloudWatch 記錄檔。如果伺服器執行 Windows Server,這部分可以包含來自 Windows 事件記錄的事件。

  • traces段落會指定收集並傳送至的追蹤來源 AWS X-Ray。

以下章節說明此 JSON 檔案的架構和欄位。您也可以查看此組態檔案的結構描述定義。結構描述定義位於 Linux 伺服器上的 installation-directory/doc/amazon-cloudwatch-agent-schema.json,以及執行 Windows Server 的伺服器上的 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 定價

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 參數。

  • 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 代理程式對 CloudWatch 後端進行 API 呼叫時所使用的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 和視窗常見的欄位

在執行 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 Web Services 一般參考中的 Amazon Elastic Compute Cloud (Amazon EC2)

  • aggregation_dimensions – 選用。指定彙整所收集指標的維度。例如,如果您彙整 AutoScalingGroupName 維度上的指標,來自各 Auto Scaling 群組的所有執行個體的指標將會彙總並可整體檢視。

    您可以彙整一或多個維度的指標。例如,為單一執行個體 ID、單一執行個體類型及兩個維度組合指定 [["InstanceId"], ["InstanceType"], ["InstanceId","InstanceType"]] 彙總指標。

    您也可以指定 [] 將所有指標彙整至一個集合,無視所有維度。

  • endpoint_override – 指定 FIPS 端點或私有連結,作為代理程式傳送指標的目標端點。指定此選項和設定私有連結可讓您將指標傳送到 Amazon VPC 端點。如需詳細資訊,請參閱什麼是 Amazon VPC?

    endpoint_override 的值必須是 URL 字串。

    例如,組態檔案中 metrics 區段的下列部分會將代理程式設定為在傳送指標時使用 VPC 端點。

    { "metrics": { "endpoint_override": "vpce-XXXXXXXXXXXXXXXXXXXXXXXXX.monitoring.us-east-1.vpce.amazonaws.com", ...... }, }
  • metrics_collected – 必要。指定要收集哪些指標,包括要透過 StatsDcollectd 收集的自訂指標。此區段包含數個子區段。

    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),或只在部分指標名稱中附加資源的類型。例如,在 diskiomeasurement 區段中指定 reads 導致收集 diskio_reads 指標。

  • collectd – 選用。指定您想要使用 collectd 通訊協定來擷取自訂指標。您可以使用collectd軟體將度量傳送至 CloudWatch 代理程式。如需有關 collectd 可用組態選項的詳細資訊,請參閱 使用 collectd 擷取自訂指標

  • cpu – 選用。指定要收集哪些 CPU 指標。此區段僅適用於 Linux 執行個體。對於欲收集的 CPU 指標,您必須納入至少其中一個 resourcestotalcpu 欄位。此區段可以包含下列欄位:

    • drop_original_metrics – 選用。如果您使用 metrics 區段中的 aggregation_dimensions 欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不想將原始量度傳送至 CloudWatch,可以使用量度清單來指定此參數。與此參數一起指定的量度沒有依維度報告的量度 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。

    • resources - 選用。請以值 * 指定此欄位,以便收集 per-cpu 指標。唯一允許的值為:*

    • totalcpu – 選用。指定是否要報告彙總所有 cpu 核心的 cpu 指標。預設值為 true。

    • measurement – 指定要收集的 CPU 指標陣列。可能值為 time_activetime_guesttime_guest_nicetime_idletime_iowaittime_irqtime_nicetime_softirqtime_stealtime_systemtime_userusage_activeusage_guestusage_guest_niceusage_idleusage_iowaitusage_irqusage_niceusage_softirqusage_stealusage_systemusage_user。如果您包含 cpu,即需要此欄位。

      根據預設,cpu_usage_* 指標的單位是 Percentcpu_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 – 指定要收集的磁碟指標陣列。可能值為 freetotalusedused_percentinodes_freeinodes_usedinodes_total。如果您包含 disk,即需要此欄位。

      注意

      disk 指標會包含 Partition 的維度,表示所產生的自訂指標數依存於與您執行個體相關聯的分割區數。您擁有的磁碟分割區數量取決於您使用的 AMI,以及連接到伺服器的 Amazon EBS 磁碟區數量。

      若要檢視各個 disk 指標的預設單位,請參閱 CloudWatch代理程式在 Linux 和 macOS 執行個體上收集的指標

      在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:

      • rename – 為此指標指定不同的名稱。

      • unit – 指定此指標使用的單位,並覆寫指標的 NoneNone 的預設單位。您指定的單位必須是有效的 CloudWatch 公制單位,如中的Unit說明所示MetricDatum

    • ignore_file_system_types – 指定收集磁碟指標時要排除的檔案系統類型。包括 sysfsdevtmpfs 等的有效值。

    • 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 磁碟區識別碼。對於 EC2 執行個體存放區,這將是裝置序列號。使用此選項需要將drop_device參數設定為false

  • diskio – 選用。指定要收集哪些磁碟 i/o 指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位:

    • drop_original_metrics – 選用。如果您使用 metrics 區段中的 aggregation_dimensions 欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不想將原始量度傳送至 CloudWatch,可以使用量度清單來指定此參數。與此參數一起指定的量度沒有依維度報告的量度 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。

    • resources - 選用。如果您指定裝置陣列,則只會從這些裝置 CloudWatch 收集指標。否則,會收集所有裝置的指標。您也可以指定 * 作為值,收集來自所有裝置的指標。

    • measurement – 指定要收集的 diskio 指標陣列。可能值為 readswritesread_byteswrite_bytesread_timewrite_timeio_timeiops_in_progress。如果您包含 diskio,即需要此欄位。

      在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:

      • rename – 為此指標指定不同的名稱。

      • unit – 指定此指標使用的單位,並覆寫指標的 NoneNone 的預設單位。您指定的單位必須是有效的 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 – 指定要收集的切換指標陣列。可能值為 freeusedused_percent。如果您包含 swap,即需要此欄位。

      若要檢視各個 swap 指標的預設單位,請參閱 CloudWatch代理程式在 Linux 和 macOS 執行個體上收集的指標

      在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:

      • rename – 為此指標指定不同的名稱。

      • unit – 指定此指標使用的單位,並覆寫指標的 NoneNone 的預設單位。您指定的單位必須是有效的 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 – 指定要收集的記憶體指標陣列。可能值為 activeavailableavailable_percentbufferedcachedfreeinactivetotalusedused_percent。如果您包含 mem,即需要此欄位。

      若要檢視各個 mem 指標的預設單位,請參閱 CloudWatch代理程式在 Linux 和 macOS 執行個體上收集的指標

      在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:

      • 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_sentbytes_recvdrop_indrop_outerr_inerr_outpackets_sentpackets_recv。如果您包含 net,即需要此欄位。

      若要檢視各個 net 指標的預設單位,請參閱 CloudWatch代理程式在 Linux 和 macOS 執行個體上收集的指標

      在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:

      • 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_closetcp_close_waittcp_closingtcp_establishedtcp_fin_wait1tcp_fin_wait2tcp_last_acktcp_listentcp_nonetcp_syn_senttcp_syn_recvtcp_time_waitudp_socket。如果您包含 netstat,即需要此欄位。

      若要檢視各個 netstat 指標的預設單位,請參閱 CloudWatch代理程式在 Linux 和 macOS 執行個體上收集的指標

      在各個個別指標的項目中,您可以選擇性指定以下一或兩個項目:

      • 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 – 指定要收集的程序指標陣列。可能值為 blockeddeadidlepagingrunningsleepingstoppedtotaltotal_threadswaitzombies。如果您包含 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 – 選用。指定要收集哪些 NVIDIA GPU 指標。此區段僅適用於設定了 NVIDIA GPU 加速器並安裝了 NVIDIA 系統管理介面 (nvidia-smi) 之主機上的 Linux 執行個體。

    收集的 NVIDIA GPU 指標字首是字串 nvidia_smi_,可用來區分其與為其他加速器類型收集的指標。此區段可以包含下列欄位:

    • drop_original_metrics – 選用。如果您使用 metrics 區段中的 aggregation_dimensions 欄位,將指標彙總為彙總結果,則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不想將原始量度傳送至 CloudWatch,可以使用量度清單來指定此參數。與此參數一起指定的量度沒有依維度報告的量度 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量,降低您的成本。

    • measurement – 指定要收集的 NVIDIA GPU 指標陣列。如需此處要使用之可能值的清單,請參閱 收集 NVIDIA GPU 指標 的資料表中的 Metric (指標) 資料欄。

      在每個指標的項目中,您可以選擇性指定以下一個或兩個項目:

      • rename – 為此指標指定不同的名稱。

      • unit – 指定此指標使用的單位,並覆寫指標的 None 預設單位。您指定的單位必須是有效的 CloudWatch 公制單位,如中的Unit說明所示MetricDatum

    • metrics_collection_interval - 選用。指定 NVIDIA GPU 指標的收集頻率,並覆寫組態檔案的 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 效能物件的子區段,例如 MemoryProcessorLogicalDisk。如需有關哪些物件和計數器可供使用的資訊,請參閱 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 事件日誌。它可以包含兩個欄位,fileswindows_events

    • files— 指定 CloudWatch 代理程式要收集的一般記錄檔。它包含一個欄位 collect_list,可進一步定義這些檔案。

      • collect_list – 若包含 files,則為必要項目。包含項目陣列,各項目指定一個要收集的日誌。每個項目可以包含下列欄位:

        • file_path— 指定要上傳至防護記錄的 CloudWatch 記錄檔路徑。接受標準 Unix glob 匹配規則,以及將 ** 作為超級星號。例如,指定 /var/log/**.log 以收集 /var/log 樹狀目錄中的所有 .log 檔案。如需更多範例,請參閱 Glob Library

          您也可以使用標準星號作為標準萬用字元。例如,/var/log/system.log* 符合檔案 (如 /var/log 中的 system.log_1111system.log_2222 等等)。

          只有最新的檔案會根據檔案修改時間推送至 CloudWatch 記錄檔。我們建議您使用萬用字元來指定一系列的相同類型的檔案,例如 access_log.2018-06-01-01access_log.2018-06-01-02,而不是多種的檔案,例如 access_log_80access_log_443。若要指定多種種類的檔案,可將另一個日誌串流項目新增至代理程式組態檔案,讓每個種類的日誌檔案進入不同的日誌串流。

        • auto_removal – 選用。如果是這樣true, CloudWatch 代理程式會在讀取此記錄檔後自動刪除該記錄檔,並且已輪替。通常記錄檔會在全部內容上傳至 CloudWatch 記錄檔之後刪除,但是如果代理程式到達 EOF (檔案結尾),並偵測到另一個符合相同檔案的較新記錄檔file_path,則代理程式會刪除舊檔案,因此您必須先確定已完成寫入 OLD 檔案,然後再建立新檔案。RUST 追蹤程式庫存在已知的不相容性,因為它可能會建立新的記錄檔,然後仍會嘗試寫入 OLD 記錄檔。

          代理程式只會從建立多個檔案的日誌檔案中移除完整檔案,例如為每個日期建立不同檔案的日誌檔案。如果日誌檔案持續寫入單一檔案,則不會移除該日誌檔案。

          如果您已經有記錄檔案輪換或移除方法,建議您省略此欄位或將其設定為 false

          如果您省略此欄位,則會使用 false 的預設值。

        • log_group_name – 選用。指定要用作 CloudWatch 記錄檔中記錄群組名稱的項目。

          建議您使用此欄位來指定日誌群組名稱以防止混淆。若省略 log_group_name,則會使用 file_path 值 (包含最後的點) 作為日誌群組名稱。例如,如果檔案路徑是 /tmp/TestLogFile.log.2017-07-11-14,日誌群組名稱即為 /tmp/TestLogFile.log

          如果指定日誌群組名稱,您可以使用 {instance_id}{hostname}{local_hostname}{ip_address} 作為名稱中的變數。{hostname} 會從 EC2 中繼資料擷取主機名稱,而 {local_hostname} 會使用網路組態檔案中的主機名稱。

          若您使用這些變數來建立多個不同的日誌群組,請注意每個區域每個帳戶的上限為 1,000,000 個日誌群組。

          可用的字元為 a–z、A–Z、0–9、'_' (底線)、'-' (連字號)、'/' (正斜線) 和 '.' (句點)。

        • log_group_class - 選用。指定哪些日誌群組類別要用於新日誌群組。如需有關日誌群組類別的詳細資訊,請參閱日誌類別

          有效值為 STANDARDINFREQUENT_ACCESS。如果您省略此欄位,預設為使用 STANDARD

          重要

          建立日誌群組後,其類別即無法變更。

        • log_stream_name - 選用。指定在記錄檔中用作記 CloudWatch 錄資料流名稱的項目。作為名稱的一部分,您可以使用 {instance_id}{hostname}{local_hostname}{ip_address} 作為名稱中的變數。{hostname} 會從 EC2 中繼資料擷取主機名稱,而 {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 記錄檔。如果您包含此欄位,則代理程式會使用您指定的所有篩選器處理每個記錄檔訊息,並且只會將通過所有篩選器的記錄事件發佈至 CloudWatch 記錄檔。未通過所有篩選器的記錄項目仍會保留在主機的記錄檔中,但不會傳送至 CloudWatch 記錄。

          篩選條件陣列中的每個項目可以包含下列欄位:

          • type – 表示篩選條件的類型。有效值為 includeexclude。使用時include,記錄項目必須符合要發行至 CloudWatch 記錄的運算式。使用時exclude,符合篩選器的每個記錄項目不會傳送至 CloudWatch 記錄檔。

          • expression – 遵循 RE2 語法的正則表達式字串。

            注意

            CloudWatch 代理程式不會檢查您提供的任何規則運算式的效能,也不會限制規則運算式評估的執行時間。我們建議您小心不要編寫評估代價過高的表達式。如需可能問題的詳細資訊,請參閱規則運算式拒絕服務- ReDo S

          例如,下列 CloudWatch 代理程式設定檔摘錄會將 PUT 和 POST 要求的記錄檔發佈到 CloudWatch 記錄檔,但不包括來自 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 – 選用。指定將時間戳記放在日誌事件時要使用的時區。有效值為 UTCLocal。預設值為 Local

          如果您未指定 timestamp_format 的值,則此參數會被忽略。

        • timestamp_format – 選用。使用純文字和以 % 開頭的特殊符號,指定時間戳記格式。如果您省略此欄位,將使用目前時間。如果您使用此欄位,您可以使用以下清單中的符號作為格式的一部分,

          如果單一日誌項目包含兩個符合格式的時間戳記,則會使用第一個時間戳記。

          這個符號清單與舊版 CloudWatch Logs 代理程式所使用的清單不同。如需這些差異的摘要,請參閱 統一 CloudWatch 代理程式與舊版記錄代理程式之間的時間戳 CloudWatch 記差

          %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 事件記錄的通道名稱相同:例如,SystemSecurityApplication 等。要記錄的每個 Windows 事件類型都需要此欄位。

          注意

          從 Windows 記錄通道 CloudWatch 擷取訊息時,會根據其Full Name內容查詢記錄通道。同時,Windows 事件檢視器導覽窗格會顯示日誌頻道的 Log Name 屬性。Full NameLog Name 並不總是相符。若要確認頻道的 Full Name,在 Windows 事件檢視器中按一下滑鼠右鍵,然後開啟 Properties (屬性)。

        • event_levels – 指定要記錄日誌的事件層級。您必須指定要記錄的每個層級。可能的值包括 INFORMATIONWARNINGERRORCRITICALVERBOSE。要記錄的每個 Windows 事件類型都需要此欄位。

        • log_group_name – 必要。指定要用作 CloudWatch 記錄檔中記錄群組名稱的項目。

        • log_stream_name - 選用。指定在記錄檔中用作記 CloudWatch 錄資料流名稱的項目。作為名稱的一部分,您可以使用 {instance_id}{hostname}{local_hostname}{ip_address} 作為名稱中的變數。{hostname} 會從 EC2 中繼資料擷取主機名稱,而 {local_hostname} 會使用網路組態檔案中的主機名稱。

          如果省略此欄位,則會使用全域 logs 區段中的 log_stream_name 參數值。如果該數值也省略,則會使用 {instance_id} 的預設值。

          若日誌串流尚未存在,則會自動建立。

        • event_format – 選用。指定在 CloudWatch 記錄檔中儲存 Windows 事件時要使用的格式。 xml使用 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 端點。如需詳細資訊,請參閱什麼是 Amazon VPC?

    endpoint_override 的值必須是 URL 字串。

    例如,組態檔案中 logs 區段的下列部分會將代理程式設定為在傳送日誌時使用 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 程式收集日誌以啟用應用程式訊號和容器見解等使用案例,並增強 Amazon EKS 的可觀察性。

    • application_signals(選擇性) 指定您要啟用CloudWatch 應用程式訊號如需此組態的詳細資訊,請參閱啟用 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 指標。如需詳細資訊,請參閱 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 應用程式訊號,或從 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 區段,則為必要項目。指定要從哪些 SDK 中收集追蹤。它可以包含下列欄位:

    • application_signals - 選用。指定您要啟用CloudWatch 應用程式訊號如需此組態的詳細資訊,請參閱啟用 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 代理程式應設定 Proxy 的 TCP 位址。格式是 ip:port。此地址必須與 X-Ray SDK 中設定的地址相符。

          如果您省略此欄位,預設為使用 127.0.0.1:2000

    • otlp - 選用。指定您要從 OpenTelemetry SDK 收集追蹤。有關 AWS 發行版的更多信息 OpenTelemetry,請參閱 AWS . OpenTelemetry 如需有關 OpenTelemetry SDK 發 AWS 行版的詳細資訊,請參閱簡介。

      此區段可以包含下列欄位:

      • grpc_endpoint – 選用。指定 CloudWatch 代理程式用來偵聽使用 GrPC 遠端程序呼叫傳送之 OpenTelemetry 追蹤的位址。格式是 ip:port。此位址必須符合 OpenTelemetry SDK 中 GrPC 匯出器所設定的位址。

        如果您省略此欄位,預設為使用 127.0.0.1:4317

      • http_endpoint - 選用。指定 CloudWatch 代理程式用來監聽透過 HTTP 傳送之 OTLP 追蹤的位址。格式是 ip:port。此位址必須符合 OpenTelemetry SDK 中 HTTP 匯出器所設定的位址。

        如果您省略此欄位,預設為使用 127.0.0.1:4318

  • concurrency - 選用。指定可用於上傳追蹤的 X-Ray 的同時呼叫最大數目。預設值為 8

  • local_mode - 選用。如果為 true,則代理程式不會收集 Amazon EC2 執行個體中繼資料。預設為 false

  • endpoint_override - 選用。指定要用作 CloudWatch 代理程式傳送追蹤的端點的 FIPS 端點或私人連結。指定此欄位並設定私有連結,可讓您將追蹤傳送到 Amazon VPC 端點。如需詳細資訊,請參閱什麼是 Amazon VPC

    endpoint_override 的值必須是 URL 字串。

  • region_override - 選用。指定要用於 X-Ray 端點的區域。 CloudWatch 代理程式會將追蹤傳送至指定區域中的 X-Ray。如果忽略此欄位,代理程式會將追蹤傳送至 Amazon EC2 執行個體所在的區域。

    如果在此處指定「區域」,則其會優先於組態檔案 agent 部分中的 region 參數。

  • proxy_override - 選用。指定代 CloudWatch 理程式傳送要求至 X-Ray 時要使用的 Proxy 伺服器位址。必須將代理伺服器的通訊協定指定為此地址的一部分。

  • credentials— 指定將追蹤傳送至其他 AWS 帳戶時要使用的 IAM 角色。若有指定,這個欄位會有一個 role_arn 參數。

    • role_arn— 指定將追蹤傳送至其他 AWS 帳戶時用於驗證的 IAM 角色 ARN。如需詳細資訊,請參閱 將指標、日誌和追蹤傳送到不同帳戶。此處若有指定,會覆寫組態檔案中 agent 區段指定的 role_arn (如果有)。

以下是 Linux 伺服器的完整 CloudWatch 代理程式組態檔範例。

measurement 部分中所列、您想收集的指標項目,可以是特定完整的指標名稱,或只在指標名稱附加到類型的資源。例如,在 diskiomeasurement 區段中指定 readsdiskio_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