OpenTelemetry 收集器
OpenTelemetry Collector 是一个与供应商无关的开源代理,可接收、处理和导出遥测数据。该代理充当应用程序与 Amazon CloudWatch 之间的中心管道,从多个来源收集指标、日志和跟踪数据,然后使用 OpenTelemetry Protocol(OTLP)将其发送到 CloudWatch。
将 OpenTelemetry Collector 与 CloudWatch 搭配使用具有以下优势:
-
通过单个代理从多个应用程序和主机收集遥测数据,从而减少与 CloudWatch 的连接数量。
-
在将遥测数据发送到 CloudWatch 之前,对数据进行处理和筛选,包括添加或删除属性、批处理数据和采样跟踪数据。
-
在 AWS、本地和其他云环境中使用相同的收集器配置,无论应用程序在哪里运行,都能提供一致的遥测管道。
-
将带有丰富标签的指标发送到 CloudWatch,且可在 CloudWatch Query Studio 中使用 Prometheus 查询语言(PromQL)查询这些标签。
支持的接收器
OpenTelemetry Collector 支持各种用于摄取遥测数据的接收器。可以使用 OpenTelemetry 接收器,例如将 OTLP 接收器用于使用 OpenTelemetry SDK 埋点的应用程序,或者使用 Prometheus 接收器从现有 Prometheus 导出器中抓取指标。与 CloudWatch 一起使用的常见 Prometheus 接收器包括:
-
Prometheus 接收器,用于抓取任何兼容 Prometheus 的端点
-
主机指标接收器,用于从主机收集系统级指标
-
Kubernetes 集群接收器,用于从 Kubernetes API 服务器收集集群级别的指标
您可以在单个收集器中配置多个接收器,从而收集 OpenTelemetry 和 Prometheus 指标,并通过同一个管道将它们发送到 CloudWatch。有关可用接收器的完整列表,请参阅 OpenTelemetry Collector 存储库
开始使用
先决条件:如果使用 OTLP 端点进行跟踪,请确保启用事务搜索功能。
步骤:
-
下载最新版本的 OpenTelemetry Collector 发行版。有关更多信息,请参阅 OpenTelemetry Collector 版本
。 -
在主机上安装 OpenTelemetry Collector。该收集器可在任何操作系统和平台上运行。有关更多信息,请参阅 Install the Collector
。 -
在 Amazon EC2 或本地主机上配置 AWS 凭证。发送遥测数据时,该收集器使用这些凭证向 CloudWatch 进行身份验证。有关详细信息,请参阅下文。
-
为 Amazon EKS 或 Kubernetes 集群设置 AWS 凭证。开始使用 Amazon EKS 的最简单方式是使用 EKS OTel Container Insights 附加组件。如果您偏好直接使用 OpenTelemetry Collector,请按照以下步骤为 Amazon EKS 或 Kubernetes 集群设置 AWS 凭证,以向 CloudWatch 发送遥测数据。
-
在收集器配置中配置 OTLP 导出器,以将遥测数据发送到 CloudWatch 端点。请参阅以下示例。
收集器配置示例
复制并粘贴以下内容,以配置您的收集器将日志和跟踪发送到 OTLP 端点。
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint:logs_otlp_endpointheaders: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint:traces_otlp_endpointauth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "region" service: "logs" sigv4auth/traces: region: "region" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
下面是使用 sigv4 向 us-east-1 发送日志和跟踪的示例。
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: https://logs.us-east-1.amazonaws.com/v1/logs headers: x-aws-log-group: MyApplicationLogs x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: https://xray.us-east-1.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "us-east-1" service: "logs" sigv4auth/traces: region: "us-east-1" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
注意
将 OpenTelemetry SDK 配置为 always_on 采样配置,进而可靠地记录 100% 的跨度,并通过 CloudWatch Application Signals 全面了解您的关键应用程序。有关更多信息,请参阅 OpenTelemetry Java SDK 采样器配置
复制并粘贴以下内容,将您的收集器配置为向 OTLP 端点发送指标。
receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint:metrics_otlp_endpointauth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "region" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
下面是使用 sigv4 向 us-east-1 发送指标的示例。
receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics:443" auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "us-east-1" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]