

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

您可以使用 CloudWatch 代理以及 collectd 协议（该协议仅在 Linux 服务器上受支持）从应用程序或服务中检索其他指标。collectd 是一种通用的开源解决方案，其中的插件可以收集各种应用程序的系统统计数据。通过将 CloudWatch 代理可以收集的系统指标与 collectd 中的其他指标结合起来，您可以更好地监控、分析系统和应用程序并进行故障排除。有关 collectd 的更多信息，请参阅 [collectd - 系统统计数据收集守护程序](https://collectd.org/)。

您可以使用 collectd 软件将指标发送到 CloudWatch 代理。对于 collectd 指标，CloudWatch 代理充当服务器，而 collectd 插件充当客户端。

collectd 软件不会自动安装在每个服务器上。在运行 Amazon Linux 2 的服务器上，请按照下列步骤安装 collectd

```
sudo amazon-linux-extras install collectd
```

有关在其他系统上安装 collectd 的信息，请参阅 [collectd 下载页面](https://www.collectd.org/download.html)。

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

还将提供可选参数。如果您使用的是 collectd 并且未将 `/etc/collectd/auth_file` 用作 **collectd\$1auth\$1file**，则必须设置其中一些选项。
+ **service\$1address：**CloudWatch 代理应该侦听的服务地址。格式为 `"udp://ip:port`。默认值为 `udp://127.0.0.1:25826`。
+ **name\$1prefix：**附加到每个 collectd 指标名称开头的前缀。默认值为 `collectd_`。最大长度为 255 个字符。
+ **collectd\$1security\$1level：**设置网络通信的安全级别。默认值为 **encrypt (加密)**。

  **encrypt (加密)** 指定只接受加密的数据。**sign (签名)** 指定只接受已签名且加密的数据。**none (无)** 指定接受所有数据。如果为 **collectd\$1auth\$1file** 指定值，则会尽可能解密加密数据。

  有关更多信息，请参阅 collectd Wiki 中的[客户端设置](https://collectd.org/wiki/index.php/Networking_introduction#Client_setup)和[可能的交互](https://collectd.org/wiki/index.php/Networking_introduction#Possible_interactions)。
+ **collectd\$1auth\$1file** 设置用户名映射到密码的文件。这些密码用于验证签名和解密已加密的网络数据包。如果给定，则会验证签名的数据并解密加密的数据包。否则，会接受签名的数据而不检查签名，并且加密的数据不能被解密。

  默认值为 `/etc/collectd/auth_file`。

   如果 **collectd\$1security\$1level** 设置为 **none (无)**，则这是可选的。如果将 **collectd\$1security\$1level** 设置为 `encrypt` 或 **sign (签名)**，则必须指定 **collectd\$1auth\$1file**。

  对于身份验证文件的格式，每行是一个用户名，后跟一个冒号和任意数量的空格，再后跟密码。例如：

  `user1: user1_password`

  `user2: user2_password`
+ **collectd\$1typesdb**：包含数据集描述的一个或多个文件的列表。即使列表中只有一个条目，列表也必须用括号括起来。列表中的每个条目都必须用双引号括起来。如果有多个条目，请用逗号分隔。Linux 服务器上的默认值为 `["/usr/share/collectd/types.db"]`。macOS 电脑上的默认值取决于 collectd 的版本。例如 `["/usr/local/Cellar/collectd/5.12.0/share/collectd/types.db"]`。

  有关更多信息，请参阅 [https://www.collectd.org/documentation/manpages/types.db.html](https://www.collectd.org/documentation/manpages/types.db.html)。
+ **metrics\$1aggregation\$1interval：**CloudWatch 将指标聚合为单个数据点的频率（秒）。默认值为 60 秒。范围为 0 至 172,000。将它设置为 0 会禁用 collectd 指标的聚合。

下面是代理配置文件的 collectd 部分的示例。

```
{
   "metrics":{
      "metrics_collected":{
         "collectd":{
            "name_prefix":"My_collectd_metrics_",
            "metrics_aggregation_interval":120
         }
      }
   }
}
```

## 查看 CloudWatch 代理导入的已采集指标
<a name="CloudWatch-view-collectd-metrics"></a>

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

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

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/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（添加到控制面板）**。