

# 使用 StatsD 检索自定义指标
<a name="CloudWatch-Agent-custom-metrics-statsd"></a>

您可以将 CloudWatch 代理和 `StatsD` 协议结合使用，以从应用程序或服务中检索附加的自定义指标。StatSD 是一种流行的开源解决方案，可以从各种应用程序中收集指标。StatSD 对于检测您自己的指标特别有用。有关将 CloudWatch 代理和 StatSD 结合使用的示例，请参阅[如何使用 Amazon CloudWatch 代理更好地监控您的自定义应用程序指标](https://aws.amazon.com/blogs/devops/new-how-to-better-monitor-your-custom-application-metrics-using-amazon-cloudwatch-agent/)。

`StatsD` 在 Linux 服务器以及运行 Windows Server 的服务器上受支持。CloudWatch 支持以下 `StatsD` 格式：

```
MetricName:value|type|@sample_rate|#tag1:
  value,tag1...
```
+ `MetricName` – 一个没有冒号、竖线、\$1 字符或 @ 字符的字符串。
+ `value` – 它可以是整数或浮点数。
+ `type` – 指定 `c` 表示计数器，`g` 表示计量器，`ms` 表示计时器，`h` 表示直方图，`s` 表示集合。
+ `sample_rate` –（可选）一个介于 0 和 1 之间的浮点数（含）。仅用于计数器、直方图和计时器指标。默认值为 1（采样时间为 100%）。
+ `tags` –（可选）一个逗号分隔的标签列表。`StatsD` 标签类似于 CloudWatch 中的维度。对键/值标签使用冒号，例如 `env:prod`。

您可以使用任何遵循此格式的 `StatsD` 客户端将指标发送到 CloudWatch 代理。有关一些可用 `StatsD` 客户端的更多信息，请参阅 [GitHub 上的 StatsD 客户端页面](https://github.com/etsy/statsd/wiki#client-implementations)。

要收集这些自定义指标，请将 `"statsd": {}` 行添加到代理配置文件的 `metrics_collected` 部分。您可以手动添加此行。如果您使用向导创建配置文件，向导会为您完成此操作。有关更多信息，请参阅 [创建 CloudWatch 代理配置文件](create-cloudwatch-agent-configuration-file.md)。

`StatsD` 默认配置适用于大多数用户。有一些可选字段，您可以根据需要将其添加到代理配置文件的 **statsd** 部分：
+ `service_address` – CloudWatch 代理应该侦听的服务地址。格式为 `ip:port`。如果您忽略了 IP 地址，则该代理将侦听所有可用接口。只有 UDP 格式受支持，因此您不需要指定 UDP 前缀。

  默认值为 `:8125`。
+ `metrics_collection_interval` – `StatsD` 插件运行和收集指标的频率（秒）。默认值为 10 秒。范围为 1 – 172000。
+ `metrics_aggregation_interval` – CloudWatch 将指标聚合为单个数据点的频率（秒）。默认值为 60 秒。

  例如，如果 `metrics_collection_interval` 为 10，并且 `metrics_aggregation_interval` 为 60，则 CloudWatch 每 10 秒收集数据。在每分钟之后，来自该分钟的六个数据读数被聚合到单个数据点中，该数据点被发送到 CloudWatch。

  范围为 0 – 172000。将 `metrics_aggregation_interval` 设置为 0 会禁用 `StatsD` 指标的聚合。
+ `allowed_pending_messages` – 允许排队的 UDP 消息数量。当队列已满时，StatsD 服务器会开始丢弃数据包。默认值是 10000。
+ `drop_original_metrics`：可选。如果您使用 `metrics` 部分中的 `aggregation_dimensions` 字段将指标以汇总为聚合结果，则默认情况下，代理会同时发送聚合指标和原始指标，原始指标是按维度的每个值分开的。如果您不希望将原始指标发送到 CloudWatch，则可以指定此参数和指标列表。同时指定了此参数的指标将不会将其各维度的指标报告给 CloudWatch，而只报告聚合指标。这可以减少代理要采集的指标数量，从而降低成本。

下面是代理配置文件的 **statsd** 部分的示例，使用默认端口、自定义集合和聚合间隔。

```
{
   "metrics":{
      "metrics_collected":{
         "statsd":{
            "service_address":":8125",
            "metrics_collection_interval":60,
            "metrics_aggregation_interval":300
         }
      }
   }
}
```

## 查看由 CloudWatch 代理导入的 StatsD 指标
<a name="CloudWatch-view-statsd-metrics"></a>

将 StatsD 指标导入到 CloudWatch 后，您可以以时间序列图形的形式查看这些指标，并创建可监视这些指标的告警，并在它们超出指定的阈值时通知您。以下程序介绍了如何以时间序列图形的方式查看 StatsD 指标。有关设置告警的更多信息，请参阅 [使用 Amazon CloudWatch 告警](CloudWatch_Alarms.md)。

**在 CloudWatch 控制台中查看 StatsD 指标**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择**指标**。

1. 为该代理收集的指标选择命名空间。默认情况下，该命名空间为 **CWAgent**，但您可能已经在 CloudWatch 代理配置文件中指定了不同的命名空间。

1. 选择指标维度（例如 **Per-Instance Metrics（每个实例的指标）**）。

1. **All metrics** 选项卡显示命名空间中该维度的所有指标。您可执行以下操作：

   1. 要为指标绘制图表，请选中该指标旁的复选框。要选择所有指标，请选中表的标题行中的复选框。

   1. 要对表进行排序，请使用列标题。

   1. 要按资源进行筛选，请选择资源 ID，然后选择 **Add to search**。

   1. 要按指标进行筛选，请选择指标名称，然后选择 **Add to search**。

1. （可选）要将此图表添加到 CloudWatch 控制面板，请选择 **Actions（操作）**，然后选择 **Add to dashboard（添加到控制面板）**。