View a markdown version of this page

Recolector de OpenTelemetry - Amazon CloudWatch

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 de OpenTelemetry Collector.

Introducción

Requisito previo: si usa el punto de conexión de OTLP para hacer seguimientos, asegúrese de activar Transaction Search.

Pasos:

  1. 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.

  2. 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.

  3. 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.

    Setup IAM permissions for Amazon EC2
    Siga el procedimiento que se indica a continuación para adjuntar la política de IAM CloudWatchAgentServerPolicy al rol de IAM de la instancia de Amazon EC2.
    1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

    2. Elija Roles y busque y seleccione el rol que usa la instancia de Amazon EC2.

    3. En la pestaña Permisos, elija Agregar permisos, Vincular políticas.

    4. En el cuadro de búsqueda, busque la política CloudWatchAgentServerPolicy.

    5. Seleccione la política CloudWatchAgentServerPolicy y elija Agregar permisos.

    Setup IAM permissions for on-premise hosts
    Puede crear un usuario de IAM que se puede utilizar para conceder los permisos a los hosts en las instalaciones.
    1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

    2. Seleccione Usuarios, Crear nuevos usuarios.

    3. En Detalles del usuario, en Nombre de usuario, introduzca un nombre para el nuevo usuario de IAM. Este es su nombre de inicio de sesión de AWS y lo utilizará para autenticar su host.

    4. Elija Siguiente.

    5. En la página Establecer permisos, en Opciones de permisos, seleccione Adjuntar políticas directamente.

    6. En la lista de Políticas de permisos, seleccione la política CloudWatchAgentServerPolicy para agregarla a su usuario.

    7. Elija Siguiente.

    8. En la página Revisar y crear, asegúrese de que haya decidido satisfactoriamente el nombre de usuario y de que la política CloudWatchAgentServerPolicy aparezca en Resumen de permisos.

    9. Seleccione la opción Crear un usuario.

    10. Cree y recupere su clave de acceso y su clave secreta de AWS: en el panel de navegación de la consola de IAM, elija Usuarios y, a continuación, seleccione el nombre de usuario que creó en el paso anterior.

    11. En la página del usuario, seleccione la pestaña Credenciales de seguridad.

    12. En la sección Claves de acceso, elija Crear clave de acceso.

    13. En el paso 1 de Crear clave de acceso, elija Interfaz de línea de comandos (CLI).

    14. En el Paso 2 de Crear clave de acceso, como opción, introduzca una etiqueta y seleccione Siguiente.

    15. En el Paso 3 de Crear clave de acceso, seleccione Descargar archivo .csv para guardar un archivo .cvs con la clave de acceso y la clave de acceso secreta de su usuario de IAM. Necesita esta información para los siguientes pasos.

    16. Seleccione Listo.

    17. Introduzca el siguiente comando para configurar sus credenciales de AWS en su host en las instalaciones. Sustituya ACCESS_KEY_ID y SECRET_ACCESS_ID por la clave de acceso y la clave de acceso secreta generadas recientemente y que se encuentran en archivo .csv que descargó en el paso anterior.

      $ aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
  4. 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.

    Setup IAM permissions for Amazon EKS
    1. Cree un proveedor de identidades de OIDC de IAM para el clúster mediante el siguiente comando.

      eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} --region ${REGION} --approve
    2. Asigne roles de IAM a la cuenta de servicio de Kubernetes para OTel Collector mediante el siguiente comando.

      eksctl create iamserviceaccount \ --name ${COLLECTOR_SERVICE_ACCOUNT}\ --namespace ${NAMESPACE} \ --cluster ${CLUSTER_NAME} \ --region ${REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
    Setup IAM permissions for Kubernetes
    1. Introduzca el siguiente comando para configurar sus credenciales de AWS en su host en las instalaciones. Sustituya ACCESS_KEY_ID y SECRET_ACCESS_ID por la clave de acceso y la clave de acceso secreta generadas recientemente y que se encuentran en archivo .csv que descargó en el paso anterior. De forma predeterminada, el archivo de credenciales se guarda en /home/user/.aws/credentials.

      aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
    2. Edite el recurso de OpenTelemetry Collector para agregar el secreto de credenciales de AWS creado recientemente mediante el comando kubectl edit OpenTelemetryCollector otel_collector.

    3. Con el editor de archivos, agregue la siguiente configuración en la parte superior de la implementación para agregar las credenciales de AWS en el contenedor de OpenTelemetry Collector. Sustituya la ruta /home/user/.aws/credentials por la ubicación del archivo local de credenciales de AWS.

      spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials
  5. 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.

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_endpoint headers: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: traces_otlp_endpoint auth: 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. Para ver un ejemplo sobre cómo configurar OpenTelemetry Collector con un punto de conexión de OTLP de X-Ray, consulte el repositorio application signals demo.

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_endpoint auth: 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]