Recolector de OpenTelemetry
OpenTelemetry Collector es un agente de código abierto, independiente del proveedor, que recibe, procesa y exporta datos de telemetría. Actúa como un canal central entre sus aplicaciones y Amazon CloudWatch, ya que recopila métricas, registros y seguimientos de varios orígenes y los envía a CloudWatch mediante OpenTelemetry Protocol (OTLP).
Usar OpenTelemetry Collector con CloudWatch proporciona los siguientes beneficios:
-
Recopile la telemetría de varias aplicaciones y hosts a través de un único agente, lo que reduce el número de conexiones a CloudWatch.
-
Procese y filtre la telemetría antes de enviarla a CloudWatch, lo que incluye agregar o eliminar atributos, agrupar datos por lotes y muestrear seguimientos.
-
Utilice la misma configuración de recopilador en AWS, en entornos locales y en otros entornos de nube, lo que proporciona una canalización de los datos telemétricos consistente independientemente del lugar en el que funcionen las aplicaciones.
-
Envíe las métricas a CloudWatch con etiquetas enriquecidas que estén disponibles para consultarlas mediante el lenguaje de consultas Prometheus (PromQL) en CloudWatch Query Studio.
Receptores compatibles
OpenTelemetry Collector admite una amplia gama de receptores para la ingesta de datos de telemetría. Puede utilizar receptores de OpenTelemetry, como el receptor OTLP para aplicaciones equipadas con los SDK de OpenTelemetry, o los receptores Prometheus para extraer métricas de los exportadores Prometheus existentes. Algunos de los receptores Prometheus más comunes que se utilizan con CloudWatch son los siguientes:
-
Receptor Prometheus para rastrear cualquier punto de conexión compatible con Prometheus
-
Receptor de métricas del host, para recopilar métricas del sistema desde el host
-
Receptor Kubernetes Cluster, para recopilar métricas de clúster del servidor API de Kubernetes
Puede configurar varios receptores en un único recopilador, lo que le permite recopilar métricas de OpenTelemetry y Prometheus y enviarlas a CloudWatch a través de la misma canalización. Para ver la lista completa de receptores disponibles, consulte el repositorio
Introducción
Requisito previo: si usa el punto de conexión de OTLP para hacer seguimientos, asegúrese de activar Transaction Search.
Pasos:
-
Descargue la última versión de la distribución de OpenTelemetry Collector. Para obtener más información sobre OpenTelemetry Collector, consulte las versiones
de OpenTelemetry Collector. -
Instale OpenTelemetry Collector en su host. El recopilador funciona en cualquier sistema operativo y plataforma. Para obtener más información, consulte Install the Collector
. -
Configure las credenciales de AWS en Amazon EC2 o en el host en las instalaciones. El recopilador usa estas credenciales para autenticarse con CloudWatch al enviar datos de telemetría. Para obtener más información, consulte a continuación.
-
Configure las credenciales de AWS para los clústeres de Amazon EKS o Kubernetes. La forma más sencilla de comenzar a utilizar Amazon EKS es utilizar el complemento de Información de contenedores con OpenTelemetry de EKS. Si prefiere usar OpenTelemetry Collector directamente, siga el procedimiento que se explica a continuación para configurar las credenciales de AWS de los clústeres de Amazon EKS o Kubernetes para enviar datos de telemetría a CloudWatch.
-
Configure el exportador de OTLP en la configuración del recopilador para enviar datos de telemetría al punto de conexión de CloudWatch. Consulte los ejemplos que aparecen a continuación.
Autenticación con un token de portador (clave de API)
Si no necesita configurar las credenciales de AWS en el host (por ejemplo, cuando se ejecuta en infraestructuras que no son de AWS, otros proveedores de nube o canalizaciones de CI/CD), puede utilizar la autenticación por token de portador en lugar de SigV4. Los puntos de conexión de métricas y registros admiten los tokens de portador (se requieren claves de API independientes para cada servicio). No se admite la autenticación mediante token de portador para los rastros.
Para obtener instrucciones de configuración, consulte Configurar la autenticación por token de portador para métricas. Para los registros, consulte Configuración de autenticación por token de portador para Registros.
Para ver un ejemplo de configuración de recopilador con tokens de portador, consulte el ejemplo de métricas de token de portador en los ejemplos de configuración de recopilador que aparecen a continuación.
Ejemplos de configuración del recopilador
Copie y pegue el contenido siguiente para configurar el recopilador de modo que envíe los registros y seguimientos al punto de conexión de 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]
A continuación se muestra un ejemplo de envío de registros y seguimientos mediante sigv4 a 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]
nota
Configure los SDK de OpenTelemetry con una configuración de muestreo always_on para registrar de forma fiable el 100 % de las unidades de seguimiento y obtener una visibilidad total de las aplicaciones críticas con CloudWatch Application Signals. Para obtener más información, consulte un ejemplo de Configuración de una muestra del SDK de Java de OpenTelemetry
Copie y pegue el contenido siguiente para configurar el recopilador de modo que envíe las métricas a los puntos de conexión de 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]
A continuación se muestra un ejemplo de envío de métricas mediante sigv4 a 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]
Métricas con autenticación por token de portador
A continuación se muestra un ejemplo de envío de métricas mediante un token de portador a us-east-1. Para obtener las instrucciones de configuración y las prácticas recomendadas de seguridad, consulte Configurar la autenticación por token de portador para métricas.
extensions: bearertokenauth: filename: "/etc/otel/cw-api-key" 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" auth: authenticator: bearertokenauth service: extensions: [bearertokenauth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
importante
Nunca codifique las claves de API de forma rígida directamente en los archivos de configuración del recopilador. Use filename para leer un secreto montado o ${env:VAR} para leer una variable de entorno inyectada por su administrador de secretos.
nota
A diferencia de SigV4, los tokens de portador no requieren archivos de credenciales de AWS, roles de IAM ni configuración de IRSA. El recopilador puede ejecutarse en cualquier plataforma sin dependencias del AWS SDK.