

# 使用 OpenTelemetry 收集指标和跟踪
<a name="CloudWatch-Agent-OpenTelemetry-metrics"></a>

 可以结合使用 CloudWatch 代理和常用的开源解决方案 OpenTelemetry 协议（OTLP），从应用程序或服务收集指标和跟踪。可以使用任何 OpenTelemetry SDK 将指标和跟踪发送到 CloudWatch 代理。有关可用的 OpenTelemetry SDK 的更多信息，请参阅 [ OpenTelemetry Supported Language APIs & SDKs](https://opentelemetry.io/docs/languages/)。

要收集 OpenTelemetry 指标和跟踪，请将 `otlp` 部分添加到 CloudWatch 代理配置文件。此部分包含以下字段：
+ `grpc_endpoint`：可选。指定 CloudWatch 代理用于侦听使用 gRPC 远程过程调用发送的 OpenTelemetry 指标和跟踪信息的地址。格式为 `ip:port`。此地址必须与 OpenTelemetry SDK 中为 gRPC 导出器设置的地址相匹配。如果省略该字段，则使用 `127.0.0.1:4317` 的默认值。
+ `http_endpoint`：可选。指定 CloudWatch 代理用于侦听通过 HTTP 发送的 OpenTelemetry 指标或跟踪信息的地址。格式为 `ip:port`。此地址必须与 OpenTelemetry SDK 中为 HTTP 导出器设置的地址相匹配。如果省略该字段，则使用 `127.0.0.1:4318` 的默认值。
+ `tls`：可选。指定服务器应配置 TLS。
  + `cert_file` – 用于进行所需 TLS 连接的 TLS 证书路径。
  + `key_file` – 用于进行所需 TLS 连接的 TLS 密钥路径。

`otlp` 部分可以位于 CloudWatch 代理配置文件中的多个部分，具体取决于想要发送指标和跟踪的方式和位置。

**重要**  
每个 `otlp` 部分都需要一个唯一端点和端口。有关拆分指标和跟踪端点的详细信息，请参阅 OpenTelemetry SDK 文档中的 [OTLP Exporter Configuration](https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/)。

要向 CloudWatch 或 Amazon Managed Service for Prometheus 发送指标，请在 `metrics` 部分内的 `metrics_collected` 下添加 `otlp` 部分。有关将指标发送到不同目标的更多信息，请参阅[手动创建或编辑 CloudWatch 代理配置文件](CloudWatch-Agent-Configuration-File-Details.md)。以下示例显示了向 CloudWatch 发送指标的配置：

**注意**  
 如果在容器化环境中运行该代理，并从代理容器的网络外部发送遥测数据，请确保将端点指定为 `0.0.0.0` 而不是默认端点 `127.0.0.1`。

```
{
  "metrics": {
    "metrics_collected": {
      "otlp": {
        "grpc_endpoint": "127.0.0.1:4317",
        "http_endpoint": "127.0.0.1:4318"
      }
    }
  }
}
```

要使用嵌入式指标格式（EMF）向 Amazon CloudWatch Logs 发送指标，请在 `logs` 部分内的 `metrics_collected` 下添加 `otlp` 部分。默认情况下，这会将 EMF 日志发送到 `/aws/cwagent` 日志组和生成的日志流。默认情况下，指标会提取到 `CWAgent` 命名空间中。以下示例显示了将指标作为 EMF 日志发送到 CloudWatch Logs 的配置：

```
{
  "logs": {
    "metrics_collected": {
      "otlp": {
        "grpc_endpoint": "127.0.0.1:4317",
        "http_endpoint": "127.0.0.1:4318"
      }
    }
  }
}
```

要将跟踪发送到 AWS X-Ray，请在 `traces` 部分内的 `traces_collected` 中添加 `otlp` 部分。以下示例显示了向 X-Ray 发送跟踪的配置：

```
{
  "traces": {
    "traces_collected": {
      "otlp": {
        "grpc_endpoint": "127.0.0.1:4317",
        "http_endpoint": "127.0.0.1:4318"
      }
    }
  }
}
```