本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
OpenTelemetry Collector
OpenTelemetry Collector 是開放原始碼、與廠商無關的代理程式,可接收、處理和匯出遙測資料。它充當應用程式與 Amazon CloudWatch 之間的中央管道,從多個來源收集指標、日誌和追蹤,並使用 OpenTelemetry Protocol (OTLP) 將其傳送至 CloudWatch。
將 OpenTelemetry Collector 與 CloudWatch 搭配使用可提供下列優點:
-
透過單一代理程式從多個應用程式和主機收集遙測,減少與 CloudWatch 的連線數量。
-
在傳送至 CloudWatch 之前處理和篩選遙測,包括新增或移除屬性、批次處理資料和取樣追蹤。
-
在跨 AWS、內部部署和其他雲端環境中使用相同的收集器組態,無論應用程式在何處執行,都能提供一致的遙測管道。
-
使用可在 CloudWatch Query Studio 中使用 Prometheus 查詢語言 (PromQL) 查詢的豐富標籤,將指標傳送至 CloudWatch。
支援的接收者
OpenTelemetry Collector 支援各種接收器來擷取遙測資料。您可以使用 OpenTelemetry 接收器,例如使用 OpenTelemetry SDKs 檢測的應用程式的 OTLP 接收器,或 Prometheus 接收器從現有的 Prometheus 匯出程式中抓取指標。與 CloudWatch 搭配使用的常見 Prometheus 接收器包括:
-
Prometheus 接收器,用於抓取任何與 Prometheus 相容的端點
-
主機指標接收者,用於從主機收集系統層級指標
-
Kubernetes 叢集接收器,用於從 Kubernetes API 伺服器收集叢集層級指標
您可以在單一收集器中設定多個接收者,讓您同時收集 OpenTelemetry 和 Prometheus 指標,並透過相同的管道將其傳送至 CloudWatch。如需可用接收器的完整清單,請參閱 OpenTelemetry Collector 儲存庫
開始使用
先決條件 – 如果使用 OTLP 端點進行追蹤,請確定交易搜尋已啟用。
步驟:
-
下載最新版本的 OpenTelemetry Collector 分佈。如需詳細資訊,請參閱 OpenTelemetry Collector 版本
。 -
在主機上安裝 OpenTelemetry Collector。收集器會在任何作業系統和平台上執行。如需詳細資訊,請參閱安裝 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]