

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.

# Métricas y dimensiones en Managed Service para Apache Flink
<a name="metrics-dimensions"></a>

Cuando su Managed Service for Apache Flink procesa una fuente de datos, Managed Service for Apache Flink informa a Amazon de las siguientes métricas y dimensiones. CloudWatch

**Cambios en las métricas de Flink 2.2**  
Flink 2.2 introduce cambios en las métricas que pueden afectar a la supervisión y a las alarmas. Revise los siguientes cambios antes de realizar la actualización:  
Se ha eliminado la `fullRestarts` métrica. En su lugar, use `numRestarts`.
`downtime`Las métricas `uptime` y están en desuso y se eliminarán en una versión futura. Migre a las nuevas métricas específicas de cada estado.
Se ha `bytesRequestedPerFetch` eliminado la métrica del conector 6.0.0 de Kinesis Data Streams.

## Métricas de aplicación
<a name="metrics-dimensions-jobs"></a>


| Métrica | Unidad | Description (Descripción) | Nivel | Notas de uso | 
| --- | --- | --- | --- | --- | 
| backPressuredTimeMsPerSecond\$1 | Milisegundos | El tiempo (en milisegundos) que esta tarea u operador tiene retraso por segundo. | Tarea, Operador, Paralelismo | \$1 Disponible para Managed Service para Apache Flink que ejecutan únicamente la versión 1.13 de Flink. Estas métricas pueden resultar útiles para identificar los cuellos de botella en una aplicación. | 
| busyTimeMsPerSecond\$1 | Milisegundos | El tiempo (en milisegundos) que esta tarea u operador está ocupado (ni inactivo ni con retraso) por segundo. Se puede ser NaN si no se pudo calcular el valor. | Tarea, Operador, Paralelismo | \$1 Disponible para Managed Service para Apache Flink que ejecutan únicamente la versión 1.13 de Flink. Estas métricas pueden resultar útiles para identificar los cuellos de botella en una aplicación. | 
| cpuUtilization | Porcentaje | El porcentaje total de utilización de CPU en los administradores de tareas. Por ejemplo, si hay cinco administradores de tareas, Managed Service para Apache Flink publica cinco muestras de esta métrica por intervalo de informes. | Aplicación | Se puede usar esta métrica para monitorear el uso mínimo, promedio y máximo de la CPU en su aplicación. La CPUUtilization métrica solo tiene en cuenta el uso de la CPU del proceso de TaskManager JVM que se ejecuta dentro del contenedor.  | 
| containerCPUUtilization | Porcentaje | Porcentaje total de uso de la CPU en los contenedores del administrador de tareas del clúster de aplicaciones Flink. Por ejemplo, si hay cinco administradores de tareas, también hay cinco TaskManager contenedores y Managed Service for Apache Flink publica de 2 a cinco muestras de esta métrica por cada intervalo de informe de 1 minuto. | Aplicación | Se calcula por contenedor de la siguiente manera: *Tiempo total de CPU (en segundos) consumido por contenedor \$1 100/Límite de CPU del contenedor (en /segundos) CPUs* La `CPUUtilization` métrica solo tiene en cuenta el uso de la CPU del proceso de TaskManager JVM que se ejecuta dentro del contenedor. Hay otros componentes que se ejecutan fuera de la JVM dentro del mismo contenedor. La métrica `containerCPUUtilization` ofrece un panorama más completo, que incluye todos los procesos en términos de agotamiento de la CPU en el contenedor y de los fallos resultantes.  | 
| containerMemoryUtilization | Porcentaje | Porcentaje general de uso de memoria en los contenedores del administrador de tareas del clúster de aplicaciones Flink. Por ejemplo, si hay cinco administradores de tareas, también hay cinco TaskManager contenedores y Managed Service for Apache Flink publica de 2 a cinco muestras de esta métrica por cada intervalo de informe de 1 minuto. | Aplicación | Se calcula por contenedor de la siguiente manera: *Uso de memoria del contenedor (bytes) \$1 100 / Límite de memoria del contenedor según las especificaciones de implementación del pod (en bytes)* `ManagedMemoryUtilzations`[Las métricas `HeapMemoryUtilization` y solo tienen en cuenta métricas de memoria específicas, como el uso de memoria dinámica de la TaskManager JVM o la memoria administrada (uso de memoria fuera de la JVM para procesos nativos, como el backend estatal de RockSDB).](https://flink.apache.org/2021/01/18/rocksdb.html#:~:text=Conclusion-,The%20RocksDB%20state%20backend%20(i.e.%2C%20RocksDBStateBackend)%20is%20one%20of,with%20exactly%2Donce%20processing%20guarantees.) La métrica `containerMemoryUtilization` ofrece una imagen más completa al incluir la memoria del conjunto de trabajo, lo que permite medir mejor el agotamiento total de la memoria. Cuando se agote, pasará al pod. `Out of Memory Error` TaskManager   | 
| containerDiskUtilization | Porcentaje | Porcentaje total de uso del disco en los contenedores del administrador de tareas del clúster de aplicaciones Flink. Por ejemplo, si hay cinco administradores de tareas, hay cinco TaskManager contenedores y Managed Service for Apache Flink publica de 2 a cinco muestras de esta métrica por cada intervalo de informe de 1 minuto. | Aplicación | Se calcula por contenedor de la siguiente manera: *Uso del disco en bytes \$1 100 / Límite del disco por contenedor en bytes* En el caso de los contenedores, representa la utilización del sistema de archivos en el que está configurado el volumen raíz del contenedor.  | 
| currentInputWatermark | Milisegundos | La última marca de agua que ha recibido application/operator/task/thread | Aplicación, Operador, Tarea, Paralelismo | Este registro solo se emite para dimensiones con dos entradas. Es el valor mínimo de las últimas marcas de agua recibidas. | 
| currentOutputWatermark | Milisegundos | La última marca de agua que ha emitido application/operator/task/thread | Aplicación, Operador, Tarea, Paralelismo |  | 
| downtime[OBSOLETO] | Milisegundos | En el caso de los trabajos que se encuentran actualmente en una failing/recovering situación determinada, el tiempo transcurrido durante esta interrupción. | Aplicación | Esta métrica mide el tiempo transcurrido mientras un trabajo está fallando o se está recuperando. Esta métrica devuelve 0 para los trabajos en ejecución y -1 para los trabajos completados. Si esta métrica no es 0 o -1, indica que no se pudo ejecutar el trabajo de Apache Flink para la aplicación. **Obsoleto en Flink 2.2.** Utilice`restartingTime`, en su `cancellingTime` lugar and/or `failingTime`. | 
| failingTime | Milisegundos | El tiempo (en milisegundos) que la aplicación ha pasado en estado de error. Utilice esta métrica para supervisar los errores de las aplicaciones y activar las alertas. | Aplicación, flujo | Disponible en Flink 2.2. Sustituye parte de la métrica obsoletadowntime. | 
| heapMemoryUtilization | Porcentaje | Utilización general de la memoria dinámica en los administradores de tareas. Por ejemplo, si hay cinco administradores de tareas, Managed Service para Apache Flink publica cinco muestras de esta métrica por intervalo de informes. | Aplicación | Se puede usar esta métrica para monitorear el uso mínimo, promedio y máximo de la memoria dinámica en su aplicación. HeapMemoryUtilizationSolo tiene en cuenta métricas de memoria específicas, como el uso de memoria acumulada de TaskManager la JVM. | 
| idleTimeMsPerSecond\$1 | Milisegundos | El tiempo (en milisegundos) por segundo que esta tarea u operador está inactivo (sin datos que procesar). El tiempo de inactividad no incluye el tiempo de retraso, por lo que si la tarea está retrasada, no está inactiva. | Tarea, Operador, Paralelismo | \$1 Disponible para Managed Service para Apache Flink que ejecutan únicamente la versión 1.13 de Flink. Estas métricas pueden resultar útiles para identificar los cuellos de botella en una aplicación. | 
| lastCheckpointSize | Bytes | El tamaño total del último punto de control | Aplicación | Se puede usar esta métrica para determinar la utilización del almacenamiento de las aplicaciones en ejecución. Si el valor de esta métrica aumenta, esto puede indicar que hay un problema con la aplicación, como una pérdida de memoria o un cuello de botella. | 
| lastCheckpointDuration | Milisegundos | El tiempo que se tardó en completar el último punto de control | Aplicación | Esta métrica mide el tiempo que se tardó en completar el punto de control más reciente. Si el valor de esta métrica aumenta, esto puede indicar que hay un problema con la aplicación, como una pérdida de memoria o un cuello de botella. En algunos casos, puede solucionar este problema deshabilitando los puntos de control. | 
| managedMemoryUsed\$1 | Bytes | La cantidad de memoria gestionada en uso actualmente. | Aplicación, Operador, Tarea, Paralelismo | \$1 Disponible para Managed Service para Apache Flink que ejecutan únicamente la versión 1.13 de Flink. Esto se refiere a la memoria gestionada por Flink fuera de la pila de Java. Se usa para el backend de estado de RockSDB y también está disponible para las aplicaciones. | 
| managedMemoryTotal\$1 | Bytes | La cantidad total de memoria gestionada. | Aplicación, Operador, Tarea, Paralelismo | \$1 Disponible para Managed Service para Apache Flink que ejecutan únicamente la versión 1.13 de Flink. Esto se refiere a la memoria gestionada por Flink fuera de la pila de Java. Se usa para el backend de estado de RockSDB y también está disponible para las aplicaciones. La métrica `ManagedMemoryUtilzations` solo tiene en cuenta métricas de memoria específicas, como la memoria administrada (uso de memoria fuera de la JVM para procesos nativos como el [backend de estado de RockSDB)](https://flink.apache.org/2021/01/18/rocksdb.html#:~:text=Conclusion-,The%20RocksDB%20state%20backend%20(i.e.%2C%20RocksDBStateBackend)%20is%20one%20of,with%20exactly%2Donce%20processing%20guarantees.) | 
| managedMemoryUtilization\$1 | Porcentaje | Derivado por/ managedMemoryUsedmanagedMemoryTotal | Aplicación, Operador, Tarea, Paralelismo | \$1 Disponible para Managed Service para Apache Flink que ejecutan únicamente la versión 1.13 de Flink. Esto se refiere a la memoria gestionada por Flink fuera de la pila de Java. Se usa para el backend de estado de RockSDB y también está disponible para las aplicaciones. | 
| numberOfFailedCheckpoints | Recuento | La cantidad de veces que los puntos de control arrojaron error. | Aplicación | Se puede utilizar esta métrica para supervisar el estado y el progreso de las aplicaciones. Los puntos de control pueden fallar debido a problemas con las aplicaciones, como problemas de rendimiento o permisos.  | 
| numRecordsIn\$1 | Recuento | La cantidad total de registros que ha recibido esta aplicación, operador o tarea. | Aplicación, Operador, Tarea, Paralelismo | \$1 Para aplicar la estadística SUM durante un período de tiempo (segundos/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/metrics-dimensions.html) El nivel de la métrica especifica si esta métrica mide la cantidad total de registros que ha recibido toda la aplicación, un operador específico o una tarea específica. | 
| numRecordsInPerSecond\$1 | Recuento/segundo | La cantidad total de registros por segundo que esta aplicación, operador o tarea ha recibido. | Aplicación, Operador, Tarea, Paralelismo | \$1 Para aplicar la estadística SUM durante un período de tiempo (segundos/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/metrics-dimensions.html) El nivel de la métrica especifica si esta métrica mide la cantidad total de registros que ha recibido toda la aplicación, un operador específico o una tarea específica por segundo. | 
| numRecordsOut\$1 | Recuento | La cantidad total de registros que esta aplicación, operador o tarea ha recibido. | Aplicación, Operador, Tarea, Paralelismo |  \$1 Para aplicar la estadística SUM durante un período de tiempo (segundos/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/metrics-dimensions.html) El nivel de la métrica especifica si esta métrica mide la cantidad total de registros que toda la aplicación, un operador específico o una tarea específica ha emitido. | 
| numLateRecordsDropped\$1 | Recuento | Aplicación, Operador, Tarea, Paralelismo |  | \$1 Para aplicar la estadística SUM durante un período de tiempo (segundos/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/metrics-dimensions.html) La cantidad de registros que este operador o tarea ha perdido por llegar tarde. | 
| numRecordsOutPerSecond\$1 | Recuento/segundo | La cantidad total de registros por segundo que esta aplicación, operador o tarea ha emitido. | Aplicación, Operador, Tarea, Paralelismo |  \$1 Para aplicar la estadística SUM durante un período de tiempo (segundos/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/metrics-dimensions.html) El nivel de la métrica especifica si esta métrica mide la cantidad total de registros que ha emitido toda la aplicación, un operador específico o una tarea específica por segundo. | 
| oldGenerationGCCount | Recuento | La cantidad total de operaciones antiguas de recopilación de elementos no utilizados que se han llevado a cabo en todos los administradores de tareas.  | Aplicación |  | 
| oldGenerationGCTime | Milisegundos | El tiempo total dedicado a realizar antiguas operaciones de recopilación de elementos no utilizados.  | Aplicación | Se puede usar esta métrica para monitorear la suma, el promedio y el tiempo máximo de recopilación de elementos no utilizados. | 
| threadsCount | Recuento | La cantidad total de subprocesos activos utilizados por la aplicación.  | Aplicación | Esta métrica mide la cantidad de subprocesos utilizados por el código de la aplicación. No es lo mismo que el paralelismo de la aplicación. | 
| cancellingTime | Milisegundos | El tiempo (en milisegundos) que la aplicación ha pasado en estado de cancelación. Utilice esta métrica para supervisar las operaciones de cancelación de aplicaciones. | Aplicación, flujo | Disponible en Flink 2.2. Sustituye parte de la métrica obsoletadowntime. | 
| restartingTime | Milisegundos | El tiempo (en milisegundos) que la aplicación ha tardado en reiniciarse. Utilice esta métrica para supervisar el comportamiento de reinicio de la aplicación. | Aplicación, flujo | Disponible en Flink 2.2. Sustituye parte de la métrica obsoletadowntime. | 
| runningTime | Milisegundos | El tiempo (en milisegundos) durante el que la aplicación ha estado ejecutándose ininterrumpidamente. Sustituye a la uptime métrica obsoleta. | Aplicación, flujo | Disponible en Flink 2.2. Utilícela como reemplazo directo de la métrica obsoletauptime. | 
| uptime[OBSOLETO] | Milisegundos | El tiempo que el trabajo se ha estado ejecutando sin interrupción. | Aplicación | Se puede usar esta métrica para determinar si un trabajo se está ejecutando correctamente. Esta métrica devuelve -1 para los trabajos completados. **Obsoleto en Flink 2.2.** En su lugar, use `runningTime`. | 
| jobmanagerFileDescriptorsMax | Recuento | El número máximo de descriptores de archivos disponibles para. JobManager | Aplicación, flujo, host | Utilice esta métrica para supervisar la capacidad del descriptor de archivos. | 
| jobmanagerFileDescriptorsOpen | Recuento | El número actual de descriptores de archivos abiertos para el. JobManager | Aplicación, flujo, host | Utilice esta métrica para supervisar el uso del descriptor de archivos y detectar un posible agotamiento de los recursos. | 
| taskmanagerFileDescriptorsMax | Recuento | El número máximo de descriptores de archivo disponibles para cada uno. TaskManager | Aplicación, flujo, host, tm\$1id | Utilice esta métrica para supervisar la capacidad del descriptor de archivos. | 
| taskmanagerFileDescriptorsOpen | Recuento | El número actual de descriptores de archivos abiertos para cada uno. TaskManager | Aplicación, flujo, host, tm\$1id | Utilice esta métrica para supervisar el uso de los descriptores de archivos y detectar un posible agotamiento de los recursos. | 
| KPUs\$1 | Recuento | El número total de aplicaciones KPUs utilizadas por la aplicación. | Aplicación | \$1Esta métrica recibe una muestra por período de facturación (una hora). Para visualizar la cantidad de KPUs tiempo transcurrido, utilice MAX o AVG durante un período de al menos una (1) hora. El recuento de KPU incluye KPU de `orchestration`. Para obtener más información, consulte [Precios de Managed Service para Apache Flink](https://aws.amazon.com/managed-service-apache-flink/pricing/). | 

**Guía de migración de métricas de Flink 2.2**  
**Migración desde FullRestarts:** la `fullRestarts` métrica se ha eliminado en Flink 2.2. En su lugar, utilice la métrica`numRestarts`. La `numRestarts` métrica proporciona una funcionalidad equivalente y se puede utilizar como reemplazo directo en CloudWatch las alarmas sin necesidad de ajustar los umbrales.  
**Migración desde el tiempo de actividad:** la `uptime` métrica está obsoleta en Flink 2.2 y se eliminará en una versión futura. En su lugar, utilice la métrica`runningTime`. La `runningTime` métrica proporciona una funcionalidad equivalente y se puede utilizar como reemplazo directo en CloudWatch las alarmas sin necesidad de ajustar los umbrales.  
**Migración desde un tiempo de inactividad:** la `downtime` métrica está obsoleta en Flink 2.2 y se eliminará en una versión futura. En función de lo que desee supervisar, utilice una o más de las siguientes métricas:  
`restartingTime`: Supervise el tiempo dedicado a reiniciar la aplicación
`cancellingTime`: Supervise el tiempo dedicado a cancelar la aplicación
`failingTime`: Supervise el tiempo transcurrido en un estado de fallo

## Métricas del conector de flujo de datos de Kinesis
<a name="metrics-dimensions-stream"></a>

AWS emite todos los registros de Kinesis Data Streams además de los siguientes:


| Métrica | Unidad | Description (Descripción) | Nivel | Notas de uso | 
| --- | --- | --- | --- | --- | 
| millisbehindLatest | Milisegundos | La cantidad de milisegundos que el consumidor está detrás de la cabecera de la transmisión, lo que indica el retraso del consumidor con respecto a la hora actual. | Aplicación (para Stream), Paralelism (para) ShardId | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/managed-flink/latest/java/metrics-dimensions.html)  | 

**nota**  
La `bytesRequestedPerFetch` métrica se ha eliminado en la versión 6.0.0 AWS del conector Flink (la única versión de conector compatible con Flink 2.2). La única métrica del conector de Kinesis Data Streams disponible en Flink 2.2 es. `millisBehindLatest`

## Métricas de Amazon MSK Connector
<a name="metrics-dimensions-msk"></a>

AWS emite todos los registros de Amazon MSK además de los siguientes:


| Métrica | Unidad | Description (Descripción) | Nivel | Notas de uso | 
| --- | --- | --- | --- | --- | 
| currentoffsets | N/A | El desfase de lectura actual del consumidor, para cada partición. La métrica de una partición en particular se puede especificar mediante el nombre del tema y el identificador de la partición. | Aplicación (para el tema), paralelismo (para) PartitionId |  | 
| commitsFailed | N/A | La cantidad total de errores de confirmación de desplazamientos de Kafka, si están activados la confirmación de desplazamientos y los puntos de control.  | Aplicación, Operador, Tarea, Paralelismo | Confirmar los desplazamientos a Kafka solo es una forma de exponer el progreso de los consumidores, por lo que un error al confirmar los desplazamientos no afecta a la integridad de los desplazamientos divididos con puntos de control de Flink. | 
| commitsSucceeded | N/A | La cantidad total de desplazamientos confirmados satisfactoriamente con Kafka, si la confirmación de desplazamientos y los puntos de control están activados.  | Aplicación, Operador, Tarea, Paralelismo |  | 
| committedoffsets | N/A | Los últimos desplazamientos confirmados correctamente para Kafka, para cada partición. La métrica de una partición en particular se puede especificar mediante el nombre del tema y el identificador de la partición. | Aplicación (para el tema), Paralelismo (para) PartitionId |  | 
| records\$1lag\$1max | Recuento | El retraso máximo en términos de la cantidad de registros para cualquier partición de esta ventana | Aplicación, Operador, Tarea, Paralelismo |  | 
| bytes\$1consumed\$1rate | Bytes | Cantidad media de bytes consumidos por segundo para un tema | Aplicación, Operador, Tarea, Paralelismo |  | 

## Métricas de Apache Zeppelin
<a name="metrics-dimensions-zeppelin"></a>

En el caso de las libretas Studio, AWS emite las siguientes métricas a nivel de aplicación:`KPUs`,,`cpuUtilization`, `heapMemoryUtilization` y. `oldGenerationGCTime` `oldGenerationGCCount` `threadCount` Además, emite las métricas que se muestran en la siguiente tabla, también a nivel de la aplicación.


****  

| Métrica | Unidad | Description (Descripción) | Nombre de Prometheus | 
| --- | --- | --- | --- | 
| zeppelinCpuUtilization | Porcentaje | Porcentaje total de utilización de la CPU en el servidor Apache Zeppelin. | process\$1cpu\$1usage | 
| zeppelinHeapMemoryUtilization | Porcentaje | Porcentaje general de utilización de la memoria dinámica en el servidor Apache Zeppelin. | jvm\$1memory\$1used\$1bytes | 
| zeppelinThreadCount | Recuento | La cantidad total de subprocesos activos utilizados por el servidor Apache Zeppelin. | jvm\$1threads\$1live\$1threads | 
| zeppelinWaitingJobs | Recuento | La cantidad de trabajos de Apache Zeppelin en cola esperando un subproceso. | jetty\$1threads\$1jobs | 
| zeppelinServerUptime | Segundos | El tiempo total que el servidor ha estado en funcionamiento. | process\$1uptime\$1seconds | 

# Ver las métricas CloudWatch
<a name="metrics-dimensions-viewing"></a>

Puede ver CloudWatch las métricas de su aplicación mediante la CloudWatch consola de Amazon o la AWS CLI.

**Para ver las métricas mediante la CloudWatch consola**

1. Abra la CloudWatch consola en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En el panel de navegación, seleccione **Métricas**.

1. En el panel **CloudWatch Métricas por categoría** de Managed Service for Apache Flink, elija una categoría de métricas.

1. En el panel superior, desplácese para ver la lista completa de métricas.

**Para ver las métricas mediante el AWS CLI**
+ En el símbolo del sistema, ejecute el siguiente comando.

  ```
  1. aws cloudwatch list-metrics --namespace "AWS/KinesisAnalytics" --region region
  ```

# Establezca los niveles de informes de CloudWatch métricas
<a name="cloudwatch-logs-levels"></a>

Se puede controlar el nivel de métricas de la aplicación que crea su aplicación. Managed Service para Apache Flink admite los siguientes niveles de métricas:
+ **Aplicación:** la aplicación solo informa del nivel más alto de métricas para cada aplicación. De forma predeterminada, las métricas de Managed Service para Apache Flink se publican a nivel de la aplicación.
+ **Tarea:** la aplicación informa sobre las dimensiones métricas específicas de la tarea para las métricas definidas con el nivel de generación de informes de métricas de la tarea, como el número de registros que entran y salen de la aplicación por segundo.
+ **Operador:** la aplicación informa de las dimensiones métricas específicas del operador para las métricas definidas con el nivel de informes de métricas del operador, como las métricas de cada operación de filtro o mapa.
+ **Paralelismo:** la aplicación informa métricas de nivel `Task` y `Operator` para cada subproceso de ejecución. El nivel de informe no se recomienda para aplicaciones con una configuración de paralelismo superior a 64 debido a los costos excesivos. 
**nota**  
Solo debe usar este nivel de métrica para solucionar problemas debido a la cantidad de datos de métricas que genera el servicio. Solo puede establecer este nivel de métrica mediante la CLI. Este nivel de métrica no está disponible en la consola.

El nivel predeterminado es **Aplicación**. La aplicación informa de las métricas en el nivel actual y en todos los niveles superiores. Por ejemplo, si el nivel de informes está establecido en **Operador**, la aplicación informa de las métricas de la **aplicación**, la **tarea** y el **operador**.

El nivel de informes de CloudWatch métricas se establece mediante el `MonitoringConfiguration` parámetro de la [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)acción o el `MonitoringConfigurationUpdate` parámetro de la [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)acción. En el siguiente ejemplo de solicitud de la [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)acción, se establece el nivel de informe de CloudWatch métricas en **Tarea**:

```
{
   "ApplicationName": "MyApplication",  
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "MetricsLevelUpdate": "TASK"
         }
      }
   }
}
```

También puede configurar el nivel de registro mediante el parámetro `LogLevel` de la acción [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) o el parámetro `LogLevelUpdate` de la acción [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html). Se puede utilizar los siguientes niveles de registro:
+ `ERROR`: registra los eventos de error potencialmente recuperables.
+ `WARN`: registra los eventos de advertencia que pueden provocar un error.
+ `INFO`: registra los eventos informativos.
+ `DEBUG`: registra los eventos de depuración generales. 

Para obtener más información sobre los niveles de registro de Log4j, consulte [Custom Log Levels](https://logging.apache.org/log4j/2.x/manual/customloglevels.html) en la documentación de [Apache Log4j](https://logging.apache.org/log4j/2.x/).

# Uso de métricas personalizadas con Amazon Managed Service para Apache Flink
<a name="monitoring-metrics-custom"></a>

Managed Service for Apache Flink expone 19 métricas CloudWatch, incluidas las métricas de uso y rendimiento de los recursos. Además, puede crear sus propias métricas para realizar un seguimiento de los datos específicos de la aplicación, como el procesamiento de eventos o el acceso a recursos externos.

**Topics**
+ [Funcionamiento](#monitoring-metrics-custom-howitworks)
+ [Visualización de ejemplos para crear una clase de asignación](#monitoring-metrics-custom-examples)
+ [Visualización de métricas personalizadas](#monitoring-metrics-custom-examples-viewing)

## Funcionamiento
<a name="monitoring-metrics-custom-howitworks"></a>

Las métricas personalizadas de Managed Service para Apache Flink utilizan el sistema de métricas de Apache Flink. Las métricas de Apache Flink tienen los siguientes atributos:
+ **Tipo:** el tipo de métrica describe cómo mide e informa los datos. Los tipos de métricas de Apache Flink disponibles incluyen Recuento, Indicador, Histograma y Medidor. Para obtener más información sobre los tipos de métricas de Apache Flink, consulte [Metric Types](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#metric-types).
**nota**  
AWS CloudWatch Metrics no admite el tipo de métrica Histogram Apache Flink. CloudWatch solo puede mostrar las métricas de Apache Flink de los tipos Count, Gauge y Meter.
+ **Alcance:** el ámbito de una métrica consta de su identificador y un conjunto de pares clave-valor que indican cómo se informará a la métrica. CloudWatch El identificador de una métrica consta de los elementos siguientes:
  + El alcance del sistema, que indica el nivel en el que se informa de la métrica (por ejemplo, el operador).
  + Un ámbito de usuario, que define atributos como las variables de usuario o los nombres de los grupos de métricas. Estos atributos se definen mediante [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-java.lang.String-](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-java.lang.String-) o [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-).

  Para obtener más información sobre esta métrica, consulte [Scope](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#scope).

Para obtener más información sobre las métricas de Apache Flink, consulte [Metrics](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html) en la [documentación de Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

Para crear una métrica personalizada en Managed Service para Apache Flink, puede acceder al sistema de métricas de Apache Flink desde cualquier función de usuario que se amplíe mediante una llamada. `RichFunction` [https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/api/common/functions/RuntimeContext.html#getMetricGroup--](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/api/common/functions/RuntimeContext.html#getMetricGroup--) Este método devuelve un [MetricGroup](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/metrics/MetricGroup.html)objeto que puede utilizar para crear y registrar métricas personalizadas. El servicio gestionado para Apache Flink informa de todas las métricas creadas con la clave `KinesisAnalytics` de grupo. CloudWatch Las métricas personalizadas que defina tienen las siguientes características:
+ Su métrica personalizada tiene un nombre de métrica y un nombre de grupo. Estos nombres deben constar de caracteres alfanuméricos según las reglas de nomenclatura de [Prometheus](https://prometheus.io/docs/instrumenting/writing_exporters/#naming).
+ Los atributos que defina en el ámbito del usuario (excepto el grupo de `KinesisAnalytics` métricas) se publican como CloudWatch dimensiones.
+ Las métricas personalizadas se publican en el nivel `Application` de forma predeterminada.
+ Las dimensiones (Tarea/Operador/Paralelismo) se añaden a la métrica en función del nivel de supervisión de la aplicación. El nivel de supervisión de la aplicación se establece mediante el [MonitoringConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfiguration.html)parámetro de la [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)acción o el [MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)parámetro o de la [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)acción.

## Visualización de ejemplos para crear una clase de asignación
<a name="monitoring-metrics-custom-examples"></a>

Los siguientes ejemplos de código muestran cómo crear una clase de asignación que cree e incremente una métrica personalizada, y cómo implementar la clase de mapeo en su aplicación agregándola a un objeto `DataStream`.

### Métrica personalizada de recuento de registros
<a name="monitoring-metrics-custom-examples-recordcount"></a>

El siguiente ejemplo de código muestra cómo crear una clase de mapeo que cree una métrica que cuente los registros de un flujo de datos (la misma funcionalidad que la métrica `numRecordsIn`):

```
    private static class NoOpMapperFunction extends RichMapFunction<String, String> {
        private transient int valueToExpose = 0;
        private final String customMetricName;
 
        public NoOpMapperFunction(final String customMetricName) {
            this.customMetricName = customMetricName;
        }
 
        @Override
        public void open(Configuration config) {
            getRuntimeContext().getMetricGroup()
                    .addGroup("KinesisAnalytics")
                    .addGroup("Program", "RecordCountApplication")
                    .addGroup("NoOpMapperFunction")
                    .gauge(customMetricName, (Gauge<Integer>) () -> valueToExpose);
        }
 
        @Override
        public String map(String value) throws Exception {
            valueToExpose++;
            return value;
        }
    }
```

En el ejemplo anterior, la variable `valueToExpose` se incrementa para cada registro que procesa la aplicación. 

Tras definir la clase de mapeo, se crea una secuencia en la aplicación que implementa el mapa:

```
DataStream<String> noopMapperFunctionAfterFilter =
    kinesisProcessed.map(new NoOpMapperFunction("FilteredRecords"));
```

Para ver el código completo de esta aplicación, consulte [Record Count Custom Metric Application](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/RecordCount).

### Métrica personalizada de recuento de palabras
<a name="monitoring-metrics-custom-examples-wordcount"></a>

El siguiente ejemplo de código muestra cómo crear una clase de mapeo que cree una métrica que cuente palabras en un flujo de datos:

```
private static final class Tokenizer extends RichFlatMapFunction<String, Tuple2<String, Integer>> {
     
            private transient Counter counter;
     
            @Override
            public void open(Configuration config) {
                this.counter = getRuntimeContext().getMetricGroup()
                        .addGroup("KinesisAnalytics")
                        .addGroup("Service", "WordCountApplication")
                        .addGroup("Tokenizer")
                        .counter("TotalWords");
            }
     
            @Override
            public void flatMap(String value, Collector<Tuple2<String, Integer>>out) {
                // normalize and split the line
                String[] tokens = value.toLowerCase().split("\\W+");
     
                // emit the pairs
                for (String token : tokens) {
                    if (token.length() > 0) {
                        counter.inc();
                        out.collect(new Tuple2<>(token, 1));
                    }
                }
            }
        }
```

En el ejemplo anterior, la variable `counter` se incrementa para cada palabra que procesa la aplicación. 

Tras definir la clase de mapeo, se crea una secuencia en la aplicación que implementa el mapa:

```
// Split up the lines in pairs (2-tuples) containing: (word,1), and
// group by the tuple field "0" and sum up tuple field "1"
DataStream<Tuple2<String, Integer>> wordCountStream = input.flatMap(new Tokenizer()).keyBy(0).sum(1);
     
// Serialize the tuple to string format, and publish the output to kinesis sink
wordCountStream.map(tuple -> tuple.toString()).addSink(createSinkFromStaticConfig());
```

Para ver el código completo de esta aplicación, consulte [Word Count Custom Metric Application](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/WordCount).

## Visualización de métricas personalizadas
<a name="monitoring-metrics-custom-examples-viewing"></a>

Las métricas personalizadas de la aplicación aparecen en la consola de CloudWatch métricas del **AWS/KinesisAnalytics**panel de control, en el grupo de métricas de la **aplicación**. 

# Usa CloudWatch alarmas con Amazon Managed Service para Apache Flink
<a name="monitoring-metrics-alarms"></a>

Con las alarmas CloudWatch métricas de Amazon, observas una CloudWatch métrica durante un período de tiempo que especifiques. La alarma realiza una o varias acciones según el valor de la métrica o expresión con respecto a un umbral durante varios períodos de tiempo. Un ejemplo de acción es el envío de una enviar una notificación a un tema de Amazon Simple Notification Service (Amazon SNS). 

Para obtener más información sobre CloudWatch las alarmas, consulte [Uso de Amazon CloudWatch Alarms](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

## Revisión de alarmas recomendadas
<a name="monitoring-metrics-alarms-recommended"></a>

Esta sección contiene las alarmas recomendadas para supervisar el servicio gestionado para las aplicaciones de Apache Flink.

La tabla describe las alarmas recomendadas y tiene las siguientes columnas:
+ **Expresión métrica:** la métrica o expresión métrica que se va a comprobar si se compara con el umbral.
+ **Estadística:** la estadística que se utiliza para comprobar la métrica, por ejemplo, el **promedio**.
+ **Umbral:** el uso de esta alarma requiere que determine un umbral que defina el límite del rendimiento esperado de la aplicación. Debe determinar este umbral supervisando la aplicación en condiciones normales.
+ **Descripción:** causas que podrían activar esta alarma y posibles soluciones para esta afección.


| Expresiones de métricas | Estadística | Threshold | Description (Descripción) | 
| --- |--- |--- |--- |
| downtime> 0 | Media | 0 |  Un tiempo de inactividad superior a cero indica que la aplicación ha fallado. Si el valor es mayor que 0, la aplicación no está procesando ningún dato. Se recomienda para todas las aplicaciones. La Downtime métrica mide la duración de una interrupción. Un tiempo de inactividad superior a cero indica que la aplicación ha fallado. Para obtener información sobre la solución de problemas, consulte [La aplicación se está reiniciando](troubleshooting-rt-restarts.md). | 
| RATE (numberOfFailedCheckpoints)> 0 | Media | 0 | Esta métrica cuenta el número de puntos de control fallidos desde que se inició la aplicación. En función de la aplicación, puede ser tolerable que los puntos de control fallen ocasionalmente. Sin embargo, si los puntos de control fallan con regularidad, es probable que la aplicación no esté en buen estado y necesite más atención. Recomendamos monitorear la TASA (numberOfFailedpuntos de control) para generar alarmas en función del gradiente y no de los valores absolutos. Recomendado para todas las aplicaciones. Utilice esta métrica para supervisar el estado de las aplicaciones y el progreso de los puntos de control. La aplicación guarda los datos de estado en los puntos de control cuando está en buen estado. Los puntos de control pueden fallar debido a que se agotan los tiempos de espera si la aplicación no avanza en el procesamiento de los datos de entrada. Para obtener información sobre la solución de problemas, consulte [Agotamiento del tiempo para llegar al punto de control](troubleshooting-chk-timeout.md). | 
| Operator.numRecordsOutPerSecond< umbral | Media | El número mínimo de registros emitidos por la aplicación en condiciones normales.  | Recomendado para todas las aplicaciones. Estar por debajo de este umbral puede indicar que la aplicación no está realizando el progreso esperado en los datos de entrada. Para obtener información sobre la solución de problemas, consulte [El rendimiento es demasiado lento](troubleshooting-rt-throughput.md). | 
| records\$1lag\$1max\$1millisbehindLatest> umbral | Máximo | La latencia máxima esperada en condiciones normales. | Si la aplicación consume productos de Kinesis o Kafka, estas métricas indican si la aplicación se está retrasando y necesita escalarse para poder soportar la carga actual. Se trata de una buena métrica genérica y fácil de rastrear para todo tipo de aplicaciones. Sin embargo, solo se puede usar para el escalado reactivo, es decir, cuando la aplicación ya se ha retrasado. Se recomienda para todas las aplicaciones. Utilice la records\$1lag\$1max métrica para una fuente de Kafka o millisbehindLatest para una fuente de transmisión de Kinesis. Superar este umbral puede indicar que la aplicación no está realizando el progreso esperado en los datos de entrada. Para obtener información sobre la solución de problemas, consulte [El rendimiento es demasiado lento](troubleshooting-rt-throughput.md). | 
| lastCheckpointDuration> umbral | Máximo | La duración máxima esperada del punto de control en condiciones normales. | Supervisa la cantidad de datos que se almacenan en el estado y el tiempo que se tarda en pasar por un punto de control. Si los puntos de control aumentan o tardan mucho, la aplicación dedica tiempo continuamente a los puntos de control y tiene menos ciclos de procesamiento real. En algunos puntos, los puntos de control pueden crecer demasiado o tardar tanto que fallan. Además de monitorear los valores absolutos, los clientes también deberían considerar monitorear la tasa de cambio con RATE(lastCheckpointSize) y RATE(lastCheckpointDuration). Si este valor aumenta lastCheckpointDuration continuamente, superar este umbral puede indicar que la aplicación no está realizando los progresos esperados con respecto a los datos de entrada o que hay problemas con el estado de la aplicación, como la contrapresión. Para obtener información sobre la solución de problemas, consulte [Crecimiento de estado ilimitado](troubleshooting-rt-stateleaks.md). | 
| lastCheckpointSize> umbral | Máximo | El tamaño máximo esperado del punto de control en condiciones normales. | Supervisa la cantidad de datos que se almacenan en el estado y el tiempo que se tarda en pasar por un punto de control. Si los puntos de control aumentan o tardan mucho, la aplicación dedica tiempo continuamente a los puntos de control y tiene menos ciclos de procesamiento real. En algunos puntos, los puntos de control pueden crecer demasiado o tardar tanto que fallan. Además de monitorear los valores absolutos, los clientes también deberían considerar monitorear la tasa de cambio con RATE(lastCheckpointSize) y RATE(lastCheckpointDuration). Si aumenta lastCheckpointSize continuamente, superar este umbral puede indicar que la aplicación está acumulando datos de estado. Si los datos de estado son demasiado grandes, la aplicación puede quedarse sin memoria al recuperarse de un punto de control o la recuperación de un punto de control puede tardar demasiado. Para obtener información sobre la solución de problemas, consulte [Crecimiento de estado ilimitado](troubleshooting-rt-stateleaks.md). | 
| heapMemoryUtilization> umbral | Máximo | Esto proporciona una buena indicación de la utilización general de los recursos de la aplicación y se puede utilizar para un escalado proactivo, a menos que la aplicación esté I/O vinculada. El heapMemoryUtilization tamaño máximo esperado en condiciones normales, con un valor recomendado del 90 por ciento. | Puede utilizar esta métrica para supervisar el uso máximo de memoria de los administradores de tareas en toda la aplicación. Si la aplicación alcanza este umbral, es necesario aprovisionar más recursos. Para ello, active el escalado automático o aumente el paralelismo de la aplicación. Para obtener más información sobre cómo aumentar los recursos, consulte. [Implementación del escalado de aplicaciones](how-scaling.md) | 
| cpuUtilization> umbral | Máximo | Esto proporciona una buena indicación de la utilización general de los recursos de la aplicación y se puede utilizar para un escalado proactivo, a menos que la aplicación esté I/O vinculada. El cpuUtilization tamaño máximo esperado en condiciones normales, con un valor recomendado del 80 por ciento. | Puede utilizar esta métrica para supervisar el uso máximo de la CPU por parte de los administradores de tareas en toda la aplicación. Si la aplicación alcanza este umbral, debe aprovisionar más recursos. Para ello, habilita el escalado automático o aumenta el paralelismo de la aplicación. Para obtener más información sobre cómo aumentar los recursos, consulte. [Implementación del escalado de aplicaciones](how-scaling.md) | 
| threadsCount> umbral | Máximo | El threadsCount tamaño máximo esperado en condiciones normales. | Puedes usar esta métrica para detectar fugas de subprocesos en los administradores de tareas de la aplicación. Si esta métrica alcanza este umbral, comprueba en el código de tu aplicación los subprocesos que se están creando sin cerrarlos. | 
| (oldGarbageCollectionTime \$1 100)/60\$1000 over 1 min period')> umbral | Máximo | La oldGarbageCollectionTime duración máxima prevista. Recomendamos establecer un umbral tal que el tiempo típico de recolección de basura sea el 60 por ciento del umbral especificado, pero el umbral correcto para su aplicación puede variar. | Si esta métrica aumenta continuamente, esto puede indicar que hay una pérdida de memoria en los administradores de tareas de la aplicación. | 
| RATE(oldGarbageCollectionCount) > umbral | Máximo | El máximo esperado oldGarbageCollectionCount en condiciones normales. El umbral correcto para su solicitud variará. | Si esta métrica aumenta continuamente, esto puede indicar que hay una pérdida de memoria en los administradores de tareas de la aplicación. | 
| Operator.currentOutputWatermark - Operator.currentInputWatermark > umbral | Mínimo | El incremento mínimo esperado de la marca de agua en condiciones normales. El umbral correcto para su solicitud variará. | Si esta métrica aumenta continuamente, esto puede indicar que la aplicación está procesando eventos cada vez más antiguos o que una subtarea anterior no ha enviado una marca de agua en un tiempo cada vez mayor. | 