

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.

# Registro y supervisión en Amazon Managed Service para Apache Flink
<a name="monitoring-overview"></a>

El monitoreo es una parte importante del mantenimiento de la fiabilidad, la disponibilidad y el rendimiento de las aplicaciones Managed Service para Apache Flink. Debe recopilar datos de supervisión de todas las partes de la AWS solución para poder depurar más fácilmente un error multipunto si se produce uno. 

Antes de empezar a monitorear Managed Service para Apache Flink, debe crear un plan de monitoreo que incluya respuestas a las siguientes preguntas:
+ ¿Cuáles son los objetivos de la supervisión?
+ ¿Qué recursos va a supervisar?
+ ¿Con qué frecuencia va a supervisar estos recursos?
+ ¿Qué herramientas de supervisión va a utilizar?
+ ¿Quién se encargará de realizar las tareas de supervisión?
+ ¿Quién debería recibir una notificación cuando surjan problemas?

El siguiente paso consiste en establecer un punto de referencia para el rendimiento normal de Managed Service para Apache Flink en su entorno. Para ello, mida el rendimiento en diversas ocasiones y con diferentes condiciones de carga. A medida que supervise Managed Service para Apache Flink, puede almacenar datos de monitoreo históricos. Luego, puede compararlos con los datos de rendimiento actuales, identificar patrones de rendimiento normal y anomalías en el rendimiento, así como desarrollar métodos para la resolución de problemas.

**Topics**
+ [Registro en Managed Service para Apache Flink](logging.md)
+ [Monitoreo de Managed Service para Apache Flink](monitoring.md)
+ [Configuración de registro de aplicación en Managed Service para Apache Flink](cloudwatch-logs.md)
+ [Analice los CloudWatch registros con Logs Insights](cloudwatch-logs-reading.md)
+ [Métricas y dimensiones en Managed Service para Apache Flink](metrics-dimensions.md)
+ [Escribe mensajes personalizados en los CloudWatch registros](cloudwatch-logs-writing.md)
+ [Servicio gestionado de registros para llamadas a la API de Apache Flink con AWS CloudTrail](logging-using-cloudtrail.md)

# Registro en Managed Service para Apache Flink
<a name="logging"></a>

El registro es importante para que las aplicaciones de producción comprendan los errores y las fallas. Sin embargo, el subsistema de registro necesita recopilar y reenviar las entradas de registro a CloudWatch Logs. Si bien algunos registros están bien y son deseables, los registros extensos pueden sobrecargar el servicio y provocar un retraso en la aplicación Flink. Registrar las excepciones y advertencias es, sin duda, una buena idea. Sin embargo, no puede generar un mensaje de registro para todos y cada uno de los mensajes que procesa la aplicación Flink. Flink está optimizado para un rendimiento alto y una latencia baja, pero el subsistema de registro no lo está. En caso de que realmente sea necesario generar un registro de salida para cada mensaje procesado, utilice uno adicional DataStream dentro de la aplicación Flink y un receptor adecuado para enviar los datos a Amazon S3 o CloudWatch. No utilice el sistema de registro de Java para este propósito. Además, la configuración de `Debug Monitoring Log Level` de Managed Service para Apache Flink genera una gran cantidad de tráfico, lo que puede generar retrasos. Solo debe usarlo mientras investiga activamente los problemas de la aplicación.

## Consulte los registros con CloudWatch Logs Insights
<a name="logging-querying"></a>

CloudWatch Logs Insights es un potente servicio para consultar registros a escala. Los clientes deben aprovechar sus capacidades para buscar rápidamente en los registros a fin de identificar y mitigar los errores durante los eventos operativos.

 La siguiente consulta busca las excepciones en todos los registros del administrador de tareas y las ordena según la hora en que se produjeron.

```
fields @timestamp, @message
| filter isPresent(throwableInformation.0) or isPresent(throwableInformation) or @message like /(Error|Exception)/
| sort @timestamp desc
```

Para ver otras consultas útiles, consulte [Consultas de ejemplo](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs-reading.html#cloudwatch-logs-reading-examples).

# Monitoreo de Managed Service para Apache Flink
<a name="monitoring"></a>

Al ejecutar aplicaciones de streaming en producción, se propone ejecutar la aplicación de forma continua e indefinida. Es crucial implementar un monitoreo y una alarma adecuados de todos los componentes, no solo de la aplicación Flink. De lo contrario, se corre el riesgo de pasar por alto los problemas emergentes desde el principio y solo darse cuenta de un problema operativo una vez que se esté resolviendo por completo y sea mucho más difícil de mitigar. Entre los aspectos generales que deben supervisarse se incluyen:
+ ¿El origen ingiere datos?
+ ¿Los datos se leen desde el origen (desde la perspectiva del origen)?
+ ¿La aplicación Flink recibe datos?
+ ¿La aplicación Flink puede mantener el ritmo o se está quedando atrás?
+ ¿La aplicación Flink conserva los datos en el receptor (desde la perspectiva de la aplicación)?
+ ¿El receptor recibe datos?

Por lo tanto, deberían considerarse métricas más específicas para la aplicación Flink. Este [CloudWatch panel](https://github.com/aws-samples/kda-metrics-dashboard) proporciona un buen punto de partida. Para obtener más información sobre las métricas que deben supervisarse para las aplicaciones de producción, consulte [Usa CloudWatch alarmas con Amazon Managed Service para Apache Flink](monitoring-metrics-alarms.md). Estas métricas incluyen:
+ **records\$1lag\$1max** y **millisBehindLatest**: si la aplicación consume contenido de Kinesis o Kafka, estas métricas indican si la aplicación se está retrasando y es necesario escalarla 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.
+ **CPUUtilización **heapMemoryUtilization****y: estas métricas proporcionan una buena indicación de la utilización general de los recursos de la aplicación y se pueden utilizar para un escalado proactivo, a menos que la aplicación esté vinculada. I/O 
+ **tiempo de inactividad**: 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.
+ **lastCheckpointSize**y *lastCheckpointDuration*: estas métricas controlan 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)`.
+ **numberOfFailedPuntos de control**: 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. Se recomiendamonitorizar `RATE(numberOfFailedCheckpoints)` para avisar sobre el gradiente y no sobre los valores absolutos.

# Configuración de registro de aplicación en Managed Service para Apache Flink
<a name="cloudwatch-logs"></a>

Al añadir una opción de CloudWatch registro de Amazon a su aplicación Managed Service for Apache Flink, puede supervisar los eventos de la aplicación o los problemas de configuración.

En este tema se describe cómo configurar la aplicación para escribir los eventos de la aplicación en una transmisión de CloudWatch registros. Una opción de CloudWatch registro es un conjunto de ajustes y permisos de la aplicación que la aplicación utiliza para configurar la forma en que escribe los eventos de la aplicación en los CloudWatch registros. Puede agregar y configurar una opción de CloudWatch registro mediante la tecla () Consola de administración de AWS o la tecla AWS Command Line Interface (AWS CLI).

Tenga en cuenta lo siguiente sobre la adición de una opción de CloudWatch registro a su aplicación:
+ Al añadir una opción de CloudWatch registro mediante la consola, Managed Service for Apache Flink crea el grupo de CloudWatch registros y el flujo de registros automáticamente y añade los permisos que la aplicación necesita para escribir en el flujo de registros. 
+ Al añadir una opción de CloudWatch registro mediante la API, también debe crear el grupo de registros y el flujo de registros de la aplicación, además de añadir los permisos que la aplicación necesita para escribir en el flujo de registros.

## Configure el CloudWatch registro mediante la consola
<a name="cloudwatch-logs-console"></a>

Al habilitar el CloudWatch registro de la aplicación en la consola, se crean CloudWatch automáticamente un grupo de registros y un flujo de registros. Además, la política de permisos de la aplicación se actualiza con los permisos para escribir en la transmisión. 

Managed Service for Apache Flink crea un grupo de registros denominado según la siguiente convención, donde *ApplicationName* es el nombre de la aplicación.

```
/aws/kinesis-analytics/ApplicationName
```

Managed Service para Apache Flink crea un flujo de registro en el nuevo grupo de registro con el siguiente nombre.

```
kinesis-analytics-log-stream
```

Para establecer el nivel de métricas de supervisión de la aplicación y el nivel de registro de supervisión, utilice la sección del **nivel de registro de supervisión** de la página de **configuración de la aplicación**. Para obtener más información acerca de los niveles del flujo de la aplicación, consulte [Control de niveles de monitoreo de aplicaciones](#cloudwatch_levels).

## Configurar el CloudWatch registro mediante la CLI
<a name="cloudwatch-logs-api"></a>

Para añadir una opción de CloudWatch registro mediante el AWS CLI, complete lo siguiente: 
+ Cree un grupo de CloudWatch registros y un flujo de registros.
+ Añada una opción de registro al crear una aplicación mediante la [CreateApplication](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)acción o añada una opción de registro a una aplicación existente mediante la [AddApplicationCloudWatchLoggingOption](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)acción.
+ Añada permisos a la política de la aplicación para escribir en los registros.

### Cree un grupo de CloudWatch registros y un flujo de registros
<a name="cloudwatch-logs-api-create"></a>

Puede crear un grupo de CloudWatch registros y transmitirlos mediante la consola de CloudWatch registros o la API. Para obtener información sobre cómo crear un grupo de CloudWatch registros y un flujo de registros, consulte [Trabajar con grupos de registros y flujos de registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

### Trabaje con las opciones de CloudWatch registro de aplicaciones
<a name="adding_cloudwatch"></a>

Utilice las siguientes acciones de la API para añadir una opción de CloudWatch registro a una aplicación nueva o existente o para cambiar una opción de registro de una aplicación existente. Para obtener información sobre cómo utilizar un archivo JSON como entrada para una acción de API, consulte [Ejemplo de código de API de Managed Service para Apache Flink](api-examples.md).

#### Agregue una opción de CloudWatch registro al crear una aplicación
<a name="add_cloudwatch_create"></a>

En el siguiente ejemplo, se muestra cómo utilizar la `CreateApplication` acción para añadir una opción de CloudWatch registro al crear una aplicación. En el ejemplo, reemplace *Amazon Resource Name (ARN) of the CloudWatch Log stream to add to the new application* por su propia información. Para obtener más información sobre la acción, consulte [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).

```
{
    "ApplicationName": "test",
    "ApplicationDescription": "test-application-description",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation":{
                              "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket",
                              "FileKey": "myflink.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        }
    },
    "CloudWatchLoggingOptions": [{
      "LogStreamARN": "<Amazon Resource Name (ARN) of the CloudWatch log stream to add to the new application>"
	}]
}
```

#### Agregue una opción de CloudWatch registro a una aplicación existente
<a name="add_to_existing_app"></a>

En el siguiente ejemplo, se muestra cómo utilizar la `AddApplicationCloudWatchLoggingOption` acción para añadir una opción de CloudWatch registro a una aplicación existente. En el ejemplo, sustituya cada *user input placeholder* una por su propia información. Para obtener más información sobre la acción, consulte [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html).

```
{
   "ApplicationName": "<Name of the application to add the log option to>",
   "CloudWatchLoggingOption": { 
      "LogStreamARN": "<ARN of the log stream to add to the application>"
   },
   "CurrentApplicationVersionId": <Version of the application to add the log to>
}
```

#### Actualice una opción de CloudWatch registro existente
<a name="update_existing"></a>

En el siguiente ejemplo, se muestra cómo utilizar la `UpdateApplication` acción para modificar una opción de CloudWatch registro existente. En el ejemplo, sustituya cada *user input placeholder* una por su propia información. Para obtener más información sobre la acción, consulte [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).

```
{
   "ApplicationName": "<Name of the application to update the log option for>",
   "CloudWatchLoggingOptionUpdates": [ 
         { 
            "CloudWatchLoggingOptionId": "<ID of the logging option to modify>",
            "LogStreamARNUpdate": "<ARN of the new log stream to use>"
         }
      ],
   "CurrentApplicationVersionId": <ID of the application version to modify>
}
```

#### Elimine una opción de CloudWatch registro de una aplicación
<a name="delete-log"></a>

En el siguiente ejemplo, se muestra cómo utilizar la `DeleteApplicationCloudWatchLoggingOption` acción para eliminar una opción de CloudWatch registro existente. En el ejemplo, sustituya cada *user input placeholder* una por su propia información. Para obtener más información sobre la acción, consulte [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html).

```
{
   "ApplicationName": "<Name of application to delete log option from>",
   "CloudWatchLoggingOptionId": "<ID of the application log option to delete>",
   "CurrentApplicationVersionId": <Version of the application to delete the log option from>
}
```

#### Establecimiento del nivel de registro de la aplicación
<a name="cloudwatch-level"></a>

Para establecer el nivel de registro de la aplicación, utilice el parámetro [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html) 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 [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html) 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). 

Para obtener más información acerca de los niveles del flujo de la aplicación, consulte [Control de niveles de monitoreo de aplicaciones](#cloudwatch_levels).

##### Establecimiento del nivel de registro de la aplicación al crear una aplicación
<a name="cloudwatch-level-create"></a>

El siguiente ejemplo de solicitud 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) establece el nivel de registro de la aplicación en `INFO`.

```
{
   "ApplicationName": "MyApplication",                    
   "ApplicationDescription": "My Application Description",
   "ApplicationConfiguration": {
      "ApplicationCodeConfiguration":{
      "CodeContent":{
        "S3ContentLocation":{
          "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket",
          "FileKey":"myflink.jar",
          "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345"
        }
      },
      "CodeContentType":"ZIPFILE"
      },
      "FlinkApplicationConfiguration": 
         "MonitoringConfiguration": { 
            "ConfigurationType": "CUSTOM",
            "LogLevel": "INFO"
         }
      },
   "RuntimeEnvironment": "FLINK-1_15",
   "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole"
}
```

##### Actualización del nivel de registro de la aplicación
<a name="cloudwatch-level-update"></a>

El siguiente ejemplo de solicitud 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) establece el nivel de registro de la aplicación en `INFO`.

```
{
   "ApplicationConfigurationUpdate": {
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "LogLevelUpdate": "INFO"
         }
      }
   }
}
```

### Agregue permisos para escribir en el flujo de CloudWatch registro
<a name="enable_putlogevents"></a>

El servicio gestionado de Apache Flink necesita permisos para escribir errores de configuración en él. CloudWatch Puede añadir estos permisos a la función AWS Identity and Access Management (IAM) que asume Managed Service for Apache Flink.

Para obtener más información sobre el uso de un rol de IAM para Managed Service para Apache Flink, consulte [Identidad y gestión de acceso para Amazon Managed Service para Apache Flink](security-iam.md).

#### Política de confianza
<a name="enable_putlogevents_trust_policy"></a>

Para conceder permisos a Managed Service para Apache Flink para asumir un rol de IAM, puede asignar la siguiente política de confianza al rol.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "kinesisanalytics.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

#### Política de permisos
<a name="enable_putlogevents_permissions_policy"></a>

Para conceder permisos a una aplicación para que escriba eventos de registro CloudWatch desde un recurso de Managed Service for Apache Flink, puede utilizar la siguiente política de permisos de IAM. Proporcione los nombres de recursos de Amazon (ARNs) correctos para su grupo de registros y su transmisión.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt0123456789000",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:log-stream:my-log-stream*",
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:*",
                "arn:aws:logs:us-east-1:123456789012:log-group:*"
            ]
        }
    ]
}
```

------

## Control de niveles de monitoreo de aplicaciones
<a name="cloudwatch_levels"></a>

Usted controla la generación de los mensajes de registro de la aplicación mediante el nivel de *métricas de monitoreo* y el *nivel de registro de monitoreo de* la aplicación.

El nivel de métricas de supervisión de la aplicación controla la granularidad de los mensajes de registro. Los niveles de las métricas de monitoreo se definen de la siguiente manera:
+ **Aplicación**: las métricas se aplican a toda la aplicación.
+ **Tarea**: las métricas se ajustan al alcance de cada tarea. Para obtener más información acerca de las tareas, consulte [Implementación del escalado de aplicaciones en Managed Service para Apache Flink](how-scaling.md).
+ **Operador**: se determina el alcance de las métricas para cada operador. Para obtener más información sobre los operadores, consulte [Transforme los datos mediante operadores en Managed Service for Apache Flink con la API DataStream](how-operators.md).
+ **Paralelismo**: las métricas se basan en el paralelismo de la aplicación. Solo puede establecer este nivel de métricas mediante el [ MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)parámetro de la [ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)API. No puede establecer este nivel de métricas mediante la consola. Consulte [Implementación del escalado de aplicaciones en Managed Service para Apache Flink](how-scaling.md) para obtener información sobre el paralelismo.

El nivel de registro de supervisión de la aplicación controla la verbosidad del registro de la aplicación. Los niveles de registro de monitoreo se definen de la siguiente manera:
+ **Error**: posibles eventos catastróficos de la aplicación.
+ **Advertencia**: situaciones potencialmente dañinas de la aplicación.
+ **Información**: eventos de fallo informativos y transitorios de la aplicación. Se recomiendautilizar este nivel de registro.
+ **Depuración**: eventos informativos detallados que son muy útiles para depurar una aplicación. *Nota*: utilice este nivel únicamente con fines de depuración temporal. 

## Aplicación de prácticas recomendadas de registro
<a name="cloudwatch_bestpractices"></a>

Se recomienda que la aplicación utilice el nivel de registro de **información**. Se recomiendaeste nivel para asegurarse de que aparecen los errores de Apache Flink, que se registran en el nivel de **información** y no en el nivel de **error**.

Se recomienda que utilice el nivel de **depuración** solo de forma temporal mientras investiga los problemas de las aplicaciones. Vuelva al nivel de **información** cuando se resuelva el problema. El uso del nivel de registro de **depuración** afectará significativamente al rendimiento de la aplicación.

El registro excesivo también puede afectar significativamente al rendimiento de la aplicación. Por ejemplo, se recomienda que no escriba una entrada de registro para cada registro procesado. El registro excesivo puede provocar graves cuellos de botella en el procesamiento de datos y provocar retrasos a la hora de leer los datos de las fuentes.

## Realización de soluciones de problemas de registro
<a name="cloudwatch_troubleshooting"></a>

Si los registros de la aplicación no se escriben en el flujo de registro, compruebe lo siguiente: 
+ Compruebe que las políticas y el rol de IAM de su aplicación sean correctos. La política de su aplicación necesita los siguientes permisos para acceder a su flujo de registro:
  + `logs:PutLogEvents`
  + `logs:DescribeLogGroups`
  + `logs:DescribeLogStreams`

  Para obtener más información, consulte [Agregue permisos para escribir en el flujo de CloudWatch registro](#enable_putlogevents).
+ Comprobar que la aplicación se esté ejecutando. Para comprobar el estado de la aplicación, consulta la página de la aplicación en la consola o usa las [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)acciones [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)o.
+ Supervise CloudWatch las métricas, por ejemplo, `downtime` para diagnosticar otros problemas de la aplicación. Para obtener información sobre la lectura de CloudWatch las métricas, consulte[Métricas y dimensiones en Managed Service para Apache Flink](metrics-dimensions.md).

## Utilice CloudWatch Logs Insights
<a name="cloudwatch_next"></a>

Una vez que haya habilitado el CloudWatch registro en su aplicación, puede usar CloudWatch Logs Insights para analizar los registros de la aplicación. Para obtener más información, consulte [Analice los CloudWatch registros con Logs Insights](cloudwatch-logs-reading.md).

# Analice los CloudWatch registros con Logs Insights
<a name="cloudwatch-logs-reading"></a>

Una vez que haya agregado una opción de CloudWatch registro a su aplicación como se describe en la sección anterior, puede usar CloudWatch Logs Insights para consultar sus flujos de registro en busca de eventos o errores específicos.

CloudWatch Logs Insights te permite buscar y analizar de forma interactiva tus datos de registro en CloudWatch Logs. 

Para obtener información sobre cómo empezar a utilizar CloudWatch Logs Insights, consulte [Analizar los datos de registro con CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).

## Ejecutar una consulta de muestra
<a name="cloudwatch-logs-reading-run"></a>

En esta sección se describe cómo ejecutar un ejemplo de consulta de CloudWatch Logs Insights.

**Requisitos previos**
+ Los grupos de registros y los flujos de registros existentes se configuran en CloudWatch Logs.
+ Los registros existentes se almacenan en CloudWatch los registros.

Si utilizas servicios como AWS CloudTrail Amazon Route 53 o Amazon VPC, probablemente ya hayas configurado los registros de esos servicios para que vayan a CloudWatch Logs. Para obtener más información sobre el envío de CloudWatch registros a Logs, consulte [Introducción a CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html).

Las consultas en CloudWatch Logs Insights devuelven un conjunto de campos de eventos de registro o el resultado de una agregación matemática u otra operación realizada en el registro de eventos. Esta sección muestra una consulta que devuelve una lista de eventos de registro.

**Para ejecutar una consulta de ejemplo CloudWatch de Logs Insights**

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, elija **Información**.

   

1. El editor de consultas cerca de la parte superior de la pantalla contiene una consulta predeterminada que devuelve los 20 eventos de registro más recientes. Encima del editor de consultas, seleccione un grupo de registro que se va a consultar.

   

   Al seleccionar un grupo de CloudWatch registros, Logs Insights detecta automáticamente los campos de los datos del grupo de registros y los muestra en **Campos detectados** en el panel derecho. También muestra un gráfico de barras de eventos de registro en este grupo de registro con el paso del tiempo. Este gráfico de barras muestra la distribución de los eventos en el grupo de registro que coincide con la consulta y el intervalo de tiempo, no solo los eventos que se muestran en la tabla.

1. Elija **Ejecutar consulta**.

   Aparecen los resultados de la consulta. En este ejemplo, los resultados son los últimos 20 eventos de registro de cualquier tipo.

1. Para ver todos los campos para uno de los eventos de registro devueltos, seleccione la flecha que aparece a la izquierda de ese evento de registro.

Para obtener más información sobre cómo ejecutar y modificar las consultas de CloudWatch Logs Insights, consulte [Ejecutar y modificar una consulta de muestra](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_RunSampleQuery.html).

## Revisión de consultas de ejemplo
<a name="cloudwatch-logs-reading-examples"></a>

Esta sección contiene consultas de ejemplo de CloudWatch Logs Insights para analizar los registros de aplicaciones de Managed Service for Apache Flink. Estas consultas buscan varios ejemplos de condiciones de error y sirven como plantillas para escribir consultas que encuentren otras condiciones de error. 

**nota**  
Sustituya la región (*us-west-2*), el identificador de cuenta (*012345678901*) y el nombre de la aplicación (*YourApplication*) en los siguientes ejemplos de consultas por la región de la aplicación y el identificador de cuenta.

**Topics**
+ [Operaciones de análisis: distribución de las tareas](#cloudwatch-logs-reading-tm)
+ [Operaciones de análisis: cambio en el paralelismo](#cloudwatch-logs-reading-auto)
+ [Errores de análisis: acceso denegado](#cloudwatch-logs-reading-access)
+ [Errores de análisis: no se encontró la fuente o el receptor](#cloudwatch-logs-reading-con)
+ [Errores de análisis: errores relacionados con las tareas de la aplicación](#cloudwatch-logs-reading-apps)

### Operaciones de análisis: distribución de las tareas
<a name="cloudwatch-logs-reading-tm"></a>

La siguiente consulta de CloudWatch Logs Insights devuelve el número de tareas que el administrador de tareas de Apache Flink distribuye entre los administradores de tareas. Debe configurar el período de tiempo de la consulta para que coincida con la ejecución de un trabajo, de modo que la consulta no devuelva tareas de trabajos anteriores. Para obtener más información acerca del Paralelismo, consulte [Implementación del escalado de aplicaciones](how-scaling.md). 

```
fields @timestamp, message
| filter message like /Deploying/
| parse message " to flink-taskmanager-*" as @tmid
| stats count(*) by @tmid
| sort @timestamp desc
| limit 2000
```

La siguiente consulta de CloudWatch Logs Insights devuelve las subtareas asignadas a cada administrador de tareas. La cantidad total de subtareas es la suma del paralelismo de cada tarea. El paralelismo de las tareas se deriva del paralelismo de los operadores y, de forma predeterminada, es el mismo que el paralelismo de la aplicación, a menos que se modifique en el código especificando `setParallelism`. Para obtener información sobre cómo configurar el paralelismo de operadores, consulte [Configuración del paralelismo: nivel del operador](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/parallel.html#operator-level) en la [documentación de Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

```
fields @timestamp, @tmid, @subtask
| filter message like /Deploying/
| parse message "Deploying * to flink-taskmanager-*" as @subtask, @tmid
| sort @timestamp desc
| limit 2000
```

Para obtener más información acerca de la programación de tareas, consulte [Trabajos y programación](https://nightlies.apache.org/flink/flink-docs-release-1.15/internals/job_scheduling.html) en la [documentación de Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

### Operaciones de análisis: cambio en el paralelismo
<a name="cloudwatch-logs-reading-auto"></a>

La siguiente consulta de CloudWatch Logs Insights devuelve los cambios en el paralelismo de una aplicación (por ejemplo, debido al escalado automático). Esta consulta también devuelve los cambios manuales en el paralelismo de la aplicación. Para obtener más información sobre el escalado automático, consulte [Uso del escalado automático en Managed Service para Apache Flink](how-scaling-auto.md).

```
fields @timestamp, @parallelism
| filter message like /property: parallelism.default, /
| parse message "default, *" as @parallelism
| sort @timestamp asc
```

### Errores de análisis: acceso denegado
<a name="cloudwatch-logs-reading-access"></a>

La siguiente consulta de CloudWatch Logs Insights devuelve registros. `Access Denied`

```
fields @timestamp, @message, @messageType
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /AccessDenied/
| sort @timestamp desc
```

### Errores de análisis: no se encontró la fuente o el receptor
<a name="cloudwatch-logs-reading-con"></a>

La siguiente consulta CloudWatch de Logs Insights devuelve `ResourceNotFound` registros. `ResourceNotFound`los registros se generan si no se encuentra una fuente o un receptor de Kinesis.

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /ResourceNotFoundException/
| sort @timestamp desc
```

### Errores de análisis: errores relacionados con las tareas de la aplicación
<a name="cloudwatch-logs-reading-apps"></a>

La siguiente consulta de CloudWatch Logs Insights devuelve los registros de errores relacionados con las tareas de una aplicación. Estos registros se generan si el estado de una aplicación cambia de `RUNNING` a `RESTARTING`.

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to RESTARTING/
| sort @timestamp desc
```

En el caso de las aplicaciones que utilizan la versión 1.8.2 de Apache Flink y versiones anteriores, los errores relacionados con las tareas harán que el estado de la aplicación cambie de `RUNNING` a `FAILED`. Cuando utilice Apache Flink 1.8.2 y versiones anteriores, utilice la siguiente consulta para buscar errores relacionados con las tareas de la aplicación:

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to FAILED/
| sort @timestamp desc
```

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

# Escribe mensajes personalizados en los CloudWatch registros
<a name="cloudwatch-logs-writing"></a>

Puede escribir mensajes personalizados en el registro de la aplicación Managed Service for Apache Flink. CloudWatch Para ello, utilice la biblioteca [https://logging.apache.org/log4j/](https://logging.apache.org/log4j/) o la biblioteca [https://www.slf4j.org/](https://www.slf4j.org/) de Apache.

**Topics**
+ [Escriba en los CloudWatch registros mediante Log4J](#cloudwatch-logs-writing-log4j)
+ [Escribe en los CloudWatch registros con J SLF4](#cloudwatch-logs-writing-slf4j)

## Escriba en los CloudWatch registros mediante Log4J
<a name="cloudwatch-logs-writing-log4j"></a>

1. Agregue las siguientes dependencias al archivo `pom.xml` de su aplicación:

   ```
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <version>2.6.1</version>
   </dependency>
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.6.1</version>
   </dependency>
   ```

1. Incluya el objeto de la biblioteca:

   ```
   import org.apache.logging.log4j.Logger;
   ```

1. Cree una instancia del objeto `Logger`, pasando su clase de aplicación:

   ```
   private static final Logger log = LogManager.getLogger.getLogger(YourApplicationClass.class);
   ```

1. Escriba en el registro usando `log.info`. Se escribe una gran cantidad de mensajes en el registro de la aplicación. Para facilitar el filtrado de los mensajes personalizados, utilice el nivel de registro `INFO` de la aplicación.

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

La aplicación escribe un registro en el registro con un mensaje similar al siguiente:

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

## Escribe en los CloudWatch registros con J SLF4
<a name="cloudwatch-logs-writing-slf4j"></a>

1. Agregue la siguiente dependencia al archivo `pom.xml` de su aplicación:

   ```
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.7</version>
       <scope>runtime</scope>
   </dependency>
   ```

1. Incluya los objetos de la biblioteca:

   ```
   import org.slf4j.Logger;
   import org.slf4j.LoggerFactory;
   ```

1. Cree una instancia del objeto `Logger`, pasando su clase de aplicación:

   ```
   private static final Logger log = LoggerFactory.getLogger(YourApplicationClass.class);
   ```

1. Escriba en el registro usando `log.info`. Se escribe una gran cantidad de mensajes en el registro de la aplicación. Para facilitar el filtrado de los mensajes personalizados, utilice el nivel de registro `INFO` de la aplicación.

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

La aplicación escribe un registro en el registro con un mensaje similar al siguiente:

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

# Servicio gestionado de registros para llamadas a la API de Apache Flink con AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Managed Service for Apache Flink está integrado con AWS CloudTrail un servicio que proporciona un registro de las acciones realizadas por un usuario, un rol o un AWS servicio del Managed Service for Apache Flink. CloudTrail captura todas las llamadas a la API del servicio gestionado de Apache Flink como eventos. Las llamadas capturadas incluyen las llamadas realizadas desde el servicio administrado para la consola de Apache Flink y las llamadas de código al servicio administrado para las operaciones de la API de Apache Flink. Si crea una ruta, puede habilitar la entrega continua de CloudTrail eventos a un bucket de Amazon S3, incluidos los eventos de Managed Service for Apache Flink. Si no configura una ruta, podrá ver los eventos más recientes en la CloudTrail consola, en el **historial** de eventos. Con la información recopilada por usted CloudTrail, puede determinar la solicitud que se realizó a Managed Service for Apache Flink, la dirección IP desde la que se realizó la solicitud, quién la realizó, cuándo se realizó y detalles adicionales. 

Para obtener más información CloudTrail, consulte la [Guía del AWS CloudTrail usuario](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Información sobre el servicio gestionado para Apache Flink en CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail está activado en su AWS cuenta al crear la cuenta. Cuando se produce una actividad en Managed Service for Apache Flink, esa actividad se registra en un CloudTrail evento junto con otros eventos de AWS servicio en el **historial** de eventos. Puede ver, buscar y descargar los eventos recientes en su AWS cuenta. Para obtener más información, consulte [Visualización de eventos con el historial de CloudTrail eventos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Para obtener un registro continuo de los eventos de su AWS cuenta, incluidos los eventos del servicio gestionado de Apache Flink, cree un registro. Un *rastro* permite CloudTrail entregar archivos de registro a un bucket de Amazon S3. De forma predeterminada, cuando crea una ruta en la consola, la ruta se aplica a todas AWS las regiones. La ruta registra los eventos de todas las regiones de la AWS partición y envía los archivos de registro al bucket de Amazon S3 que especifique. Además, puede configurar otros AWS servicios para analizar más a fondo los datos de eventos recopilados en los CloudTrail registros y actuar en función de ellos. Para más información, consulte los siguientes temas: 
+ [Introducción a la creación de registros de seguimiento](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail Integraciones y servicios compatibles](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Configuración de las notificaciones de Amazon SNS para CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Recibir archivos de CloudTrail registro de varias regiones](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) y [recibir archivos de CloudTrail registro de varias cuentas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Todas las acciones del servicio gestionado para Apache Flink se registran CloudTrail y se documentan en la referencia de la [API del servicio gestionado para Apache Flink](/managed-flink/latest/apiv2/Welcome.html). Por ejemplo, las llamadas a las ` [UpdateApplication](/managed-flink/latest/apiv2/API_UpdateApplication.html)` acciones `[CreateApplication](/managed-flink/latest/apiv2/API_CreateApplication.html)` y las acciones generan entradas en los archivos de CloudTrail registro. 

Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de identidad del usuario le ayuda a determinar lo siguiente: 
+ Si la solicitud se realizó con credenciales de usuario root o AWS Identity and Access Management (IAM).
+ Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
+ Si la solicitud la realizó otro AWS servicio.

Para obtener más información, consulte el [Elemento userIdentity de CloudTrail ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Comprensión de las entradas de archivos de registro de Managed Service para Apache Flink
<a name="understanding-service-name-entries"></a>

Un rastro es una configuración que permite la entrega de eventos como archivos de registro a un bucket de Amazon S3 que usted especifique. CloudTrail Los archivos de registro contienen una o más entradas de registro. Un evento representa una solicitud única de cualquier fuente e incluye información sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud, etc. CloudTrail Los archivos de registro no son un registro ordenado de las llamadas a la API pública, por lo que no aparecen en ningún orden específico. 

En el siguiente ejemplo, se muestra una entrada de CloudTrail registro que muestra las [DescribeApplication](/managed-flink/latest/apiv2/API_DescribeApplication.html)acciones [AddApplicationCloudWatchLoggingOption](/managed-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)y.

```
{
    "Records": [
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2019-03-07T01:19:47Z",
            "eventSource": "kinesisanlaytics.amazonaws.com",
            "eventName": "AddApplicationCloudWatchLoggingOption",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "applicationName": "cloudtrail-test",
                "currentApplicationVersionId": 1,
                "cloudWatchLoggingOption": {
                    "logStreamARN": "arn:aws:logs:us-east-1:012345678910:log-group:cloudtrail-test:log-stream:flink-cloudwatch"
                }
            },
            "responseElements": {
                "cloudWatchLoggingOptionDescriptions": [
                    {
                        "cloudWatchLoggingOptionId": "2.1",
                        "logStreamARN": "arn:aws:logs:us-east-1:012345678910:log-group:cloudtrail-test:log-stream:flink-cloudwatch"
                    }
                ],
                "applicationVersionId": 2,
                "applicationARN": "arn:aws:kinesisanalyticsus-east-1:012345678910:application/cloudtrail-test"
            },
            "requestID": "18dfb315-4077-11e9-afd3-67f7af21e34f",
            "eventID": "d3c9e467-db1d-4cab-a628-c21258385124",
            "eventType": "AwsApiCall",
            "apiVersion": "2018-05-23",
            "recipientAccountId": "012345678910"
        },
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2019-03-12T02:40:48Z",
            "eventSource": "kinesisanlaytics.amazonaws.com",
            "eventName": "DescribeApplication",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "applicationName": "sample-app"
            },
            "responseElements": null,
            "requestID": "3e82dc3e-4470-11e9-9d01-e789c4e9a3ca",
            "eventID": "90ffe8e4-9e47-48c9-84e1-4f2d427d98a5",
            "eventType": "AwsApiCall",
            "apiVersion": "2018-05-23",
            "recipientAccountId": "012345678910"
        }
    ]
}
```