

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# CloudWatch 指标
<a name="cloudwatch-metrics-component"></a>

亚马逊 CloudWatch 指标组件 (`aws.greengrass.Cloudwatch`) 将来自Greengrass核心设备的自定义指标发布到亚马逊。 CloudWatch该组件使组件能够发布 CloudWatch 指标，您可以使用这些指标来监控和分析 Greengrass 核心设备的环境。有关更多信息，请参阅[亚马逊* CloudWatch 用户指南中的使用亚马逊 CloudWatch*指标](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。

要使用此组件发布 CloudWatch 指标，请向该组件订阅的主题发布一条消息。默认情况下，此组件订阅 `cloudwatch/metric/put`[local publish/subscribe](ipc-publish-subscribe.md) 主题。部署此组件时，您可以指定其他主题，包括 AWS IoT Core MQTT 主题。

该组件对位于同一命名空间中的指标进行批处理，并定期将其发布到 CloudWatch 。

**注意**  
此组件提供的功能与 AWS IoT Greengrass V1 中的 CloudWatch 指标连接器类似。有关更多信息，请参阅《*AWS IoT Greengrass V1 开发者指南*》中的[CloudWatch 指标连接器](https://docs.aws.amazon.com/greengrass/latest/developerguide/cloudwatch-metrics-connector.html)。

**Topics**
+ [版本](#cloudwatch-metrics-component-versions)
+ [Type](#cloudwatch-metrics-component-type)
+ [操作系统](#cloudwatch-metrics-component-os-support)
+ [要求](#cloudwatch-metrics-component-requirements)
+ [依赖项](#cloudwatch-metrics-component-dependencies)
+ [配置](#cloudwatch-metrics-component-configuration)
+ [输入数据](#cloudwatch-metrics-component-input-data)
+ [输出数据](#cloudwatch-metrics-component-output-data)
+ [许可证](#cloudwatch-metrics-component-licenses)
+ [本地日志文件](#cloudwatch-metrics-component-log-file)
+ [更改日志](#cloudwatch-metrics-component-changelog)
+ [另请参阅](#cloudwatch-metrics-component-see-also)

## 版本
<a name="cloudwatch-metrics-component-versions"></a>

此组件具有以下版本：
+ 4.0.x
+ 3.2.x
+ 3.1.x
+ 3.0.x
+ 2.1.x
+ 2.0.x

有关每个组件版本中的更改的信息，请参阅[更改日志](#cloudwatch-metrics-component-changelog)。

## Type
<a name="cloudwatch-metrics-component-type"></a>

------
#### [ v4.x - v3.x ]

<a name="public-component-type-generic"></a>此<a name="public-component-type-generic-phrase"></a>组件是一个通用组件 (`aws.greengrass.generic`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 运行组件的生命周期脚本。

------
#### [ v2.x ]

<a name="public-component-type-lambda"></a>此<a name="public-component-type-lambda-phrase"></a>组件是一个 Lambda 组件 (`aws.greengrass.lambda`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 使用 [Lambda 启动程序组件](lambda-launcher-component.md)运行此组件的 Lambda 函数。

------

<a name="public-component-type-more-information"></a>有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="cloudwatch-metrics-component-os-support"></a>

------
#### [ v4.x - v3.x ]

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

------
#### [ v2.x ]

此组件只能安装在 Linux 核心设备上。

------

## 要求
<a name="cloudwatch-metrics-component-requirements"></a>

此组件具有以下要求：

------
#### [ v4.x - v3.x ]
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ 必须安装以下 Python 库（包括任何依赖项），并且可供运行该组件的用户使用：
  + [适用于 Python 的AWS IoT Device SDK v2](https://github.com/aws/aws-iot-device-sdk-python-v2)
  + [适用于 Python (Boto3) 的 AWS SDK](http://boto.readthedocs.org/en/latest/ref/)
**注意**  
您可以将`UseInstaller`配置设置为，以便将这些库自动安装`true`到提供的 Python 环境中。
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `cloudwatch:PutMetricData` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "cloudwatch:PutMetricData"
        ],
        "Effect": "Allow",
        "Resource": "*"
      }
    ]
  }
  ```

------

  有关更多信息，请参阅《[亚马逊* CloudWatch 用户指南》中的亚马逊 CloudWatch*权限参考](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html)。

------
#### [ 2.x ]
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `cloudwatch:PutMetricData` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "cloudwatch:PutMetricData"
        ],
        "Effect": "Allow",
        "Resource": "*"
      }
    ]
  }
  ```

------

  有关更多信息，请参阅《[亚马逊* CloudWatch 用户指南》中的亚马逊 CloudWatch*权限参考](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html)。
+ <a name="connector-component-legacy-subscription-router-dependency"></a>要接收此组件的输出数据，在部署此组件时，必须合并[旧版订阅路由器组件](legacy-subscription-router-component.md) (`aws.greengrass.LegacySubscriptionRouter`) 的以下配置更新。此配置指定此组件发布响应的主题。

------
#### [ Legacy subscription router v2.1.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-cloudwatch": {
        "id": "aws-greengrass-cloudwatch",
        "source": "component:aws.greengrass.Cloudwatch",
        "subject": "cloudwatch/metric/put/status",
        "target": "cloud"
      }
    }
  }
  ```

------
#### [ Legacy subscription router v2.0.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-cloudwatch": {
        "id": "aws-greengrass-cloudwatch",
        "source": "arn:aws:lambda:region:aws:function:aws-greengrass-cloudwatch:version",
        "subject": "cloudwatch/metric/put/status",
        "target": "cloud"
      }
    }
  }
  ```<a name="connector-component-legacy-subscription-router-dependency-replace"></a>
  + *region*替换为 AWS 区域 你使用的。
  + *version*替换为该组件运行的 Lambda 函数的版本。要查找 Lambda 函数版本，您必须查看要部署的此组件版本配方。在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中打开此组件的详细信息页面，然后查找 **Lambda 函数**键值对。此键值对包含 Lambda 函数的名称和版本。

**重要**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
每次部署此组件时，都必须更新旧版订阅路由器上的 Lambda 函数版本。这样能够确保为部署的组件版本使用正确的 Lambda 函数版本。

------

  <a name="connector-component-create-deployments"></a>有关更多信息，请参阅 [创建部署](create-deployments.md)。

------

### 端点和端口
<a name="cloudwatch-metrics-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口： | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `monitoring.region.amazonaws.com`  | 443 | 是 |  上传 CloudWatch 指标。  | 

## 依赖项
<a name="cloudwatch-metrics-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#cloudwatch-metrics-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 4.0.0 - 3.0.0 ]

下表列出了此组件的 4.0.0 到 3.0.0 版本的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 2.1.4 - 2.1.9 ]

下表列出了此组件版本 2.1.4 到 2.1.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.4 - 2.1.8 ]

下表列出了此组件的版本 2.1.4 至 2.1.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.2 - 2.1.3 ]

下表列出了此组件的版本 2.1.2 和 2.1.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.1 ]

下表列出了此组件的版本 2.1.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.8 - 2.1.0 ]

下表列出了此组件的版本 2.0.8 至 2.1.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.7 ]

下表列出了此组件的版本 2.0.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.6 ]

下表列出了此组件的版本 2.0.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.5 ]

下表列出了此组件的版本 2.0.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.4 ]

下表列出了此组件的版本 2.0.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.3 ]

下表列出了此组件的版本 2.0.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | >=1.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | >=1.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=1.0.0  | 硬性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="cloudwatch-metrics-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

------
#### [ v4.x ]

 `PublishInterval`   
（可选）组件发布给定命名空间的批处理指标之前等待的最长秒数。要将组件配置为在收到指标时发布它们，即不进行批处理，请指定 `0`。  
该组件在同一命名空间中收到 20 个指标之后或在您指定的间隔之后发布到。 CloudWatch   
组件不指定事件的发布顺序。
此值最多可以是 900 秒。  
默认值：10 秒

 `MaxMetricsToRetain`   
（可选）组件将指标替换为新指标之前，所有命名空间内可在内存中保存的指标的最大数量。  
此限制适用于核心设备无法连接互联网的情况，以便组件缓冲指标供稍后发布。缓冲区已满时，组件会将最旧的指标替换为较新的指标。给定命名空间中的指标仅替换同一命名空间中的指标。  
如果组件的主机进程中断，则组件不会保存指标。例如，在部署或核心设备重新启动期间，可能会发生此情况。
此值必须至少为 2,000 个指标。  
默认值：5,000 个指标

`InputTopic`  
（可选）组件订阅以接收消息的主题。如果您为 `PubSubToIoTCore` 指定 `true`，则可以在本主题中使用 MQTT 通配符（\$1 和 \$1）。  
默认值：`cloudwatch/metric/put`

`OutputTopic`  
（可选）组件向其发布状态响应的主题。  
默认值：`cloudwatch/metric/put/status`

`PubSubToIoTCore`  
（可选）字符串值，用于定义是否发布和订阅 AWS IoT Core MQTT 主题。支持的值为 `true` 和 `false`。  
默认值：`false`

`LogLevel`  
（组件）组件的日志记录级别。从以下日志级别中选择，此处按级别顺序列出：  
+ `DEBUG`
+ `INFO`
+ `WARNING`
+ `ERROR`
+ `CRITICAL`
默认值：`INFO`

 `UseInstaller`   
（可选）布尔值，用于定义是否使用安装程序脚本将此组件的 Python 依赖项安装到提供的 Python 环境中。  
将此值设置`true`为可自动安装此组件的 Python 依赖项。如果设置为`false`，则必须安装以下库（包括所有依赖项），并使其可供提供给运行该组件的用户的 Python 环境使用。  
+ [适用于 Python 的AWS IoT Device SDK v2](https://github.com/aws/aws-iot-device-sdk-python-v2)
+ [适用于 Python (Boto3) 的 AWS SDK](http://boto.readthedocs.org/en/latest/ref/)
默认值：`false`

`PublishRegion`  
（可选） AWS 区域 要向其发布 CloudWatch 指标的。此值覆盖核心设备的默认区域。此参数仅是跨区域指标的必需参数。

`accessControl`  
（可选）包含允许组件发布和订阅指定主题的[授权策略](interprocess-communication.md#ipc-authorization-policies)的对象。如果您为 `InputTopic` 和 `OutputTopic` 指定了自定义值，则必须更新此对象中的资源值。  
默认值：  

```
{
  "aws.greengrass.ipc.pubsub": {
    "aws.greengrass.Cloudwatch:pubsub:1": {
      "policyDescription": "Allows access to subscribe to input topics.",
      "operations": [
        "aws.greengrass#SubscribeToTopic"
      ],
      "resources": [
        "cloudwatch/metric/put"
      ]
    },
    "aws.greengrass.Cloudwatch:pubsub:2": {
      "policyDescription": "Allows access to publish to output topics.",
      "operations": [
        "aws.greengrass#PublishToTopic"
      ],
      "resources": [
        "cloudwatch/metric/put/status"
      ]
    }
  },
  "aws.greengrass.ipc.mqttproxy": {
    "aws.greengrass.Cloudwatch:mqttproxy:1": {
      "policyDescription": "Allows access to subscribe to input topics.",
      "operations": [
        "aws.greengrass#SubscribeToIoTCore"
      ],
      "resources": [
        "cloudwatch/metric/put"
      ]
    },
    "aws.greengrass.Cloudwatch:mqttproxy:2": {
      "policyDescription": "Allows access to publish to output topics.",
      "operations": [
        "aws.greengrass#PublishToIoTCore"
      ],
      "resources": [
        "cloudwatch/metric/put/status"
      ]
    }
  }
}
```

**Example 示例：配置合并更新**  

```
{
  "PublishInterval": 0,
  "PubSubToIoTCore": true
}
```

------
#### [ v3.x ]

 `PublishInterval`   
（可选）组件发布给定命名空间的批处理指标之前等待的最长秒数。要将组件配置为在收到指标时发布它们，即不进行批处理，请指定 `0`。  
该组件在同一命名空间中收到 20 个指标之后或在您指定的间隔之后发布到。 CloudWatch   
组件不指定事件的发布顺序。
此值最多可以是 900 秒。  
默认值：10 秒

 `MaxMetricsToRetain`   
（可选）组件将指标替换为新指标之前，所有命名空间内可在内存中保存的指标的最大数量。  
此限制适用于核心设备无法连接互联网的情况，以便组件缓冲指标供稍后发布。缓冲区已满时，组件会将最旧的指标替换为较新的指标。给定命名空间中的指标仅替换同一命名空间中的指标。  
如果组件的主机进程中断，则组件不会保存指标。例如，在部署或核心设备重新启动期间，可能会发生此情况。
此值必须至少为 2,000 个指标。  
默认值：5,000 个指标

`InputTopic`  
（可选）组件订阅以接收消息的主题。如果您为 `PubSubToIoTCore` 指定 `true`，则可以在本主题中使用 MQTT 通配符（\$1 和 \$1）。  
默认值：`cloudwatch/metric/put`

`OutputTopic`  
（可选）组件向其发布状态响应的主题。  
默认值：`cloudwatch/metric/put/status`

`PubSubToIoTCore`  
（可选）字符串值，用于定义是否发布和订阅 AWS IoT Core MQTT 主题。支持的值为 `true` 和 `false`。  
默认值：`false`

`LogLevel`  
（组件）组件的日志记录级别。从以下日志级别中选择，此处按级别顺序列出：  
+ `DEBUG`
+ `INFO`
+ `WARNING`
+ `ERROR`
+ `CRITICAL`
默认值：`INFO`

`UseInstaller`  
（可选）布尔值，用于定义是否使用安装程序脚本将此组件的 Python 依赖项安装到提供的 Python 环境中。  
将此值设置`false`为可使用自定义脚本或手动安装依赖项。如果设置为`false`，则必须安装以下库（包括所有依赖项），并使其可供提供给运行该组件的用户的 Python 环境使用。  
+ [适用于 Python 的AWS IoT Device SDK v2](https://github.com/aws/aws-iot-device-sdk-python-v2)
+ [适用于 Python (Boto3) 的 AWS SDK](http://boto.readthedocs.org/en/latest/ref/)
默认值：`true`

`PublishRegion`  
（可选） AWS 区域 要向其发布 CloudWatch 指标的。此值覆盖核心设备的默认区域。此参数仅是跨区域指标的必需参数。

`accessControl`  
（可选）包含允许组件发布和订阅指定主题的[授权策略](interprocess-communication.md#ipc-authorization-policies)的对象。如果您为 `InputTopic` 和 `OutputTopic` 指定了自定义值，则必须更新此对象中的资源值。  
默认值：  

```
{
  "aws.greengrass.ipc.pubsub": {
    "aws.greengrass.Cloudwatch:pubsub:1": {
      "policyDescription": "Allows access to subscribe to input topics.",
      "operations": [
        "aws.greengrass#SubscribeToTopic"
      ],
      "resources": [
        "cloudwatch/metric/put"
      ]
    },
    "aws.greengrass.Cloudwatch:pubsub:2": {
      "policyDescription": "Allows access to publish to output topics.",
      "operations": [
        "aws.greengrass#PublishToTopic"
      ],
      "resources": [
        "cloudwatch/metric/put/status"
      ]
    }
  },
  "aws.greengrass.ipc.mqttproxy": {
    "aws.greengrass.Cloudwatch:mqttproxy:1": {
      "policyDescription": "Allows access to subscribe to input topics.",
      "operations": [
        "aws.greengrass#SubscribeToIoTCore"
      ],
      "resources": [
        "cloudwatch/metric/put"
      ]
    },
    "aws.greengrass.Cloudwatch:mqttproxy:2": {
      "policyDescription": "Allows access to publish to output topics.",
      "operations": [
        "aws.greengrass#PublishToIoTCore"
      ],
      "resources": [
        "cloudwatch/metric/put/status"
      ]
    }
  }
}
```

**Example 示例：配置合并更新**  

```
{
  "PublishInterval": 0,
  "PubSubToIoTCore": true
}
```

------
#### [ v2.x ]

**注意**  <a name="connector-component-lambda-parameters"></a>
此组件的默认配置包括 Lambda 函数参数。我们建议您只编辑以下参数，以便在您的设备上配置此组件。

 `lambdaParams`   
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息：    
 `EnvironmentVariables`   
包含 Lambda 函数的参数的对象。该对象包含以下信息：    
 `PUBLISH_INTERVAL`   
（可选）组件发布给定命名空间的批处理指标之前等待的最长秒数。要将组件配置为在收到指标时发布它们，即不进行批处理，请指定 `0`。  
该组件在同一命名空间中收到 20 个指标之后或在您指定的间隔之后发布到。 CloudWatch   
组件不保证事件的发布顺序。
此值最多可以是 900 秒。  
默认值：10 秒  
 `MAX_METRICS_TO_RETAIN`   
（可选）组件将指标替换为新指标之前，所有命名空间内可在内存中保存的指标的最大数量。  
此限制适用于核心设备无法连接互联网的情况，以便组件缓冲指标供稍后发布。缓冲区已满时，组件会将最旧的指标替换为较新的指标。给定命名空间中的指标仅替换同一命名空间中的指标。  
如果组件的主机进程中断，则组件不会保存指标。例如，在部署或核心设备重新启动期间，可能会发生此情况。
此值必须至少为 2,000 个指标。  
默认值：5,000 个指标  
 `PUBLISH_REGION`   
（可选） AWS 区域 要向其发布 CloudWatch 指标的。此值覆盖核心设备的默认区域。此参数仅是跨区域指标的必需参数。

`containerMode`  <a name="connector-component-container-mode-parameter"></a>
（可选）此组件的容器化模式。从以下选项中进行选择：  <a name="lambda-function-component-container-mode-parameter"></a>
+ `NoContainer` – 该组件不在隔离的运行时环境中运行。
+ `GreengrassContainer`— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。
默认值：`GreengrassContainer`

 `containerParams`   
<a name="connector-component-container-params-description"></a>（可选）包含此组件的容器参数的对象。如果您为 `containerMode` 指定 `GreengrassContainer`，则该组件使用这些参数。  
该对象包含以下信息：    
 `memorySize`   
<a name="connector-component-container-params-memory-size-description"></a>（可选）要分配给组件的内存量（以千字节为单位）。  
默认为 64 MB（65,535 KB）。

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
（可选）包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是从 AWS IoT Core 还是本地 publish/subscribe 主题订阅 MQTT 主题。  
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`type`  
（可选）此组件用于订阅 publish/subscribe 消息的消息类型。从以下选项中进行选择：  
+ `PUB_SUB` – 订阅本地发布/订阅消息。如果选择此选项，主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。
+ `IOT_CORE`— 订阅 AWS IoT Core MQTT 消息。如果选择此选项，主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
默认值：`PUB_SUB`  
`topic`  
（可选）组件订阅以接收消息的主题。如果您为 `type` 指定 `IotCore`，则可以在本主题中使用 MQTT 通配符（`+` 和 `#`）。

**Example 示例：配置合并更新（容器模式）**  

```
{
  "containerMode": "GreengrassContainer"
}
```

**Example 示例：配置合并更新（无容器模式）**  

```
{
  "containerMode": "NoContainer"
}
```

------

## 输入数据
<a name="cloudwatch-metrics-component-input-data"></a>

此组件接受有关以下主题的指标并将这些指标发布到 CloudWatch。<a name="connector-component-local-publish"></a>默认情况下，此组件订阅本地 publish/subscribe 消息。有关如何从您的自定义组件向此组件发布消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。

从组件版本 v3.0.0 开始，您可以选择通过将 `PubSubToIoTCore` 配置参数设置为 `true` 来将此组件配置为订阅 MQTT 主题。有关在自定义组件中向 MQTT 主题发布消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。

 **默认主题：**`cloudwatch/metric/put`

<a name="connector-component-input-properties"></a>消息接受以下属性。输入消息必须采用 JSON 格式。

 `request`   
此消息中的指标。  
请求对象包含要发布到 CloudWatch 的指标数据。指标值必须符合 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html) 操作的规范。  
类型：包含以下信息的 `object`：    
 `namespace`   
此请求中指标数据的用户定义命名空间。 CloudWatch 使用命名空间作为指标数据点的容器。  
不能指定以保留字符串 `AWS/` 开头的命名空间。
类型：`string`  
有效模式：`[^:].*`  
 `metricData`   
指标的数据。  
类型：包含以下信息的 `object`：    
 `metricName`   
指标的名称。  
类型：`string`  
 `value`   
指标的值。  
CloudWatch 拒绝太小或太大的值。该值必须介于`8.515920e-109`和`1.174271e+108`（基数 10）或`2e-360`和`2e360`（基数 2）之间。 CloudWatch 不支持特殊值`NaN`，例如`+Infinity`、和`-Infinity`。
类型：`double`  
 `dimensions`   
（可选）指标的维度。维度提供有关指标及其数据的附加信息。指标最多可定义 10 个维度。  
此组件自动包含一个名为 `coreName` 的维度，其中的值是核心设备的名称。  
类型：对象的 `array`，每个对象都包含以下信息：    
 `name`   
（可选）维度名称。  
类型：`string`  
 `value`   
（可选）维度值。  
类型：`string`  
 `timestamp`   
（可选）接收指标数据的时间，以 Unix 纪元时间（以秒为单位）表示。  
默认为组件收到消息的时间。  
类型：`double`  
如果您使用此组件的版本 2.0.3 到版本 2.0.7，我们建议您在从单一来源发送多个指标时分别检索每个指标的时间戳。不要使用变量来存储时间戳。  
 `unit`   
（可选）指标的单位。  
类型：`string`  
有效值：`Seconds`、`Microseconds`、`Milliseconds`、`Bytes`、`Kilobytes`、`Megabytes`、`Gigabytes`、`Terabytes`、`Bits`、`Kilobits`、`Megabits`、`Gigabits`、`Terabits`、`Percent`、`Count`、`Bytes/Second`、`Kilobytes/Second`、`Megabytes/Second`、`Gigabytes/Second`、`Terabytes/Second`、`Bits/Second`、`Kilobits/Second`、`Megabits/Second`、`Gigabits/Second`、`Terabits/Second`、`Count/Second`、`None`  
默认值为 `None`。

**注意**  
适用于 CloudWatch `PutMetricData` API 的所有配额都适用于您使用此组件发布的指标。以下配额尤其重要：  
API 有效载荷的 40 KB 限制
每个 API 请求的 20 个指标
`PutMetricData` API 的每秒 150 个事务 (TPS)
有关更多信息，请参阅《*CloudWatch 用户指南》*中的[CloudWatch 服务配额](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)。

**Example 示例输入**  

```
{
  "request": {
    "namespace": "Greengrass",
    "metricData": {
      "metricName": "latency",
      "dimensions": [
        {
          "name": "hostname",
          "value": "test_hostname"
        }
      ],
      "timestamp": 1539027324,
      "value": 123.0,
      "unit": "Seconds"
    }
  }
}
```

## 输出数据
<a name="cloudwatch-metrics-component-output-data"></a>

 <a name="connector-component-output-data-pubsub"></a>默认情况下，此组件将响应作为以下本地 publish/subscribe 主题的输出数据发布。有关如何在自定义组件中订阅此主题消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。

您可以选择通过将 `PubSubToIoTCore` 配置参数设置为 `true` 来将此组件配置为发布到 MQTT 主题。有关在自定义组件中订阅 MQTT 主题消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。

**注意**  
默认情况下，组件版本 2.0.x 会将响应作为输出数据发布到 MQTT 主题。您必须在[旧版订阅路由器组件](legacy-subscription-router-component.md)的配置中将主题指定为 `subject`。

 **默认主题：**`cloudwatch/metric/put/status`

**Example 示例输出：成功**  
响应包括指标数据的命名空间和 CloudWatch 响应中的`RequestId`字段。  

```
{
  "response": {
    "cloudwatch_rid": "70573243-d723-11e8-b095-75ff2EXAMPLE",
    "namespace": "Greengrass",
    "status": "success"
  }
}
```

**Example 示例输出：失败**  

```
{
  "response" : {
    "namespace": "Greengrass",
    "error": "InvalidInputException",
    "error_message": "cw metric is invalid",
    "status": "fail"
  }
}
```

**注意**  <a name="connector-component-retryable-error"></a>
如果组件检测到可以重试的错误（例如连接错误），它会在下一次批处理中重试发布。

## 许可证
<a name="cloudwatch-metrics-component-licenses"></a>

此组件包含以下第三方软件/许可：<a name="boto-3-licenses"></a>
+ [适用于 Python (Boto3) 的 AWS SDK](https://pypi.org/project/boto3/)/Apache 许可证 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache 许可证 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF 许可证
+ [docutils](https://pypi.org/project/docutils/)/BSD 许可证，GNU 通用公共许可证 (GPL)，Python 软件基金会许可证，公共领域
+ [jmespath](https://pypi.org/project/jmespath/)/MIT 许可证
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache 许可证 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT 许可证

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 本地日志文件
<a name="cloudwatch-metrics-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.Cloudwatch.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.Cloudwatch.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.Cloudwatch.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.Cloudwatch.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="cloudwatch-metrics-component-changelog"></a>

下表介绍每个组件版本的更改。

------
#### [ v4.x - v3.x ]


|  **版本**  |  **更改**  | 
| --- | --- | 
|  4.0.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  3.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  3.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  3.0.0  |  <a name="changelog-cloudwatch-metrics-3.0.0-major-version-changes"></a>此版本的 CloudWatch 指标组件需要的配置参数与版本 2.x 不同。如果您为版本 2.x 使用非默认配置，并且想要从 v2.x 升级到 v3.x，则必须更新该组件的配置。有关更多信息，请参阅[CloudWatch指标组件配置](#cloudwatch-metrics-component-configuration)。 <a name="changelog-cloudwatch-metrics-3.0.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 

------
#### [ v2.x ]


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.8  |  对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。  | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。  | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.1  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  2.0.8  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  2.0.7  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.5  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.4  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.3  |  初始版本。  | 

------

## 另请参阅
<a name="cloudwatch-metrics-component-see-also"></a>
+ [使用亚马逊* CloudWatch 用户指南中的亚马逊 CloudWatch*指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)
+ [PutMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)在 *Amazon CloudWatch API 参考*中