Supervisar Kinesis Client Library con Amazon CloudWatch
Kinesis Client Library (KCL) para Amazon Kinesis Data Streams publica métricas personalizadas de Amazon CloudWatch en su nombre. Para ello, utiliza el nombre de su aplicación de KCL como espacio de nombres. Para ver estas métricas, vaya a la consola de CloudWatch
Existe un cargo nominal para las métricas cargadas en CloudWatch por KCL, específicamente, se aplican los cargos por métricas personalizadas de Amazon CloudWatch y solicitudes a la API de Amazon CloudWatch. Para obtener más información, consulte Precios de Amazon CloudWatch
Temas
Métricas y espacio de nombres
El espacio de nombres que se utiliza para cargar las métricas es el nombre de aplicación que se ha especificado al lanzar KCL.
Niveles y dimensiones de las métricas
Existen dos opciones para controlar qué métricas se cargan en CloudWatch:
- Niveles de métricas
-
A cada métrica se le asigna un nivel individual. Al establecer un nivel de informe de métricas, las métricas con un nivel individual por debajo del nivel de informe no se envían a CloudWatch. Los niveles son:
NONE,SUMMARYyDETAILED. El valor predeterminado esDETAILED; es decir, se envían todas las métricas a CloudWatch. El nivel de informeNONEse utiliza cuando no se desea enviar ninguna métrica. Para obtener información sobre qué niveles se asignan a las métricas, consulte Lista de métricas. - Dimensiones habilitadas
-
Cada métrica de KCL tiene asociadas determinadas dimensiones que también se envían a CloudWatch. En KCL 2.x, si KCL se configura para procesar un solo flujo de datos, todas las dimensiones de las métricas (
Operation,ShardIdyWorkerIdentifier) están habilitadas de forma predeterminada. Además, en KCL 2.x, si KCL se configura para procesar un único flujo de datos, la dimensiónOperationno se puede deshabilitar. En KCL 2.x, si KCL se configura para procesar varios flujos de datos, todas las dimensiones de las métricas (Operation,ShardId,StreamIdyWorkerIdentifier) están habilitadas de forma predeterminada. Además, en KCL 2.x, si KCL se configura para procesar varios flujos de datos, las dimensionesOperationyStreamIdno se pueden deshabilitar. La dimensiónStreamIdsolo está disponible para métricas por partición.En KCL 1.x, solo las dimensiones
OperationyShardIdestán habilitadas de forma predeterminada. La dimensiónWorkerIdentifierestá deshabilitada. En KCL 1.x, la dimensiónOperationno se puede deshabilitar.Para obtener más información acerca de las dimensiones de las métricas de CloudWatch, consulte la sección Dimensiones en el tema Conceptos de Amazon CloudWatch en la Guía del usuario de Amazon CloudWatch.
Cuando la dimensión
WorkerIdentifierestá habilitada, si se utiliza un valor diferente para la propiedad de ID de proceso de trabajo cada vez que se reinicia un proceso de trabajo concreto de KCL, se enviarán a CloudWatch nuevos conjuntos de métricas con nuevos valores en la dimensiónWorkerIdentifier. Si necesita que el valor de la dimensiónWorkerIdentifiersea el mismo cada vez que un proceso de trabajo de KCL determinado se reinicie, debe especificar explícitamente el mismo valor del ID del proceso de trabajo durante la inicialización para cada proceso de trabajo. Tenga en cuenta que el valor del ID de proceso de trabajo para cada proceso de trabajo de KCL activo deberá ser único entre todos los procesos de trabajo de KCL.
Configuración de métricas
Las dimensiones y los niveles habilitados de las métricas se pueden configurar mediante la instancia KinesisClientLibConfiguration, que se transfiere al proceso de trabajo al lanzar la aplicación de KCL. En el caso de MultiLangDaemon, las propiedades metricsLevel y metricsEnabledDimensions se pueden especificar en el archivo .properties utilizado para lanzar la aplicación MultiLangDaemon de KCL.
Los niveles de las métricas pueden tener asignado uno de estos tres valores: NONE, SUMMARY o DETAILED. Los valores de las dimensiones habilitadas deben ser valores de cadena separados por comas con la lista de dimensiones permitidas para las métricas de CloudWatch. Las dimensiones utilizadas por la aplicación de KCL son Operation, ShardId y WorkerIdentifier.
Lista de métricas
En las siguientes tablas se enumeran las métricas de KCL agrupadas por ámbito y operación.
Métricas por aplicación de KCL
Estas métricas se agrupan para todos los procesos de trabajo de KCL en el ámbito de la aplicación, según defina el espacio de nombres de Amazon CloudWatch.
Temas
LeaseAssignmentManager
La operación LeaseAssignmentManager es responsable de asignar los arrendamientos a los procesos de trabajo y reequilibrar los arrendamientos entre los procesos de trabajo para lograr una utilización uniforme de los recursos de los procesos de trabajo. La lógica de esta operación comprende leer los metadatos relacionados con el arrendamiento de la tabla de arrendamiento y las métricas de la tabla de métricas de los procesos de trabajo, y realizar las asignaciones de arrendamiento.
| Métrica | Descripción |
|---|---|
|
LeaseAndWorkerMetricsLoad.Time |
Tiempo necesario para cargar todos los arrendamientos y las métricas de los procesos de trabajo en el administrador de asignación de arrendamientos (LAM), el nuevo algoritmo de asignación de arrendamientos y equilibrio de carga presentado en KCL 3.x. Nivel de métrica: Detailed Unidades: milisegundos |
| TotalLeases |
Cantidad total de arrendamientos para la aplicación KCL actual. Nivel de métrica: Summary Unidades: recuento |
| NumWorkers |
Cantidad total de procesos de trabajo en la aplicación KCL actual. Nivel de métrica: Summary Unidades: recuento |
|
AssignExpiredOrUnassignedLeases.Time |
Periodo en que se realiza la asignación en memoria de los arrendamientos caducados. Nivel de métrica: Detailed Unidades: milisegundos |
| LeaseSpillover |
Cantidad de arrendamientos que no se asignaron debido a que se alcanzó el límite de cantidad máxima de arrendamientos o del rendimiento máximo por proceso de trabajo. Nivel de métrica: Summary Unidades: recuento |
|
BalanceWorkerVariance.Time |
Periodo en que se realiza un equilibrio en la memoria de los arrendamientos entre los procesos de trabajo. Nivel de métrica: Detailed Unidades: milisegundos |
|
NumOfLeasesReassignment |
Cantidad total de reasignaciones de arrendamiento realizadas en la iteración de reasignación actual. Nivel de métrica: Summary Unidades: recuento |
|
FailedAssignmentCount |
Cantidad de errores en las llamadas de AssignLease a la tabla de arrendamiento de DynamoDB. Nivel de métrica: Detailed Unidades: recuento |
|
ParallelyAssignLeases.Time |
Periodo en que se incluyen las nuevas asignaciones en la tabla de arrendamiento de DynamoDB. Nivel de métrica: Detailed Unidades: milisegundos |
|
ParallelyAssignLeases.Success |
Cantidad de nuevas tareas asignadas correctamente. Nivel de métrica: Detailed Unidades: recuento |
|
TotalStaleWorkerMetricsEntry |
Cantidad total de entradas de métricas de procesos de trabajo que deben limpiarse. Nivel de métrica: Detailed Unidades: recuento |
| StaleWorkerMetricsCleanup.Time |
Periodo en que se elimina la entrada de métricas de procesos de trabajo de la tabla de métricas de procesos de trabajo de DynamoDB. Nivel de métrica: Detailed Unidades: milisegundos |
| Time |
Periodo empleado por la operación Nivel de métrica: Summary Unidades: milisegundos |
| Success |
Número de veces que se completa correctamente la operación Nivel de métrica: Summary Unidades: recuento |
| ForceLeaderRelease |
Indica que el administrador de asignaciones de arrendamiento ha fallado tres veces consecutivas y que el proceso de trabajo líder está liberando al liderazgo. Nivel de métrica: Summary Unidades: recuento |
|
NumWorkersWithInvalidEntry |
Cantidad de entradas de métricas de procesos de trabajo que se consideran inválidas. Nivel de métrica: Summary Unidades: recuento |
|
NumWorkersWithFailingWorkerMetric |
Cantidad de entradas de métricas de procesos de trabajo que tienen -1 (que representa el valor de la métrica de proceso de trabajo no está disponible) como uno de los valores de las métricas de procesos de trabajo. Nivel de métrica: Summary Unidades: recuento |
|
LeaseDeserializationFailureCount |
Entrada de arrendamiento de la tabla de arrendamiento que no se pudo deserializar. Nivel de métrica: Summary Unidades: recuento |
InitializeTask
La operación InitializeTask es responsable de inicializar el procesador de registros de la aplicación de KCL. La lógica de esta operación incluye la obtención de un iterador de particiones de Kinesis Data Streams y la inicialización del procesador de registros.
| Métrica | Descripción |
|---|---|
| KinesisDataFetcher.getIterator.Success |
Número de operaciones Nivel de métrica: Detailed Unidades: recuento |
| KinesisDataFetcher.getIterator.Time |
Tiempo que tarda la operación Nivel de métrica: Detailed Unidades: milisegundos |
| RecordProcessor.initialize.Time |
Tiempo que tarda el método de inicialización del procesador de registros. Nivel de métrica: Summary Unidades: milisegundos |
| Success |
Número de inicializaciones correctas del procesador de registros. Nivel de métrica: Summary Unidades: recuento |
| Time |
Tiempo que tarda el proceso de trabajo de KCL en inicializar el procesador de registros. Nivel de métrica: Summary Unidades: milisegundos |
ShutdownTask
La operación ShutdownTask inicia la secuencia de cierre para el procesamiento de fragmentos. Esto puede ocurrir porque un fragmento esté dividido o fusionado, o cuando se pierde la asignación del fragmento desde el proceso de trabajo. En ambos casos se invoca la función shutdown() del procesador de registros. También se descubren fragmentos nuevos en caso de que un fragmento se divida o se fusione, lo que da como resultado la creación de uno o varios fragmentos nuevos.
| Métrica | Descripción |
|---|---|
| CreateLease.Success |
Número de veces que se agregan correctamente nuevas particiones secundarias a la tabla de DynamoDB de la aplicación de KCL después del cierre de la partición principal. Nivel de métrica: Detailed Unidades: recuento |
| CreateLease.Time |
Tiempo que se tarda en agregar la información de la nueva partición secundaria a la tabla DynamoDB de la aplicación de KCL. Nivel de métrica: Detailed Unidades: milisegundos |
| UpdateLease.Success |
Número de puntos de comprobación finales correctos durante el cierre del procesador de registros. Nivel de métrica: Detailed Unidades: recuento |
| UpdateLease.Time |
Tiempo que tarda la operación de puntos de comprobación durante el cierre del procesador de registros. Nivel de métrica: Detailed Unidades: milisegundos |
| RecordProcessor.shutdown.Time |
Tiempo que tarda el método de cierre del procesador de registros. Nivel de métrica: Summary Unidades: milisegundos |
| Success |
Número de tareas cerradas correctamente. Nivel de métrica: Summary Unidades: recuento |
| Time |
Tiempo que tarda el proceso de trabajo de KCL en la tarea de cierre. Nivel de métrica: Summary Unidades: milisegundos |
ShardSyncTask
La operación ShardSyncTask detecta los cambios en la información de la partición del flujo de datos de Kinesis, de modo que las nuevas particiones se puedan procesar en la aplicación de KCL.
| Métrica | Descripción |
|---|---|
| CreateLease.Success |
Número de intentos correctos para agregar nueva información sobre la partición a la tabla de DynamoDB de la aplicación de KCL. Nivel de métrica: Detailed Unidades: recuento |
| CreateLease.Time |
Tiempo que se tarda en agregar la información de la nueva partición a la tabla DynamoDB de la aplicación de KCL. Nivel de métrica: Detailed Unidades: milisegundos |
| Success |
Número de operaciones de sincronización del fragmento correctas. Nivel de métrica: Summary Unidades: recuento |
| Time |
Tiempo necesario para la operación de sincronización del fragmento. Nivel de métrica: Summary Unidades: milisegundos |
BlockOnParentTask
Si el fragmento está dividido o fusionado con otros fragmentos, entonces se crean nuevos fragmentos secundarios. La operación BlockOnParentTask garantiza que el procesamiento de registros de las nuevas particiones no se inicie hasta que KCL procese por completo las particiones principales.
| Métrica | Descripción |
|---|---|
| Success |
Número de comprobaciones correctas para completar el fragmento principal. Nivel de métrica: Summary Unidades: recuento |
| Time |
Tiempo necesario para completar los fragmentos principales. Nivel de métrica: Summary Unidad: milisegundos |
PeriodicShardSyncManager
PeriodicShardSyncManager es responsable de examinar los flujos de datos que procesa la aplicación de consumo de KCL, identificar los flujos de datos con asignaciones parciales y transferirlos para su sincronización.
Las siguientes métricas están disponibles cuando KCL se configura para procesar un único flujo de datos (entonces el valor de NumStreamsToSync y NumStreamsWithPartialLeases se establece en 1) y también cuando KCL se configura para procesar varios flujos de datos.
| Métrica | Descripción |
|---|---|
| NumStreamsToSync |
El número de flujos de datos (por cuenta de AWS) que procesa la aplicación de consumo que contienen asignaciones parciales y que deben transferirse para su sincronización. Nivel de métrica: Summary Unidades: recuento |
| NumStreamsWithPartialLeases |
El número de flujos de datos (por cuenta de AWS) que la aplicación de consumo está procesando y que contienen asignaciones parciales. Nivel de métrica: Summary Unidades: recuento |
| Success |
El número de veces que Nivel de métrica: Summary Unidades: recuento |
| Time |
El tiempo (en milisegundos) que Nivel de métrica: Summary Unidades: milisegundos |
MultistreamTracker
La interfaz de MultistreamTracker le permite crear aplicaciones de consumo de KCL que pueden procesar varios flujos de datos al mismo tiempo.
| Métrica | Descripción |
|---|---|
| DeletedStreams.Count |
El número de flujos de datos eliminados en este periodo de tiempo. Nivel de métrica: Summary Unidades: recuento |
| ActiveStreams.Count |
El número de flujos de datos activos que se están procesando. Nivel de métrica: Summary Unidades: recuento |
| StreamsPendingDeletion.Count |
El número de flujos de datos pendientes de eliminación en función de Nivel de métrica: Summary Unidades: recuento |
Métricas por proceso de trabajo
Estas métricas se agrupan para todos los procesadores de registro que consuman datos de un flujo de datos de Kinesis, por ejemplo una instancia de Amazon EC2.
WorkerMetricStatsReporter
La operación WorkerMetricStatReporter se encarga de publicar periódicamente las métricas del proceso de trabajo actual en la tabla de métricas del proceso de trabajo. La operación LeaseAssignmentManager utiliza estas métricas para realizar las asignaciones de arrendamiento.
| Métrica | Descripción |
|---|---|
|
InMemoryMetricStatsReporterFailure |
Cantidad de errores al capturar el valor de la métrica de proceso de trabajo en memoria, debido a un error en algunas métricas de proceso de trabajo. Nivel de métrica: Summary Unidades: recuento |
|
WorkerMetricStatsReporter.Time |
Periodo empleado por la operación Nivel de métrica: Summary Unidades: milisegundos |
|
WorkerMetricStatsReporter.Success |
Número de veces que se completa correctamente la operación Nivel de métrica: Summary Unidades: recuento |
LeaseDiscovery
La operación LeaseDiscovery es responsable de identificar los nuevos arrendamientos que la operación LeaseAssignmentManager ha asignado al proceso de trabajo actual. La lógica de esta operación consiste en identificar los arrendamientos asignados al proceso de trabajo actual mediante la lectura del índice secundario global de la tabla de arrendamiento.
| Métrica | Descripción |
|---|---|
|
ListLeaseKeysForWorker.Time |
Periodo para consultar el índice secundario global de la tabla de arrendamiento y obtener las claves de arrendamiento asignadas al proceso de trabajo actual. Nivel de métrica: Detailed Unidades: milisegundos |
|
FetchNewLeases.Time |
Periodo para buscar todos los arrendamientos nuevos de la tabla de arrendamiento. Nivel de métrica: Detailed Unidades: milisegundos |
|
NewLeasesDiscovered |
Cantidad total de nuevos arrendamientos asignados a los procesos de trabajo. Nivel de métrica: Detailed Unidades: recuento |
|
Time |
Periodo empleado por la operación Nivel de métrica: Summary Unidades: milisegundos |
|
Success |
Número de veces que se completa correctamente la operación Nivel de métrica: Summary Unidades: recuento |
|
OwnerMismatch |
Cantidad de propietarios que no coincide con la respuesta del GSI, y la lectura de la tabla de arrendamientos es coherente. Nivel de métrica: Detailed Unidades: recuento |
RenewAllLeases
La operación RenewAllLeases renueva periódicamente las asignaciones de un fragmento propiedad de una instancia de proceso de trabajo en particular.
| Métrica | Descripción |
|---|---|
| RenewLease.Success |
Número de renovaciones correctas de asignaciones por parte del proceso de trabajo. Nivel de métrica: Detailed Unidades: recuento |
| RenewLease.Time |
Tiempo necesario para la operación de renovación de la asignación. Nivel de métrica: Detailed Unidades: milisegundos |
| CurrentLeases |
Número de asignaciones de fragmentos propiedad del proceso de trabajo tras la renovación de todas las asignaciones. Nivel de métrica: Summary Unidades: recuento |
| LostLeases |
Número de asignaciones de fragmentos perdidos tras un intento de renovar todas las asignaciones propiedad del proceso de trabajo. Nivel de métrica: Summary Unidades: recuento |
| Success |
Cantidad de veces que se realiza correctamente la operación de renovación para el proceso de trabajo. Nivel de métrica: Summary Unidades: recuento |
| Time |
Tiempo necesario para renovar todas las asignaciones del proceso de trabajo. Nivel de métrica: Summary Unidades: milisegundos |
TakeLeases
La operación TakeLeases equilibra el procesamiento de registros entre todos los procesos de trabajo de KCL. Si el proceso de trabajo actual de KCL tiene menos asignaciones de particiones de lo necesario, asume asignaciones de particiones de otro proceso de trabajo sobrecargado.
| Métrica | Descripción |
|---|---|
| ListLeases.Success |
Número de veces que se han recuperado correctamente todas las concesiones de particiones de la tabla de DynamoDB de la aplicación de KCL. Nivel de métrica: Detailed Unidades: recuento |
| ListLeases.Time |
Tiempo que se tarda en recuperar todas las concesiones de particiones de la tabla de DynamoDB de la aplicación de KCL. Nivel de métrica: Detailed Unidades: milisegundos |
| TakeLease.Success |
Número de veces que el proceso de trabajo ha asumido correctamente asignaciones de particiones de otros procesos de trabajo de KCL. Nivel de métrica: Detailed Unidades: recuento |
| TakeLease.Time |
Tiempo necesario para actualizar la tabla de asignaciones con las asignaciones asumidas por el proceso de trabajo. Nivel de métrica: Detailed Unidades: milisegundos |
| NumWorkers |
El número total de procesos de trabajo identificado por un proceso de trabajo específico. Nivel de métrica: Summary Unidades: recuento |
| NeededLeases |
Número de asignaciones de fragmentos que necesita el proceso de trabajo actual para una carga de procesamiento de fragmentos equilibrada. Nivel de métrica: Detailed Unidades: recuento |
| LeasesToTake |
Número de asignaciones que el proceso de trabajo intentará asumir. Nivel de métrica: Detailed Unidades: recuento |
| TakenLeases |
Número de asignaciones asumidas correctamente por el proceso de trabajo. Nivel de métrica: Summary Unidades: recuento |
| TotalLeases |
Número total de particiones que procesa la aplicación de KCL. Nivel de métrica: Detailed Unidades: recuento |
| ExpiredLeases |
Número total de fragmentos que no están siendo procesados por ningún proceso de trabajo, según lo identifica el proceso de trabajo específico. Nivel de métrica: Summary Unidades: recuento |
| Success |
Número de veces que se completa correctamente la operación Nivel de métrica: Summary Unidades: recuento |
| Time |
Tiempo necesario para la operación Nivel de métrica: Summary Unidades: milisegundos |
Métricas por partición
Las métricas se acumulan en un único procesador de registros.
ProcessTask
La operación ProcessTask llama a GetRecords con la posición actual del iterador para recuperar los registros del flujo e invoca la función processRecords del procesador de registros.
| Métrica | Descripción |
|---|---|
| KinesisDataFetcher.getRecords.Success |
Número de operaciones Nivel de métrica: Detailed Unidades: recuento |
| KinesisDataFetcher.getRecords.Time |
Tiempo que tarda cada operación Nivel de métrica: Detailed Unidades: milisegundos |
| UpdateLease.Success |
Número de puntos de comprobación correctos realizados por el procesador de registros para un fragmento determinado. Nivel de métrica: Detailed Unidades: recuento |
| UpdateLease.Time |
Tiempo necesario para cada operación de punto de comprobación para el fragmento determinado. Nivel de métrica: Detailed Unidades: milisegundos |
| DataBytesProcessed |
Tamaño total en bytes de los registros procesados en cada invocación de Nivel de métrica: Summary Unidades: bytes |
| RecordsProcessed |
Número de registros procesados en cada invocación de Nivel de métrica: Summary Unidades: recuento |
| ExpiredIterator |
Número de ExpiredIteratorException recibidas al llamar a Nivel de métrica: Summary Unidades: recuento |
| MillisBehindLatest | Tiempo de que el iterador actual permanece por detrás del último registro (el extremo) del fragmento. Este valor es inferior o igual a la diferencia de tiempo entre el último registro en una respuesta y la hora actual. Se trata de una representación más precisa de la distancia entre una partición y la punta que la comparación de las marcas de tiempo del último registro de respuesta. Este valor se aplica al último lote de registros, no a una media de todas las marcas temporales de cada registro. Nivel de métrica: Summary Unidades: milisegundos |
| RecordProcessor.processRecords.Time |
Tiempo que tarda el método Nivel de métrica: Summary Unidades: milisegundos |
| Success |
Número de operaciones de tareas de proceso correctas. Nivel de métrica: Summary Unidades: recuento |
| Time |
Tiempo necesario para la operación de tarea de proceso. Nivel de métrica: Summary Unidades: milisegundos |