

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Integración de las métricas de CloudWatch con Amazon Managed Service para Prometheus
<a name="integrating-cw-firehose"></a>

Disponer de todas las métricas en un solo lugar puede ser útil. Amazon Managed Service para Prometheus no realiza la ingesta de las métricas de Amazon CloudWatch de forma automática. Sin embargo, puede usar Amazon Data Firehose y AWS Lambda para enviar métricas de CloudWatch a Amazon Managed Service para Prometheus.

En esta sección se describe cómo instrumentar un [flujo de métricas de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html) y cómo utilizar [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) y [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) para ingerir métricas en Amazon Managed Service para Prometheus.

Configurará una pila con [AWS Cloud Development Kit (CDK)](https://aws.amazon.com/cdk/) para crear una secuencia de entrega de Firehose, una función Lambda y un bucket de Amazon S3 para demostrar un escenario completo.

## Infraestructura
<a name="integ-cw-fh-infrastructure"></a>

Lo primero que debe hacer es configurar la infraestructura para esta receta. 

Las secuencias de métricas de CloudWatch permiten reenviar los datos de las métricas de streaming a un punto de conexión HTTP o a un [bucket de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html).

La configuración de la infraestructura constará de 4 pasos:
+ Configuración de requisitos previos
+ Creación de un espacio de trabajo de Amazon Managed Service para Prometheus
+ Instalación de dependencias
+ Implementación de la pila

**Requisitos previos**
+ AWS CLI [instalada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) y [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) en el entorno.
+ [TypeScript de AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-typescript.html) instalado en el entorno.
+ Node.js y Go instalados en el entorno.
+ [Repositorio github del exportador de métricas de CloudWatch de observabilidad de AWS](https://github.com/aws-observability/observability-best-practices/tree/main/sandbox/CWMetricStreamExporter) (`CWMetricsStreamExporter`) clonado en la máquina local.

**Para crear un espacio de trabajo de Amazon Managed Service para Prometheus**

1. La aplicación de demostración de esta receta se ejecutará sobre Amazon Managed Service para Prometheus. Cree el espacio de trabajo de Amazon Managed Service para Prometheus con el comando siguiente:

   ```
   aws amp create-workspace --alias prometheus-demo-recipe
   ```

1. Asegúrese de que el espacio de trabajo se haya creado con el siguiente comando:

   ```
   aws amp list-workspaces
   ```

   Para obtener más información sobre Amazon Managed Service para Prometheus, consulte la Guía de usuario de [Amazon Managed Service para Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-getting-started.html).

**Para instalar las dependencias**

1. **Instale las dependencias**

   Desde la raíz del repositorio `aws-o11y-recipes`, cambia el directorio a `CWMetricStreamExporter` mediante el siguiente comando:

   ```
   cd sandbox/CWMetricStreamExporter
   ```

   De ahora en adelante, se considerará la raíz del repositorio.

1. Cambie el directorio a `/cdk` mediante el siguiente comando:

   ```
   cd cdk
   ```

1. Instale las dependencias de CDK mediante el siguiente comando:

   ```
   npm install
   ```

1. Vuelva a cambiar el directorio a la raíz del repositorio y, a continuación, cambie el directorio a `/lambda` mediante el siguiente comando:

   ```
   cd lambda
   ```

1. Una vez en la carpeta `/lambda`, instale las dependencias de Go mediante:

   ```
   go get
   ```

   Ahora ya están instaladas todas las dependencias.

**Para implementar la pila**

1. En la raíz del repositorio, abra `config.yaml` y modifique la URL del espacio de trabajo de Amazon Managed Service para Prometheus reemplazando `{workspace}` por el ID del espacio de trabajo recién creado y la región en la que se encuentra el espacio de trabajo de Amazon Managed Service para Prometheus.

   Por ejemplo, modifique lo siguiente con:

   ```
   AMP: 
       remote_write_url: "https://aps-workspaces.us-east-2.amazonaws.com/workspaces/{workspaceId}/api/v1/remote_write" 
       region: us-east-2
   ```

   Cambie los nombres del flujo de entrega de Firehose y del bucket de Amazon S3 como prefiera.

1. Para compilar el AWS CDK y el código Lambda, ejecute el siguiente comando en la raíz del repositorio:

   ```
   npm run build
   ```

   Este paso de compilación garantiza la creación del binario de Lambda en Go e implementa el CDK en CloudFormation.

1. Para completar la implementación, revise y acepte los cambios de IAM que requiera la pila.

1. (Opcional) Puede comprobar si la pila se ha creado ejecutando el comando siguiente:

   ```
   aws cloudformation list-stacks
   ```

   En la lista aparecerá una pila llamada `CDK Stack`.

## Creación de una secuencia de Amazon CloudWatch
<a name="integ-cw-fh-stream"></a>

Ahora que dispone de una función de Lambda para administrar las métricas, puede crear la secuencia de métricas desde Amazon CloudWatch.

**Para crear una secuencia de métricas personalizada en CloudWatch**

1. Diríjase a la consola de CloudWatch, en [https://console.aws.amazon.com/cloudwatch/home\$1metric-streams:streamsList](https://console.aws.amazon.com/cloudwatch/home#metric-streams:streamsList), y seleccione **Crear secuencia de métricas**.

1. Seleccione las métricas necesarias, ya sea todas o solo las de los espacios de nombres seleccionados.

1. En `Configuration`, elija **Seleccionar una Firehose existente propiedad de la cuenta**.

1. Utilizará la Firehose creada anteriormente por el CDK. En el menú desplegable **Seleccionar la secuencia de Kinesis Data Firehose**, seleccione la secuencia creada anteriormente. Tendrá un nombre como `CdkStack-KinesisFirehoseStream123456AB-sample1234`.

1. Cambie el formato de salida a **JSON**.

1. Asigne a la secuencia de métricas un nombre que tenga sentido.

1. Elija **Create metric stream** (Crear flujo métrico).

1. (Opcional) Para comprobar la invocación de la función de Lambda, vaya a la [consola de Lambda](https://console.aws.amazon.com/lambda/home) y elija la función `KinesisMessageHandler`. Seleccione la pestaña **Supervisar** y la subpestaña **Registros** y, en **Invocaciones recientes**, debería haber entradas de la función de Lambda que se está activando.
**nota**  
Es posible que pasen hasta 5 minutos antes de que las invocaciones comiencen a mostrarse en la pestaña **Supervisar**.

Las métricas se están transmitiendo ahora de Amazon CloudWatch a Amazon Managed Service para Prometheus.

## Eliminación
<a name="integ-cw-fh-cleanup"></a>

Puede que desee limpiar los recursos que se han utilizado en este ejemplo. El siguiente procedimiento explica cómo hacerlo. Esto detendrá la secuencia de métricas que ha creado.

**Para limpiar los recursos**

1. Comience por eliminar la pila de CloudFormation con los siguientes comandos:

   ```
   cd cdk
   cdk destroy
   ```

1. Elimine el espacio de trabajo de Amazon Managed Service para Prometheus:

   ```
   aws amp delete-workspace --workspace-id \
       `aws amp list-workspaces --alias prometheus-sample-app --query 'workspaces[0].workspaceId' --output text`
   ```

1. Por último, elimine la secuencia de métricas de Amazon CloudWatch mediante la [consola de Amazon CloudWatch](https://console.aws.amazon.com/cloudwatch/home#metric-streams:streamsList).