

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

# 手動建立或編輯 CloudWatch 代理程式組態檔案
<a name="CloudWatch-Agent-Configuration-File-Details"></a>

 CloudWatch 代理程式組態檔案是一種 JSON 檔案，其中包含四個區段：`agent`、`metrics`、`logs` 和 `traces`。
+ `agent` 區段包括代理程式整體組態的各個欄位。
+ `metrics` 區段會指定要收集和發布至 CloudWatch 的自訂指標。如果您僅使用代理程式來收集日誌，您可以省略檔案中的 `metrics` 區段。
+ `logs` 區段會指定要發布至 CloudWatch Logs 的日誌檔案。如果伺服器執行 Windows Server，這部分可以包含來自 Windows 事件記錄的事件。
+ `traces` 區段會指定要收集並傳送至其中的追蹤來源 AWS X-Ray。

 本節說明 CloudWatch 代理程式設定檔的結構和欄位。您也可以檢視此設定檔的結構描述定義。結構描述定義位於 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/cloudwatch-agent.json`，且在執行 Windows Server 的伺服器上將它命名為 `$Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json`。在您建立檔案後，您可以將此檔案複製到其他您希望安裝代理程式的伺服器。

代理程式啟動時，會在 `/opt/aws/amazon-cloudwatch/etc/amazon-cloudwatch-agent.d` 目錄中建立每個設定檔的複本，檔案名稱的字首為 `file_` (適用於本機檔案來源) 或 `ssm_` (適用於 Systems Manager 參數儲存區來源)，以指示組態來源。

**注意**  
CloudWatch 代理程式收集的指標、日誌和追蹤會產生費用。如需定價的詳細資訊，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing)。

## CloudWatch 代理程式組態檔案：Agent (代理程式) 區段
<a name="CloudWatch-Agent-Configuration-File-Agentsection"></a>

`agent` 區段可以包含下列欄位。精靈不會建立 `agent` 區段。反之，精靈會省略它並在此區段的所有欄位中使用預設值。
+ `metrics_collection_interval` – 選用。指定此組態檔案中指定的所有指標的收集頻率。您可以針對特定指標類型覆寫此值。

  此值是以秒數指定。例如，指定每隔 10 秒收集 10 個原因指標，也就是將其設定為每 5 分鐘收集 300 個指定指標。

  如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊，請參閱 [高解析度指標](publishingMetrics.md#high-resolution-metrics)。

  預設值為 60。
+ `region` – 指定當監控 Amazon EC2 執行個體時，要用於 CloudWatch 端點的區域。收集的指標會傳送到這個區域，例如 `us-west-1`。如果您省略此欄位，代理程式會將指標傳送至 Amazon EC2 執行個體所在的區域。

  如果您要監控現場部署伺服器，將不會使用此欄位；代理程式會從 AWS 組態檔案的 `AmazonCloudWatchAgent` 描述檔中讀取區域。
+ `credentials` – 指定將指標、日誌和追蹤傳送至不同 AWS 帳戶時要使用的 IAM 角色。若有指定，這個欄位會有一個 `role_arn` 參數。
  + `role_arn` – 指定 IAM 角色的 Amazon Resource Name (ARN)，以便在將指標、日誌和追蹤傳送至不同 AWS 帳戶時用於身分驗證。如需詳細資訊，請參閱[將指標、日誌和追蹤傳送到不同帳戶](CloudWatch-Agent-common-scenarios.md#CloudWatch-Agent-send-to-different-AWS-account)。
+ `debug` – 選用。指定以偵錯日誌訊息執行 CloudWatch 代理程式。預設值為 `false`。
+ `aws_sdk_log_level` – 選用。僅在 CloudWatch 代理程式 1.247350.0 版和更新版本中支援。

  您可以指定此欄位，讓代理程式執行 AWS SDK 端點的記錄。此欄位的值可包含下列選項中的一或多項。如有多個選項，請使用 `|` 字元進行分隔。
  + `LogDebug`
  + `LogDebugWithSigning`
  + `LogDebugWithHTTPBody`
  + `LogDebugRequestRetries`
  + `LogDebugWithEventStreamBody`

  如需這些選項的詳細資訊，請參閱 [LogLevelType](https://docs.aws.amazon.com/sdk-for-go/api/aws/#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 代理程式](CloudWatch-Agent-common-scenarios.md#CloudWatch-Agent-run-as-user)。
+ `user_agent` – 選用。指定 `user-agent` 字串，當 CloudWatch 代理程式對 CloudWatch 後端進行 API 呼叫時使用的字串。預設值是由代理程式版本、用來編譯代理程式的 Go 程式設計語言版本、執行時間作業系統和架構、建置時間以及啟用的外掛程式組成的字串。
+ `usage_data` - 選用。每當 CloudWatch 代理程式將指標或日誌發布到 CloudWatch 時，預設會將本身的運作狀態和效能資料傳送至 CloudWatch。此資料不會產生任何費用。您可以針對 `usage_data` 指定 `false`，防止代理程式傳送此資料。如果您省略此參數，會使用預設值 `true`，且代理程式會傳送運作狀態和效能資料。

  如果將此值設定為 `false`，必須停止並重新啟動代理程式，設定才會生效。
+ `service.name` - 選用。指定要用於填入實體以[尋找相關遙測](ExploreRelated.md)的服務名稱。
+ `deployment.environment` - 選用。指定要用於填入實體以[尋找相關遙測](ExploreRelated.md)的環境名稱。
+ `use_dualstack_endpoint` - 選用。如果這是 `true`，CloudWatch 代理程式將使用[雙堆疊端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#dual-stack-endpoints)進行所有 API 呼叫。

以下是 `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"
  }
```

## CloudWatch 代理程式組態檔案：Metrics (指標) 區段
<a name="CloudWatch-Agent-Configuration-File-Metricssection"></a>

### Linux 和 Windows 的常見欄位
<a name="CloudWatch-Agent-Common"></a>

在執行 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)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region)。
+ `aggregation_dimensions` – 選用。指定彙整所收集指標的維度。例如，如果您彙整 `AutoScalingGroupName` 維度上的指標，來自各 Auto Scaling 群組的所有執行個體的指標將會彙總並可整體檢視。

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

  您也可以指定 `[]` 將所有指標彙整至一個集合，無視所有維度。
+ `endpoint_override` – 指定 FIPS 端點或私有連結，作為代理程式傳送指標的目標端點。指定此選項和設定私有連結可讓您將指標傳送到 Amazon VPC 端點。如需詳細資訊，請參閱[什麼是 Amazon VPC？](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)。

  `endpoint_override` 的值必須是 URL 字串。

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

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

  `metrics_collected` 區段的內容取決於此組態檔案適用於執行 Linux 或 Windows Server 的伺服器。
+ `metrics_destinations` - 選用。為 `metrics_collected` 中定義的所有指標指定一個或多個目的地。如果在這裡指定，其會覆寫 `cloudwatch` 的預設目的地。
  + `cloudwatch` – Amazon CloudWatch。
  + `amp` – Amazon Managed Service for Prometheus。
    + `workspace_id` – Amazon Managed Service for Prometheus 工作空間的對應 ID。

  ```
  {
    "metrics": {
      "metrics_destinations": {
        "cloudwatch": {},
        "amp": {
          "workspace_id": "ws-abcd1234-ef56-7890-ab12-example"
        }
      }
    }
  }
  ```
+ `force_flush_interval` – 指定指標在傳送到伺服器之前停留在記憶體緩衝區內的最長時間 (以秒為單位)。不論此欄位的設定如何，如果緩衝區中的指標大小達到 1 MB 或有 1000 個不同的指標，系統便會立即將指標傳送到伺服器。

  預設值為 60。
+ `credentials` – 指定當將指標傳送給不同帳戶時要使用的 IAM 角色。若有指定，這個欄位會有一個 `role_arn` 參數。
  + `role_arn` – 指定當傳送指標給不同帳戶時，用於身分驗證的 IAM 角色的 ARN。如需詳細資訊，請參閱[將指標、日誌和追蹤傳送到不同帳戶](CloudWatch-Agent-common-scenarios.md#CloudWatch-Agent-send-to-different-AWS-account)。若在此處指定，此值會覆寫組態檔案中 `agent` 區段指定的 `role_arn` (若有的話)。
  + `service.name` - 選用。指定要用於填入實體以[尋找相關遙測](ExploreRelated.md)的服務名稱。
  + `deployment.environment` - 選用。指定要用於填入實體以[尋找相關遙測](ExploreRelated.md)的環境名稱。

### Linux 區段
<a name="CloudWatch-Agent-Linux-section"></a>

在執行 Linux 的伺服器上，組態檔案的 `metrics_collected` 區段也可以包含下列欄位。

其中的許多欄位可包含 `measurement` 區段，列出您想要對該資源收集的指標。這些 `measurement` 區段可以指定完整的指標名稱 (例如 `swap_used`)，或只在部分指標名稱中附加資源的類型。例如，在 `diskio` 的 `measurement` 區段中指定 `reads` 導致收集 `diskio_reads` 指標。
+ `collectd` – 選用。指定您想要使用 `collectd` 通訊協定來擷取自訂指標。您可以使用 `collectd` 軟體將指標傳送到 CloudWatch 代理程式。如需有關 collectd 可用組態選項的詳細資訊，請參閱 [使用 collectd 擷取自訂指標](CloudWatch-Agent-custom-metrics-collectd.md)。
+ `cpu` – 選用。指定要收集哪些 CPU 指標。此區段僅適用於 Linux 執行個體。對於欲收集的 CPU 指標，您必須納入至少其中一個 `resources` 和 `totalcpu` 欄位。此區段可以包含下列欄位：
  + `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 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。
  + `metrics_collection_interval` – 選用。指定收集 cpu 指標的頻率，以覆寫組態檔案中 `agent` 區段指定的全域 `metrics_collection_interval`。

    此值是以秒數指定。例如，指定每隔 10 秒收集 10 個原因指標，也就是將其設定為每 5 分鐘收集 300 個指定指標。

    如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊，請參閱 [高解析度指標](publishingMetrics.md#high-resolution-metrics)。
  + `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` 指標的預設單位，請參閱 [由 CloudWatch 代理程式在 Linux 和 macOS 執行個體上收集的指標](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent)。

    在各個個別指標的項目中，您可以選擇性指定以下一或兩個項目：
    + `rename` – 為此指標指定不同的名稱。
    + `unit` – 指定此指標使用的單位，並覆寫指標的 `None` 之 `None` 的預設單位。您指定的單位必須是有效的 CloudWatch 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。
  + `ignore_file_system_types` – 指定收集磁碟指標時要排除的檔案系統類型。包括 `sysfs`、`devtmpfs` 等的有效值。
  + `drop_device` – 將此設為 `true` 會導致 `Device` 未包含在磁碟指標的維度中。

    防止 `Device` 作為維度使用，對於使用 Nitro 系統的執行個體而言會很有用，因為在這些執行個體上，當執行個體重新啟動時，每個磁碟掛載的裝置名稱都會變更。這可能會導致指標中的資料不一致，並導致警示根據這些指標進入 `INSUFFICIENT DATA` 狀態。

    預設值為 `false`。
  + `metrics_collection_interval` – 選用。指定收集磁碟指標的頻率，以覆寫組態檔案中 `agent` 區段指定的全域 `metrics_collection_interval`。

    此值是以秒數指定。

    如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需詳細資訊，請參閱[高解析度指標](publishingMetrics.md#high-resolution-metrics)。
  + `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 只會收集這些裝置的指標。否則，會收集所有裝置的指標。您也可以指定 \$1 作為值，收集來自所有裝置的指標。
  + `measurement` – 指定要針對連接至 Amazon EC2 執行個體的 Amazon EBS 磁碟區和執行個體存放區磁碟區收集的磁碟區和 AWS NVMe 驅動程式指標陣列。diskio 的可能值包括：`reads`、`writes`、`read_bytes`、`write_bytes`、`read_time`、`write_time`、`io_time` 及 `iops_in_progress`。如需 Amazon EBS 磁碟區和 Amazon EC2 執行個體儲存體磁碟區的 NVMe 驅動程式指標清單，請參閱 [收集 Amazon EBS NVMe 驅動程式指標](Container-Insights-metrics-EBS-Collect.md) 和 [收集 Amazon EC2 執行個體儲存體磁碟區 NVMe 驅動程式指標](Container-Insights-metrics-instance-store-Collect.md)。如果您包含 `diskio`，即需要此欄位。

    在各個個別指標的項目中，您可以選擇性指定以下一或兩個項目：
    + `rename` – 為此指標指定不同的名稱。
    + `unit` – 指定此指標使用的單位，並覆寫指標的 `None` 之 `None` 的預設單位。您指定的單位必須是有效的 CloudWatch 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。

    如需預設單位和指標說明的資訊，請參閱 [收集 Amazon EBS NVMe 驅動程式指標](Container-Insights-metrics-EBS-Collect.md)。
  + `metrics_collection_interval` – 選用。指定收集 diskio 指標的頻率，以覆寫組態檔案中 `agent` 區段指定的全域 `metrics_collection_interval`。

    此值是以秒數指定。

    如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊，請參閱 [高解析度指標](publishingMetrics.md#high-resolution-metrics)。
  + `append_dimensions` – 選用。其他僅用於 diskio 指標的維度。如果您指定此欄位，除了使用 `append_dimensions` 欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外，也會使用您在此欄位指定的內容。
+ `swap` – 選用。指定要收集哪些 swap 記憶體指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位：
  + `drop_original_metrics` – 選用。如果您使用 `metrics` 區段中的 `aggregation_dimensions` 欄位，將指標彙總為彙總結果，則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不想將原始指標傳送至 CloudWatch，可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度將指標報告給 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量，降低您的成本。
  + `measurement` – 指定要收集的切換指標陣列。可能值為 `free`、`used` 及 `used_percent`。如果您包含 `swap`，即需要此欄位。

    若要檢視各個 `swap` 指標的預設單位，請參閱 [由 CloudWatch 代理程式在 Linux 和 macOS 執行個體上收集的指標](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent)。

    在各個個別指標的項目中，您可以選擇性指定以下一或兩個項目：
    + `rename` – 為此指標指定不同的名稱。
    + `unit` – 指定此指標使用的單位，並覆寫指標的 `None` 之 `None` 的預設單位。您指定的單位必須是有效的 CloudWatch 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。
  + `metrics_collection_interval` – 選用。指定收集 swap 指標的頻率，以覆寫組態檔案中 `agent` 區段指定的全域 `metrics_collection_interval`。

    此值是以秒數指定。

    如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊，請參閱 [高解析度指標](publishingMetrics.md#high-resolution-metrics)。
  + `append_dimensions` – 選用。其他僅用於 swap 指標的維度。如果您指定此欄位，除了使用全域 `append_dimensions` 欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外，也會使用您在此欄位指定的內容。以高解析度指標收集。
+ `mem` – 選用。指定要收集哪些記憶體指標。此區段僅適用於 Linux 執行個體。此區段可以包含下列欄位：
  + `drop_original_metrics` – 選用。如果您使用 `metrics` 區段中的 `aggregation_dimensions` 欄位，將指標彙總為彙總結果，則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不想將原始指標傳送至 CloudWatch，可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度將指標報告給 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量，降低您的成本。
  + `measurement` – 指定要收集的記憶體指標陣列。可能值為 `active`、`available`、`available_percent`、`buffered`、`cached`、`free`、`inactive`、`shared`、`total`、`used` 及 `used_percent`。如果您包含 `mem`，即需要此欄位。

    若要檢視各個 `mem` 指標的預設單位，請參閱 [由 CloudWatch 代理程式在 Linux 和 macOS 執行個體上收集的指標](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent)。

    在各個個別指標的項目中，您可以選擇性指定以下一或兩個項目：
    + `rename` – 為此指標指定不同的名稱。
    + `unit` – 指定此指標使用的單位，並覆寫指標的 `None` 預設單位。您指定的單位必須是有效的 CloudWatch 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。
  + `metrics_collection_interval` – 選用。指定收集 mem 指標的頻率，以覆寫組態檔案中 `agent` 區段指定的全域 `metrics_collection_interval`。

    此值是以秒數指定。

    如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊，請參閱 [高解析度指標](publishingMetrics.md#high-resolution-metrics)。
  + `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` 指標的預設單位，請參閱 [由 CloudWatch 代理程式在 Linux 和 macOS 執行個體上收集的指標](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent)。

    在各個個別指標的項目中，您可以選擇性指定以下一或兩個項目：
    + `rename` – 為此指標指定不同的名稱。
    + `unit` – 指定此指標使用的單位，並覆寫指標的 `None` 預設單位。您指定的單位必須是有效的 CloudWatch 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。
  + `metrics_collection_interval` – 選用。指定收集 net 指標的頻率，以覆寫組態檔案中 `agent` 區段指定的全域 `metrics_collection_interval`。

    此值是以秒數指定。例如，指定每隔 10 秒收集 10 個原因指標，也就是將其設定為每 5 分鐘收集 300 個指定指標。

    如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊，請參閱 [高解析度指標](publishingMetrics.md#high-resolution-metrics)。
  + `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` 指標的預設單位，請參閱 [由 CloudWatch 代理程式在 Linux 和 macOS 執行個體上收集的指標](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent)。

    在各個個別指標的項目中，您可以選擇性指定以下一或兩個項目：
    + `rename` – 為此指標指定不同的名稱。
    + `unit` – 指定此指標使用的單位，並覆寫指標的 `None` 預設單位。您指定的單位必須是有效的 CloudWatch 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。
  + `metrics_collection_interval` – 選用。指定收集 netstat 指標的頻率，以覆寫組態檔案中 `agent` 區段指定的全域 `metrics_collection_interval`。

    此值是以秒數指定。

    如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需高解析度指標的詳細資訊，請參閱 [高解析度指標](publishingMetrics.md#high-resolution-metrics)。
  + `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 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。
  + `metrics_collection_interval` – 選用。指定收集程序指標的頻率，以覆寫組態檔案中 `agent` 區段指定的全域 `metrics_collection_interval`。

    此值是以秒數指定。例如，指定每隔 10 秒收集 10 個原因指標，也就是將其設定為每 5 分鐘收集 300 個指定指標。

    如果您將此值設為低於 60 秒，每個指標都將以高解析度指標進行收集。如需詳細資訊，請參閱[高解析度指標](publishingMetrics.md#high-resolution-metrics)。
  + `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 指標](CloudWatch-Agent-NVIDIA-GPU.md) 的資料表中的 **Metric** (指標) 資料欄。

    在每個指標的項目中，您可以選擇性指定以下一個或兩個項目：
    + `rename` – 為此指標指定不同的名稱。
    + `unit` – 指定此指標使用的單位，並覆寫指標的 `None` 預設單位。您指定的單位必須是有效的 CloudWatch 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。
  + `metrics_collection_interval` – 選用。指定 NVIDIA GPU 指標的收集頻率，並覆寫組態檔案的 `agent` 區段中指定的全域 `metrics_collection_interval`。
+ `jmx` - 選用。指定您要從執行個體擷取 Java Management Extensions (JMX) 指標。如需您可以在本節中使用之參數，以及可以收集之指標的詳細資訊，請參閱 [收集 Java Management Extensions (JMX) 指標](CloudWatch-Agent-JMX-metrics.md)。
+  `otlp` - 選用。指定您要從 OpenTelemetry SDK 中收集指標。如需您可以在本節中使用之欄位的詳細資訊，請參閱 [使用 OpenTelemetry 收集指標和追蹤](CloudWatch-Agent-OpenTelemetry-metrics.md)。
+ `procstat` - 選用。指定您想要從個別的程序擷取指標。如需有關 procstat 可用組態選項的詳細資訊，請參閱 [使用 procstat 外掛程式收集程序指標](CloudWatch-Agent-procstat-process-metrics.md)。
+ `statsd` – 選用。指定您想要使用 `StatsD` 通訊協定來擷取自訂指標。CloudWatch 代理程式作為通訊協定的常駐程式。您可以使用任何標準 `StatsD` 用戶端將指標傳送到 CloudWatch 代理程式。如需有關 StatsD 可用組態選項的詳細資訊，請參閱 [使用 StatsD 擷取自訂指標](CloudWatch-Agent-custom-metrics-statsd.md)。
+ `ethtool` – 選用。指定您想要使用 `ethtool` 外掛程式來擷取網路指標。此外掛程式可以匯入標準 ethtool 公用程式收集的指標，以及來自 Amazon EC2 執行個體的網路效能指標。如需有關 ethtool 可用組態選項的詳細資訊，請參閱 [收集網路效能指標](CloudWatch-Agent-network-performance.md)。

以下是適用於 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
<a name="CloudWatch-Agent-Windows-section"></a>

在 Windows Server 的 `metrics_collected` 區段中，您可以擁有各個 Windows 效能物件的子區段，例如 `Memory`、`Processor` 及 `LogicalDisk`。如需有關哪些物件和計數器可供使用的資訊，請參閱 Microsoft Windows 文件中的「[效能計數器](https://learn.microsoft.com/en-us/windows/win32/perfctrs/performance-counters-portal)」。

在各物件的子區段中，您指定要收集的 `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 秒，每個指標都將以高解析度指標進行收集。如需詳細資訊，請參閱[高解析度指標](publishingMetrics.md#high-resolution-metrics)。
+ `append_dimensions` – 選用。指定僅用於此物件指標的其他維度。如果您指定此欄位，則除了使用全域 `append_dimensions` 欄位中指定的維度 (用於代理程式收集的所有類型指標) 之外，也會使用您在此欄位指定的內容。
+ `drop_original_metrics` - 選用。如果您使用 `metrics` 區段中的 `aggregation_dimensions` 欄位，將指標彙總為彙總結果，則代理程式預設會同時傳送為每個維度值分開的彙總指標和原始指標。如果您不想將原始指標傳送至 CloudWatch，可以使用指標清單指定此參數。與此參數一起指定的指標沒有依維度將指標報告給 CloudWatch。而是只報告彙總指標。這樣可以減少代理程式收集的指標數量，降低您的成本。

在每個計數器區段，您也可以指定以下可選的欄位：
+ `rename` – 為此指標指定將用於 CloudWatch 的不同名稱。
+ `unit` – 指定用於此指標的單位。您指定的單位必須是有效的 CloudWatch 指標單位，如 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) 中 `Unit` 說明所列示。

`metrics_collected` 中還可以包含其他選用區段：
+ `statsd` – 讓您使用 `StatsD` 通訊協定擷取自訂指標。CloudWatch 代理程式作為通訊協定的常駐程式。您可以使用任何標準 `StatsD` 用戶端將指標傳送到 CloudWatch 代理程式。如需詳細資訊，請參閱[使用 StatsD 擷取自訂指標](CloudWatch-Agent-custom-metrics-statsd.md)。
+ `procstat` – 讓您可以從個別程序擷取指標。如需詳細資訊，請參閱[使用 procstat 外掛程式收集程序指標](CloudWatch-Agent-procstat-process-metrics.md)。
+  `jmx` – 選用。指定您要從執行個體擷取 Java Management Extensions (JMX) 指標。如需您可以在本節中使用之欄位，以及可以收集之指標的詳細資訊，請參閱 [收集 Java Management Extensions (JMX) 指標](CloudWatch-Agent-JMX-metrics.md)。
+  `otlp` - 選用。指定您要從 OpenTelemetry SDK 中收集指標。如需您可以在本節中使用之欄位的詳細資訊，請參閱 [使用 OpenTelemetry 收集指標和追蹤](CloudWatch-Agent-OpenTelemetry-metrics.md)。

以下是適用於 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"],[]]
    }
  }
```

## CloudWatch 代理程式組態檔案：Logs (日誌) 區段
<a name="CloudWatch-Agent-Configuration-File-Logssection"></a>

`logs` 區段可包含下列欄位：
+ `service.name` - 選用。指定要用於填入實體以[尋找相關遙測](ExploreRelated.md)的服務名稱。
+ `deployment.environment` - 選用。指定要用於填入實體以[尋找相關遙測](ExploreRelated.md)的環境名稱。
+ `backpressure_mode` - 選用。指定 CloudWatch 代理程式擷取日誌的速度比傳送到 CloudWatch Logs 的速度快時的行為，進而產生背壓。背壓可能來自網路問題、API 限流或高日誌磁碟區。

  代理程式支援下列值：
  + `fd_release` – 在背壓條件下發佈已刪除檔案的檔案描述項。當外部日誌輪換或清除程序在代理程式維護開啟的檔案描述項時移除檔案時，此選項有助於防止磁碟空間耗盡。`auto_removal` 選項優先於設定為 `backpressure_mode`的選項`fd_release`。啟用 `auto_removal` 時，CloudWatch 代理程式會處理檔案以完成，而不會釋出檔案描述項。
**重要**  
使用 `fd_release`可能會導致 CloudWatch 代理程式無法讀取日誌檔案直到完成，導致日誌遺失。
+ `concurrency` - 選用。指定用於同時將日誌檔案發佈至 CloudWatch 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](https://github.com/gobwas/glob)。

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

        根據檔案的修改時間，只會將最新的檔案推送到 CloudWatch Logs。我們建議您使用萬用字元來指定一系列的相同類型的檔案，例如 `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 檔案，因此，您必須確保在建立「新」檔案之前，已完成對「舊」檔案的寫入操作。[RUST 追蹤程式庫](https://docs.rs/tracing/latest/tracing/)已知不相容，因其可能會建立「新」日誌檔案，然後仍嘗試寫入「舊」日誌檔案。

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

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

        如果您省略此欄位，則會使用 `false` 的預設值。
      + `log_group_name` - 選用。指定 CloudWatch Logs 中日誌群組的名稱。

        建議您使用此欄位來指定日誌群組名稱以防止混淆。若省略 `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、'\$1' (底線)、'-' (連字號)、'/' (正斜線) 和 '.' (句點)。
      + `log_group_class` - 選用。指定哪些日誌群組類別要用於新日誌群組。如需有關日誌群組類別的詳細資訊，請參閱[日誌類別](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html)。

        有效值為 `STANDARD` 和 `INFREQUENT_ACCESS`。如果您省略此欄位，預設為使用 `STANDARD`。
**重要**  
建立日誌群組後，其類別即無法變更。
      + `log_stream_name` - 選用。指定 CloudWatch Logs 中日誌串流的名稱。作為名稱的一部分，您可以使用 `{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`，以便其能夠設定保留政策。
**警告**  
如果您為已存在的日誌群組設定 `retention_in_days`，則該日誌群組中在您指定的天數之前發布的所有日誌都將遭到刪除。例如，將其設定為 3 會導致超過 3 天之前的所有日誌遭到刪除。
      + `filters` - 選用。可以包含項目陣列，每個項目都指定正則表達式和篩選條件類型，以指定是發布還是捨棄與篩選條件相符的日誌項目。如果忽略此欄位，日誌檔案中的所有日誌都將發布到 CloudWatch Logs。如果包含此欄位，則代理程式會使用您指定的所有篩選條件來處理每條日誌訊息，並且只有通過所有篩選條件的日誌事件才會發布到 CloudWatch Logs。未通過所有篩選條件的日誌項目仍將保留在主機的日誌檔案中，但不會傳送到 CloudWatch Logs。

        篩選條件陣列中的每個項目可以包含下列欄位：
        + `type` – 表示篩選條件的類型。有效值為 `include` 和 `exclude`。若使用 `include`，則日誌項目必須與要發布到 CloudWatch Logs 的表達式相符。若使用 `exclude`，則與篩選條件相符的每個日誌項目都不會傳送到 CloudWatch Logs。
        + `expression` – 遵循 [RE2 語法](https://github.com/google/re2/wiki/Syntax)的正則表達式字串。
**注意**  
CloudWatch 代理程式不會檢查您提供的任何正則表達式的效能，也不會限制正則表達式評估的執行時間。我們建議您小心不要編寫評估代價過高的表達式。如需可能問題的詳細資訊，請參閱[正則表達式拒絕服務 - ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)

        例如，下面的 CloudWatch 代理程式組態檔案摘錄會向 CloudWatch Logs 發布 PUT 和 POST 請求的日誌，但不包括來自 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` - 選用。使用純文字和以 % 開頭的特殊符號，指定時間戳記格式。如果您省略此欄位，將使用目前時間。如果您使用此欄位，您可以使用以下清單中的符號作為格式的一部分，
**注意**  
當 `file_path` 設定為 `amazon-cloudwatch-agent.log` 時，不會考慮此參數 

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

        此符號清單會和較舊 CloudWatch Logs 代理程式使用的清單不同。如需這些差異的摘要，請參閱 [CloudWatch 代理程式與舊版 CloudWatch Logs 代理程式之間的時間戳記差異](CloudWatch-Agent-common-scenarios.md#CloudWatch-Agent-logs-timestamp-differences)。  
`%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` 
      + `service.name` - 選用。指定要用於填入實體以[尋找相關遙測](ExploreRelated.md)的服務名稱。
      + `deployment.environment` - 選用。指定要用於填入實體以[尋找相關遙測](ExploreRelated.md)的環境名稱。
      + `trim_timestamp` - 選用。如果這是 true，CloudWatch 代理程式會`timestamp_format`先從行移除 相符的時間戳記，再將其傳送至 CloudWatch Logs。LogEvent 仍會包含 `timestamp` 欄位。

        如果您省略此欄位，則會使用 `false` 的預設值。
  + `windows_events` 區段會指定要從執行 Windows Server 的伺服器收集的 Windows 事件類型。它包括以下欄位：
    + `collect_list` – 若包含 `windows_events`，則為必要項目。指定要收集的 Windows 事件類型和層級。每個要收集的記錄在此區段都有一個項目，其中可包含下列欄位：
      + `event_name` – 指定要記錄的 Windows 事件類型。這和 Windows 事件記錄的通道名稱相同：例如，`System`、`Security`、`Application` 等。要記錄的每個 Windows 事件類型都需要此欄位。
**注意**  
當 CloudWatch 從 Windows 日誌頻道擷取訊息時，它會根據其 `Full Name` 屬性尋找日誌頻道。同時，Windows 事件檢視器導覽窗格會顯示日誌頻道的 `Log Name` 屬性。`Full Name` 和 `Log Name` 並不總是相符。若要確認頻道的 `Full Name`，在 Windows 事件檢視器中按一下滑鼠右鍵，然後開啟 **Properties** (屬性)。
      + `event_levels` - 選用。指定要記錄的事件層級。您必須指定要記錄的每個層級。可能的值包括 `INFORMATION`、`WARNING`、`ERROR`、`CRITICAL` 及 `VERBOSE`。對於要記錄的每種 Windows 事件類型，此為選用欄位。可與其他篩選選項 (例如 `event_ids` 和 `filters`) 搭配使用。
      + `event_ids` - 選用。包含 Windows 事件 ID 陣列，用於指定要從 Windows 事件日誌收集哪些事件。排除此欄位時，代理程式會收集指定事件日誌中的所有事件。包含此欄位時，代理程式只會收集符合指定事件 ID 的事件。

        `event_ids` 陣列中的每個項目應是數值事件 ID 值，並且可以與其他篩選選項搭配使用。請參閱以下組態範例中的第三個項目。
**注意**  
當您需要依事件 ID 篩選時，建議使用 `event_ids` 而非規則運算式進行篩選，因其可提供更好的效能。
      + `filters` - 選用。包含項目陣列。每個項目指定規則運算式和篩選條件類型，以指定是發布還是捨棄與篩選條件相符的日誌項目。包含此欄位時，代理程式會使用您指定的所有篩選條件來處理每條日誌訊息，並且只有通過所有篩選條件的日誌事件才會發布到 CloudWatch Logs。未傳遞所有篩選條件的 Windows 事件日誌將被捨棄，不會傳送至 CloudWatch Logs。篩選條件區段也可以與其他篩選機制搭配使用，例如事件 ID [4624, 4625] 和系統層級 (資訊、錯誤或關鍵)，以有效篩選日誌並推送至 CloudWatch。

        篩選條件陣列中的每個項目可以包含下列欄位：
        + `type` – 指定篩選條件的類型。有效值為 `include` 和 `exclude`。若包含，Windows 事件項目必須與要發布到 CloudWatch Logs 的表達式相符。若排除，則與篩選條件相符的每個 Windows 事件項目都不會傳送到 CloudWatch Logs。
        + `expression` – 遵循 RE2 語法的規則運算式字串。
**注意**  
CloudWatch 代理程式不會驗證您提供的規則運算式。它也不會限制其評估時間。請仔細撰寫表達式，以避免效能問題。如需安全風險的詳細資訊，請參閱[規則運算式拒絕服務攻擊 - ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)。

        在下方的代理程式組態範例中：

        對於第一個項目，代理程式會將包含資料庫失敗訊息、任何身分驗證相關活動和所有登入事件 (成功和失敗的嘗試) 的日誌推送至 CloudWatch。任何不符合此模式的日誌都會被捨棄。

        在第二個項目中，初始篩選根據 Windows 事件訂閱的事件 ID 完成。代理程式會收集包含字串使用者的所有日誌，捨棄不符合這些模式的日誌。然後，代理程式會捨棄包含 `successful` 的日誌，再將剩餘的日誌傳送至 CloudWatch Logs。在傳送至 CloudWatch 之前，每個篩選條件類型都會套用至每個 Windows 事件日誌。

        ```
        "collect_list": [ 
          {
                "event_name": "Application",
                "log_group_name": "ApplicationEvents",
                "log_stream_name": "ApplicationEvents", 
                "filters": [
                    {
                        "type": "include",
                        "expression": "Database.*failed|Authentication.*|login.*"
                    }
                ]
            },
            {
                "event_name": "System", 
                "log_group_name": "SystemEvents",
                "log_stream_name": "Logon-events",
                "event_ids": [
                    4624,
                    4625
                 ],
                "filters": [
                    {
                        "type": "include",
                        "expression": ".*user.*"
                    },
                    {
                        "type": "exclude",
                        "expression": ".*successful.*"
                    }
                 ]
             }
          .....
        ]
        ```
**注意**  
組態中篩選條件的順序會影響到效能。在第二個項目中，代理程式將捨棄與使用者不符的所有日誌，然後才開始評估第二個篩選條件表達式。為達最佳效能，請依排除率由高至低對篩選條件排序。

        雖然您可以在篩選條件表達式中篩選出事件 ID 和系統層級的日誌，但建議您使用 `event_ids` 和 `log_level` (如第二個項目所示) 來提高效能。
**警告**  
即使所有篩選機制 (event\$1levels、event\$1ids、filters) 都是選用的，但在代理程式設定過程中，至少需啟用其中一項，方能篩選日誌。
      + `log_group_name` – 必要。指定 CloudWatch Logs 中日誌群組的名稱。
      + `log_stream_name` - 選用。指定 CloudWatch Logs 中日誌串流的名稱。作為名稱的一部分，您可以使用 `{instance_id}`、`{hostname}`、`{local_hostname}` 和 `{ip_address}` 作為名稱中的變數。`{hostname}` 會從 EC2 中繼資料擷取主機名稱，而 `{local_hostname}` 會使用網路組態檔案中的主機名稱。

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

        若日誌串流尚未存在，則會自動建立。
      + `event_format` - 選用。指定在 CloudWatch Logs 中存放 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`，以便其能夠設定保留政策。
**警告**  
如果您為已存在的日誌群組設定 `retention_in_days`，則該日誌群組中在您指定的天數之前發布的所有日誌都將遭到刪除。例如，將其設定為 3 會導致超過 3 天之前的所有日誌遭到刪除。
+ `log_stream_name` - 選用。指定預設的日誌串流名稱，以用於在 `collect_list` 項目內的 `log_stream_name` 參數中沒有定義個別日誌串流名稱的任何日誌或 Windows 事件。
+ `endpoint_override` – 指定 FIPS 端點或私有連結，作為代理程式傳送日誌的目標端點。指定此欄位和設定私有連結，可讓您將日誌傳送到 Amazon VPC 端點。如需詳細資訊，請參閱[什麼是 Amazon VPC？](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)。

  `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。如需詳細資訊，請參閱[將指標、日誌和追蹤傳送到不同帳戶](CloudWatch-Agent-common-scenarios.md#CloudWatch-Agent-send-to-different-AWS-account)。此處若有指定，會覆寫組態檔案中 `agent` 區段指定的 `role_arn` (如果有)。
+ `metrics_collected` – 此欄位包含若干區段，用於指定代理程式來收集日誌，以啟用 CloudWatch Application Signals 和 Container Insights 等使用案例，它們具有 Amazon EKS 的增強可觀測性。
  + `application_signals` (選用) 指定您要啟用 [CloudWatch Application Signals](CloudWatch-Application-Monitoring-Sections.md) 如需此組態的詳細資訊，請參閱 [啟用 CloudWatch Application Signals](CloudWatch-Agent-Application_Signals.md)。
  + `kubernetes` – 此欄位可包含 `enhanced_container_insights` 參數，您可使用該參數啟用 Container Insights 搭配 Amazon EKS 的增強可觀測性。
    + `enhanced_container_insights` – 將此項設定為 `true`，以啟用 Container Insights 搭配 Amazon EKS 的增強可觀測性。如需詳細資訊，請參閱[適用於 Amazon EKS 的具備增強之可觀測性的 Container Insights](container-insights-detailed-metrics.md)。
    + `accelerated_compute_metrics` – 將此設定為 `false`，以選擇退出，不在 Amazon EKS 叢集上收集 Nvidia GPU 指標。如需詳細資訊，請參閱[NVIDIA GPU 指標](Container-Insights-metrics-enhanced-EKS.md#Container-Insights-metrics-EKS-GPU)。
  + `emf` — 若要收集日誌中內嵌的指標，已不再需要新增此 `emf` 欄位。這是一個舊版欄位，指定要收集內嵌指標格式之日誌的代理程式。您可以從這些記錄產生測量結果資料。如需詳細資訊，請參閱[在日誌中內嵌指標](CloudWatch_Embedded_Metric_Format.md)。
  + `otlp` – 選用。指定您要從 OpenTelemetry SDK 中收集指標。如需您可以在本節中使用之欄位的詳細資訊，請參閱 [使用 OpenTelemetry 收集指標和追蹤](CloudWatch-Agent-OpenTelemetry-metrics.md)。

以下是 `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"
                   },
                   {
                       "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_ids": [
                           1001,
                           1008
                       ],
                       "log_group_name": "System",
                       "log_stream_name": "System"
                   },
                   {
                       "event_name": "CustomizedName",
                       "event_levels": [
                           "INFORMATION",
                           "ERROR"
                       ],
                       "log_group_name": "CustomizedLogGroup",
                       "log_stream_name": "CustomizedLogStream"
                   },
                   {
                       "event_name": "Application",
                       "event_levels": [
                           "INFORMATION",
                           "ERROR"
                       ],
                       "event_ids":[
                            7369,
                            5624
                       ],
                       "log_group_name": "CustomizedLogGroup",
                       "log_stream_name": "CustomizedLogStream"
                   }
               ]
           }
       },
       "log_stream_name": "my_log_stream_name",
       "metrics_collected": {
        "kubernetes": {
        "enhanced_container_insights": true
      }
    }
  }
```

## CloudWatch 代理程式組態檔案：「追蹤」區段
<a name="CloudWatch-Agent-Configuration-File-Tracessection"></a>

透過將 `traces` 區段新增至 CloudWatch 代理程式組態檔案，您可以啟用 CloudWatch Application Signals，或從 X-Ray 和 OpenTelemetry 檢測 SDK 中收集追蹤，然後將它們傳送至 X-Ray。

**重要**  
代理程式的 IAM 角色或 IAM 使用者必須具有 **AWSXrayWriteOnlyAccess** 政策，才能將追蹤資料傳送到 X-Ray。

如需收集追蹤的快速入門，只需將下列項目新增至 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 Application Signals](CloudWatch-Application-Monitoring-Sections.md) 如需此組態的詳細資訊，請參閱 [啟用 CloudWatch Application Signals](CloudWatch-Agent-Application_Signals.md)。
  + `xray` - 選用。指定您要從 X-Ray SDK 中收集追蹤。此區段可以包含下列欄位：
    + `bind_address` – 選用。指定用於偵聽 X-Ray 追蹤的 CloudWatch 代理程式的 UDP 地址。格式是 `ip:port`。此地址必須與 X-Ray SDK 中設定的地址相符。

      如果您省略此欄位，預設為使用 `127.0.0.1:2000`。
    + `tcp_proxy` - 選用。設定用於支援 X-Ray 遠端取樣的代理地址。如需詳細資訊，請參閱 X-Ray 文件中的[設定取樣規則](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html)。

      此區段可以包含下列欄位。
      + `bind_address` - 選用。指定 CloudWatch 代理程式應為代理設定的 TCP 地址。格式是 `ip:port`。此地址必須與 X-Ray SDK 中設定的地址相符。

        如果您省略此欄位，預設為使用 `127.0.0.1:2000`。
  + `otlp` - 選用。指定您要從 OpenTelemetry SDK 中收集追蹤。如需您可以在本節中使用之欄位的詳細資訊，請參閱 [使用 OpenTelemetry 收集指標和追蹤](CloudWatch-Agent-OpenTelemetry-metrics.md)。如需 AWS Distro for OpenTelemetry 的詳細資訊，請參閱 [AWS Distro for OpenTelemetry](https://aws.amazon.com/otel/)。如需 AWS Distro for OpenTelemetry SDKs的詳細資訊，請參閱[簡介](https://aws-otel.github.io/docs/introduction)。

    此區段可以包含下列欄位：
    + `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` - 選用。指定 FIPS 端點或私有連結，作為 CloudWatch 代理程式傳送追蹤的端點。指定此欄位並設定私有連結，可讓您將追蹤傳送到 Amazon VPC 端點。如需詳細資訊，請參閱[什麼是 Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)。

  `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。如需詳細資訊，請參閱[將指標、日誌和追蹤傳送到不同帳戶](CloudWatch-Agent-common-scenarios.md#CloudWatch-Agent-send-to-different-AWS-account)。此處若有指定，會覆寫組態檔案中 `agent` 區段指定的 `role_arn` (如果有)。
+ `transit_spans_in_otlp_format` - 選用。如果為 `true`，系統會以 OpenTelemetry Protocol 格式將追蹤傳送至 X-Ray，以支援 Transaction Search 中的範圍事件。如需詳細資訊，請參閱[新增自訂屬性](CloudWatch-Transaction-Search-add-custom-attributes.md)。預設值為 `false`。

## CloudWatch 代理程式組態檔案：完整範例
<a name="CloudWatch-Agent-Configuration-File-Complete-Example"></a>

以下是適用於 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 代理程式組態檔案
<a name="Saving-Agent-Configuration-File"></a>

如果您手動建立或編輯 CloudWatch 代理程式組態檔案，您可以給予它任何名稱。在您建立檔案後，您可以將此檔案複製到其他您希望執行代理程式的伺服器。

## 將 CloudWatch 代理程式組態檔案上傳至 Systems Manager 參數存放區
<a name="Upload-CloudWatch-Agent-Configuration-To-Parameter-Store"></a>

若您計劃使用 SSM Agent 在伺服器上安裝 CloudWatch 代理程式，在您手動編輯 CloudWatch 代理程式組態檔案後，您可以將其上傳到 Systems Manager 參數存放區。若要這樣做，您可以使用 Systems Manager `put-parameter` 命令。

若要能夠將檔案存放於參數存放區，您必須使用具有足夠許可的 IAM 角色。

使用以下命令，其中的 *parameter name* (參數名稱) 是參數存放區中要用於此檔案的名稱，而 *configuration\$1file\$1pathname* 是您已編輯的組態檔案的路徑和檔案名稱。

```
aws ssm put-parameter --name "parameter name" --type "String" --value file://configuration_file_pathname
```