Solución de CloudWatch: carga de trabajo de Kafka en Amazon EC2
Esta solución lo ayuda a configurar la recopilación de métricas lista para usar mediante agentes de CloudWatch para las cargas de trabajo de Kafka (intermediarios, productores y consumidores) que se ejecutan en instancias de EC2. Además, lo ayuda a configurar un panel de CloudWatch preconfigurado. Para obtener información general sobre todas las soluciones de observabilidad de CloudWatch, consulte Soluciones de observabilidad de CloudWatch.
Temas
Requisitos
Esta solución es adecuada para las siguientes condiciones:
Carga de trabajo: Kafka v0.8.2.x y versiones posteriores
Recursos informáticos: Amazon EC2
Compatible con hasta 500 instancias de EC2 en todas las cargas de trabajo de Kafka en una determinada Región de AWS
-
Versión más reciente del agente de CloudWatch
-
SSM Agent instalado en la instancia de EC2
nota
AWS Systems Manager (SSM Agent) está preinstalado en algunas Imágenes de máquina de Amazon (AMI) proporcionadas por AWS y terceros de confianza. Si el agente no está instalado, puede instalarlo manualmente mediante el procedimiento correspondiente al tipo de sistema operativo.
Ventajas
La solución ofrece supervisión de servidores Kafka, lo que proporciona información valiosa para los siguientes casos de uso:
-
Supervise el estado del clúster de Kafka mediante métricas de replicación y sincronización.
-
Realice un seguimiento del rendimiento de los intermediarios mediante los errores y las latencias de las solicitudes, junto con el tráfico de la red.
-
Supervise los errores, las latencias y los retrasos entre los productores y los consumidores.
-
Analice el rendimiento subyacente de la JVM para los clústeres de Kafka.
-
Cambie entre varios clústeres, productores y consumidores de Kafka configurados mediante la solución en la misma cuenta.
A continuación se detallan las principales ventajas de la solución:
-
Automatiza la recopilación de métricas para Kafka y la JVM subyacente mediante la configuración del agente de CloudWatch, lo que elimina la instrumentación manual.
-
Proporciona un panel de CloudWatch consolidado y preconfigurado para las métricas de Kafka y JVM. El panel administrará automáticamente las métricas de las nuevas instancias de EC2 de Kafka configuradas con la solución, incluso si esas métricas no existían cuando se creó el panel por primera vez. También permite agrupar las métricas en aplicaciones lógicas para facilitar el enfoque y la administración.
La siguiente imagen muestra un ejemplo del panel para esta solución:

Costos
Esta solución crea y utiliza recursos en su espacio de trabajo. Se cobrará por el uso estándar, que incluye lo siguiente:
Las métricas recopiladas por el agente de CloudWatch se cobran como métricas personalizadas. La cantidad de métricas que utiliza esta solución depende de la cantidad de hosts de EC2.
Cada host intermediario configurado para la solución publica 33 métricas más una métrica (
disk_used_percent
), cuyo recuento de métricas para cada host de EC2 depende del número de rutas de disco para ese host.Cada host productor configurado para la solución publica tres métricas con la dimensión
topic
y tres métricas sin la dimensióntopic
. En el caso de las métricas con la dimensióntopic
, cada tema cuenta como una métrica independiente.Cada host consumidor configurado para la solución publica dos métricas con dimensiones
topic
y tres métricas sin dimensionestopic
. En el caso de las métricas con dimensiones de temas, cada tema cuenta como una métrica independiente.
Un panel personalizado.
Operaciones de API solicitadas por el agente de CloudWatch para publicar las métricas. Con la configuración predeterminada de esta solución, el agente de CloudWatch llama a PutMetricData una vez por minuto para cada host de EC2. Esto significa que la API PutMetricData se llamará
30*24*60=43,200
en un mes de 30 días para cada host de EC2.
Para obtener más información sobre los precios de CloudWatch, consulte Precios de Amazon CloudWatch
La calculadora de precios puede ayudarlo a estimar los costos mensuales aproximados del uso de esta solución.
Para usar la calculadora de precios para estimar los costos mensuales de la solución
-
En la sección Métricas, en Número de métricas, ingrese
broker_metrics_count + producer_metrics_count + consumer_metrics_count
. Calcúlelas de la siguiente manera:broker_metrics_count
= (33 + número promedio de rutas de disco por host de EC2) * number_of_ec2_broker_hostsproducer_metrics_count
= (3 * average_number_of_topics_per_producer_host + 3) * number_of_ec2_broker_hostsconsumer_metrics_count
= (2 * average_number_of_topics_per_consumer_host + 3) * number_of_ec2_consumer_hosts
-
En la sección API, en Número de solicitudes de API, ingrese
43200 * number of EC2 instances configured for this solution
.De forma predeterminada, el agente CloudWatch realiza una operación PutMetricData por minuto para cada host de EC2.
En la sección Paneles y alarmas, en Número de paneles, escriba
1
.-
Puede ver sus costos mensuales estimados en la parte inferior de la calculadora de precios.
Configuración del agente de CloudWatch para esta solución
El agente de CloudWatch es un software que se ejecuta de forma continua y autónoma en sus servidores y en entornos contenerizados. Recopila métricas, registros y trazas de su infraestructura y aplicaciones y los envía a CloudWatch y X-Ray.
Para obtener más información sobre el agente de CloudWatch, consulte Recopile las métricas, registros y seguimientos con el agente de CloudWatch.
La configuración del agente de esta solución recopila las métricas fundamentales de Kafka, JVM y EC2. El agente de CloudWatch se puede configurar para recopilar más métricas de Kafka y JVM que las que muestra el panel de forma predeterminada. Para ver una lista de todas las métricas de Kafka que puede recopilar, consulte Recopilación de métricas de Kafka. Para obtener una lista de todas las métricas de JVM que puede recopilar, consulte Recopilación de métricas de JVM. Para ver una lista de métricas de EC2, consulte Métricas que el agente de CloudWatch recopila en instancias de Linux y de macOS.
Exponer los puertos JMX para las funciones de intermediario, productor y consumidor de Kafka
El agente de CloudWatch se basa en JMX para recopilar las métricas relacionadas con los intermediarios, productores y consumidores de Kafka. Para que esto sea posible, debe exponer el puerto de JMX en sus servidores y aplicaciones.
En el caso de los intermediarios de Kafka, debe utilizar la variable de entorno JMX_PORT
para configurar el puerto. Deberá reiniciar los intermediarios después de configurar esta variable de entorno. Revise los scripts de inicio y los archivos de configuración de su aplicación para encontrar el mejor lugar para agregar estos argumentos.
Por ejemplo, para los sistemas Linux y macOS, puede usar el siguiente comando para configurar el puerto JMX. Asegúrese de especificar un número de puerto no utilizado.
export JMX_PORT=
port-number
En el caso de los productores y consumidores de Kafka, las instrucciones para exponer el puerto de JMX dependen del tipo de carga de trabajo que utilice para su aplicación de JVM de productores o consumidores. Para obtener estas instrucciones, consulte la documentación de su aplicación.
En general, para habilitar un puerto de JMX para la supervisión y la administración, debe configurar las siguientes propiedades del sistema para su aplicación de JVM. En el siguiente ejemplo se configura la JMX no autenticada. Si sus políticas o requisitos de seguridad requieren que habilite JMX con autenticación por contraseña o SSL para el acceso remoto, consulte la documentación de JMX
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=
port-number
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Para verificar el puerto JMX, ejecute ps aux | grep jmxremote.port
. Los resultados deberían mostrar que el puerto JMX se estableció en los procesos de la JVM.
Configuración del agente de CloudWatch para esta solución
Las métricas que el agente recopiló se definen en la configuración del agente. La solución proporciona configuraciones de agente para recopilar las métricas recomendadas con las dimensiones adecuadas para el panel de la solución. Cada rol de Kafka, como intermediario, productor o consumidor, tiene su propia configuración de agente que permite recopilar las métricas de Kafka y las métricas subyacentes de JVM y EC2.
Los pasos para implementar la solución se describen más adelante en Implementar el agente para su solución. La siguiente información tiene por objetivo ayudarlo a comprender cómo personalizar la configuración del agente para su entorno.
Debe personalizar algunas partes de la siguiente configuración de agente para su entorno:
El número de puerto de JMX es el que configuró en la sección anterior de esta documentación. El número de puerto está en la línea
endpoint
de la configuración.ClusterName
: se utiliza como una dimensión para métricas recopiladas por los intermediarios. Proporcione un nombre descriptivo que represente la agrupación de clústeres para las instancias en las que se ejecuta el intermediario de Kafka.ProcessGroupName
: se utiliza como una dimensión para métricas de JVM recopiladas por los intermediarios. Proporcione el mismo valor que indicó paraClusterName
. Esto permite ver las métricas de JVM del mismo grupo de intermediarios de Kafka que las métricas de intermediarios del panel de soluciones.ProducerGroupName
: se utiliza como una dimensión para métricas recopiladas por los productores. Proporcione un nombre significativo que represente al grupo de instancias de productores. Para este valor, puede especificar la aplicación o el servicio del productor que desea utilizar para una vista combinada de las métricas del productor en el panel de soluciones.ConsumerGroupName
: se utiliza como una dimensión para métricas recopiladas por los consumidores. Proporcione un nombre descriptivo que represente al grupo de instancias de consumidores. No es lo mismo que el concepto de grupo de consumidores de Kafka. Se trata simplemente de una dimensión de agrupación en la que puede especificar la aplicación o el servicio de consumidor que desea utilizar para obtener una vista combinada de las métricas de consumo en el panel de la solución.
Por ejemplo, si tiene dos clústeres de Kafka ejecutándose en la misma cuenta, uno para la aplicación order-processing
y otro para la aplicación inventory-management
, debe establecer las dimensiones ClusterName
y ProcessGroupName
en consecuencia en la configuración del agente de la instancia del intermediario.
-
Para las instancias del intermediario de clúster
order-processing
, establezcaClusterName=order-processing
yProcessGroupName=order-processing
. -
Para las instancias del intermediario de clúster
inventory-management
, establezcaClusterName=inventory-management
yProcessGroupName=inventory-management
. -
Del mismo modo, configure
ProducerGroupName
para las instancias de productor yConsumerGroupName
para las instancias de consumidor en función de sus respectivas aplicaciones.
Si configura correctamente las dimensiones anteriores, el panel de la solución agrupará automáticamente las métricas en función de las dimensiones ClusterName
, ProducerGroupName
y ConsumerGroupName
. El panel incluirá opciones desplegables para seleccionar y ver las métricas de clústeres y grupos específicos, lo que permitirá supervisar el rendimiento de los clústeres y grupos individuales por separado.
Asegúrese de implementar la configuración de agente correspondiente en las instancias de EC2 correctas. Cada configuración se almacenará como un parámetro independiente en Parameter Store de SSM, como se detalla más adelante en Paso 2: almacene el archivo de configuración recomendado del agente de CloudWatch en Parameter Store de Systems Manager.
En las siguientes instrucciones se describe la situación en la que las funciones de productor, consumidor e intermediario se implementan en instancias de EC2 independientes, sin que se superpongan. Si ejecuta varias funciones de Kafka en las mismas instancias de EC2, consulte Configure el agente para varios roles de Kafka en la misma instancia. para obtener más información.
Configuración de agentes para agentes de intermediarios de Kafka
Utilice la siguiente configuración de agente de CloudWatch en las instancias de EC2 en las que se implementen los agentes de intermediarios de Kafka. Sustituya ClusterName
por el nombre del clúster que se usará para agrupar estas métricas y obtener una vista unificada. El valor que especifique para ClusterName
se utiliza tanto como dimensión ClusterName
como dimensión ProcessGroupName
. Sustituya el port-number
por el puerto JMX de su servidor Kafka. Si JMX se habilitó con autenticación por contraseña o SSL para el acceso remoto, consulte Recopilación de las métricas de Java Management Extensions (JMX) para obtener información sobre cómo configurar el TLS o la autorización, según sea necesario.
Las métricas de EC2 que se muestran en esta configuración (la configuración se muestra fuera del bloque de JMX) solo funcionan para instancias de Linux y macOS. Si utiliza instancias de Windows, puede optar por omitir estas métricas en la configuración. Para obtener información sobre las métricas recopiladas en las instancias de Windows, consulte Métricas que el agente de CloudWatch recopila en instancias de Windows Server.
{ "metrics": { "namespace": "CWAgent", "append_dimensions": { "InstanceId": "${aws:InstanceId}" }, "metrics_collected": { "jmx": [ { "endpoint": "localhost:
port-number
", "kafka": { "measurement": [ "kafka.request.time.avg", "kafka.request.failed", "kafka.request.count", "kafka.purgatory.size", "kafka.partition.under_replicated", "kafka.partition.offline", "kafka.network.io", "kafka.leader.election.rate", "kafka.isr.operation.count" ] }, "append_dimensions": { "ClusterName": "ClusterName
" } }, { "endpoint": "localhost:port-number
", "jvm": { "measurement": [ "jvm.classes.loaded", "jvm.gc.collections.count", "jvm.gc.collections.elapsed", "jvm.memory.heap.committed", "jvm.memory.heap.max", "jvm.memory.heap.used", "jvm.memory.nonheap.committed", "jvm.memory.nonheap.max", "jvm.memory.nonheap.used", "jvm.threads.count" ] }, "append_dimensions": { "ProcessGroupName": "ClusterName
" } } ], "disk": { "measurement": [ "used_percent" ] }, "mem": { "measurement": [ "used_percent" ] }, "swap": { "measurement": [ "used_percent" ] }, "netstat": { "measurement": [ "tcp_established", "tcp_time_wait" ] } } } }
Configuración de agente para productores de Kafka
Utilice la siguiente configuración de agente de CloudWatch en las instancias de Amazon EC2 en las que se implementan productores de Kafka. Sustituya ProducerGroupName
por el nombre de la aplicación o el grupo que desee utilizar para agrupar las métricas y obtener una vista unificada. Sustituya el port-number
por el puerto JMX de su aplicación de productor de Kafka.
La solución no habilita las métricas de JVM para los productores de Kafka porque el panel de la solución no muestra las métricas de JVM relacionadas con la JVM para los productores. También puede personalizar la configuración del agente para que emita métricas de JVM; sin embargo, las métricas de JVM relacionadas con los productores no están visibles en el panel de soluciones.
{ "metrics": { "namespace": "CWAgent", "append_dimensions": { "InstanceId": "${aws:InstanceId}" }, "metrics_collected": { "jmx": [ { "endpoint": "localhost:
port-number
", "kafka-producer": { "measurement": [ "kafka.producer.request-rate", "kafka.producer.byte-rate", "kafka.producer.request-latency-avg", "kafka.producer.response-rate", "kafka.producer.record-error-rate", "kafka.producer.record-send-rate" ] }, "append_dimensions": { "ProducerGroupName": "ProducerGroupName
" } } ] } } }
Configuración de agente para consumidores de Kafka
Utilice la siguiente configuración de agente de CloudWatch en las instancias de EC2 en las que se ejecuten los agentes de consumidores de Kafka. Sustituya ConsumerGroupName
por el nombre de la aplicación o el grupo para agrupar las métricas y obtener una vista unificada. Sustituya el port-number
por el puerto JMX de su aplicación de consumidor de Kafka.
La solución no habilita las métricas de JVM para los consumidores de Kafka porque el panel de soluciones no muestra las métricas de JVM relacionadas con la JVM para los consumidores. Además puede personalizar la configuración del agente para que también emita métricas de JVM; sin embargo, las métricas de JVM relacionadas con el consumidor no están visibles en el panel de soluciones.
{ "metrics": { "append_dimensions": { "InstanceId": "${aws:InstanceId}" }, "metrics_collected": { "jmx": [ { "endpoint": "localhost:
port-number
", "kafka-consumer": { "measurement": [ "kafka.consumer.fetch-rate", "kafka.consumer.total.bytes-consumed-rate", "kafka.consumer.records-consumed-rate", "kafka.consumer.bytes-consumed-rate", "kafka.consumer.records-lag-max" ] }, "append_dimensions": { "ConsumerGroupName": "ConsumerGroupName
" } } ] } } }
Implementar el agente para su solución
Existen varios métodos de instalación del agente de CloudWatch, según el caso de uso. Recomendamos usar Systems Manager para esta solución. Proporciona una experiencia de consola y simplifica la administración de una flota de servidores administrados en una sola cuenta de AWS. Las instrucciones de esta sección utilizan Systems Manager y están pensadas para cuando el agente de CloudWatch no se esté ejecutando con las configuraciones existentes. Puede comprobar si el agente de CloudWatch se está ejecutando siguiendo los pasos que se indican en Verifique que el agente de CloudWatch esté en ejecución.
Si ya ejecuta el agente de CloudWatch en los hosts de EC2 en los que se implementa la carga de trabajo y administra las configuraciones del agente, puede omitir las instrucciones de esta sección y seguir el mecanismo de implementación existente para actualizar la configuración. Asegúrese de combinar la configuración del agente según el rol (intermediario, productor o consumidor) con la configuración de agente existente y, a continuación, implemente la configuración combinada. Si utiliza Systems Manager para almacenar y administrar la configuración del agente de CloudWatch, puede combinar la configuración con el valor del parámetro existente. Para obtener más información, consulte Managing CloudWatch agent configuration files.
nota
El uso de Systems Manager para implementar las siguientes configuraciones de agente de CloudWatch reemplazará o sobrescribirá cualquier configuración de agente de CloudWatch existente en las instancias de EC2. Puede modificar esta configuración para adaptarla a su entorno o caso de uso únicos. Las métricas definidas en esta solución son las mínimas requeridas para el panel recomendado.
El proceso de implementación consta de los siguientes pasos:
Paso 1: asegúrese de que las instancias de EC2 de destino disponen de los permisos de IAM necesarios.
Paso 2: almacene el archivo de configuración recomendado del agente en Parameter Store de Systems Manager.
Paso 3: instale el agente de CloudWatch en una o más instancias de EC2 mediante una pila de AWS CloudFormation.
Paso 4: verifique que la configuración del agente sea correcta.
Debe repetir estos pasos en función de si su intermediario, productor y consumidor están implementados en la misma instancia de EC2 o en instancias diferentes. Por ejemplo, si el intermediario, el productor y los consumidores de Kafka se van a implementar en instancias independientes sin que se superpongan, debe repetir estos pasos tres veces con las configuraciones de agente adecuadas para las instancias de EC2 del intermediario, productor y consumidor.
Paso 1: asegúrese de que las instancias de EC2 de destino disponen de los permisos de IAM necesarios
Debe conceder permiso a Systems Manager para instalar y configurar el agente de CloudWatch. También debe conceder permiso al agente de CloudWatch para publicar la telemetría de su instancia de EC2 en CloudWatch. Asegúrese de que el rol de IAM adjuntado a la instancia tenga adjuntas las políticas de IAM CloudWatchAgentServerPolicy y AmazonSSMManagedInstanceCore.
-
Para crear un rol, consulte Cree roles de IAM para utilizarlos con el agente de CloudWatch en instancias de Amazon EC2.
-
Después de crear el rol, adjunte el rol a sus instancias de EC2. Siga los pasos que se indican en Lanzar una instancia con un rol de IAM para adjuntar un rol al lanzar una nueva instancia de EC2. Para adjuntar un rol a una instancia de EC2 existente, siga los pasos que se indican en Adjuntar un rol de IAM a una instancia.
Paso 2: almacene el archivo de configuración recomendado del agente de CloudWatch en Parameter Store de Systems Manager
Parameter Store simplifica la instalación del agente de CloudWatch en una instancia de EC2 al almacenar y administrar los parámetros de configuración de forma segura, lo que elimina la necesidad de valores de codificación rígida. Esto garantiza un proceso de implementación más seguro y flexible, lo que permite una administración centralizada y facilita las actualizaciones de las configuraciones en varias instancias.
Siga los pasos a continuación para almacenar el archivo de configuración del agente de CloudWatch recomendado como parámetro en Parameter Store.
Para crear el archivo de configuración del agente de CloudWatch como parámetro
Abra la consola de AWS Systems Manager en https://console.aws.amazon.com/systems-manager/
. Desde el panel de navegación, elija Administración de aplicaciones, Parameter Store.
Siga estos pasos para crear un nuevo parámetro para la configuración.
-
Elija Create parameter.
-
Proporcione un nombre para el parámetro que almacenará la configuración del agente de CloudWatch, por ejemplo,
AmazonCloudWatch-Kafka-Producer-Configuration
para productores,AmazonCloudWatch-Kafka-Consumer-Configuration
para consumidores oAmazonCloudWatch-Kafka-Broker-Configuration
para intermediarios. Si tiene varias funciones de Kafka en un solo EC2, asigne un nombre a las funciones en consecuencia para facilitar la identificación. Este valor se utilizará más adelante para distribuir esta configuración al agente que se ejecuta en la instancia de EC2. -
En Capa de parámetros, elija Estándar.
-
En Type, elija String.
En Tipo de datos, elija texto.
-
En el cuadro Valor, pegue el texto completo de la configuración del agente de CloudWatch. Asegúrese de seleccionar el bloque JSON para el rol de Kafka del que esta instancia es host. Consulte la configuración proporcionada en Configuración de agentes para agentes de intermediarios de Kafka, Configuración de agente para productores de Kafka y Configuración de agente para consumidores de Kafka al almacenar la configuración para el intermediario, el productor y el consumidor, respectivamente. Si ejecuta varios roles de Kafka en la misma instancia de EC2, asegúrese de combinar la configuración si es necesario, tal como se describe en Configure el agente para varios roles de Kafka en la misma instancia. en la misma instancia.
-
Elija Create parameter.
-
Paso 3: instale el agente de CloudWatch y aplique la configuración mediante una plantilla de AWS CloudFormation
Puede usar AWS CloudFormation para instalar el agente y configurarlo para que use la configuración del agente de CloudWatch que creó en los pasos anteriores.
Para instalar y configurar el agente de CloudWatch para esta solución
-
Abra el asistente de AWS CloudFormation Creación rápida de pilas mediante este enlace: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json
. -
Compruebe que la región seleccionada en la consola sea la región en la que se ejecuta la carga de trabajo de Kafka.
-
En Nombre de la pila, ingrese un nombre para identificar esta pila, como
CWAgentInstallationStack
. -
En la sección Parámetros, especifique los siguientes parámetros:
-
En CloudwatchAgentConfigSSM, ingrese el nombre del parámetro Systems Manager para la configuración de agente que creó anteriormente, por ejemplo,
AmazonCloudWatch-Kafka-Broker-Configuration
para intermediarios,AmazonCloudWatch-Kafka-Producer-Configuration
para productores yAmazonCloudWatch-Kafka-Consumer-Configuration
para consumidores. -
Para seleccionar las instancias de destino, tiene dos opciones.
-
En el caso de InstanceIds, especifique una lista delimitada por comas de una lista de ID de instancia en los que desee instalar el agente de CloudWatch con esta configuración. Puede enumerar una sola instancia o varias instancias.
-
Si realiza una implementación a escala, puede especificar la TagKey y el TagValue correspondiente para dirigirse a todas las instancias de EC2 con esta etiqueta y valor. Si especifica una TagKey, debe especificar el TagValue correspondiente. (En el caso de un grupo de escalado automático, especifique
aws:autoscaling:groupName
para TagKey y especifique el nombre del grupo de escalado automático para que TagValue se implemente en todas las instancias del grupo de escalado automático).Si especifica tanto los parámetros InstanceIds como TagKeys, los InstanceIds tendrán prioridad y las etiquetas se ignorarán.
-
-
-
Revise la configuración y, a continuación, seleccione Crear pila.
Si quiere editar primero el archivo de plantilla para personalizarlo, seleccione la opción Cargar un archivo de plantilla en el Asistente de creación de pilas para cargar la plantilla editada. Para obtener más información, consulte Creación de una pila en la consola de AWS CloudFormation. Puede utilizar el siguiente enlace para descargar la plantilla: https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json
nota
Una vez completado este paso, este parámetro de Systems Manager se asociará a los agentes de CloudWatch que se ejecuten en las instancias de destino. Esto significa que:
-
Si se elimina el parámetro de Systems Manager, el agente se detendrá.
-
Si se edita el parámetro de Systems Manager, los cambios de configuración se aplicarán automáticamente al agente con la frecuencia programada, que es de 30 días por defecto.
-
Si desea aplicar inmediatamente los cambios a este parámetro de Systems Manager, debe volver a ejecutar este paso. Para obtener más información sobre asociaciones, consulte Trabajo con asociaciones en Systems Manager.
Paso 4: verifique que la configuración del agente sea correcta
Puede comprobar si el agente de CloudWatch está instalado siguiendo los pasos que se indican en Verifique que el agente de CloudWatch esté en ejecución. Si el agente de CloudWatch no está instalado ni en ejecución, asegúrese de haber configurado todo correctamente.
-
Asegúrese de haber adjuntado un rol con los permisos correctos a la instancia EC2, tal y como se describe en Paso 1: asegúrese de que las instancias de EC2 de destino disponen de los permisos de IAM necesarios.
-
Asegúrese de haber configurado correctamente el JSON para el parámetro de Systems Manager. Siga los pasos de Solución de problemas de la instalación del agente de CloudWatch con AWS CloudFormation.
Si todo está configurado correctamente, debería ver las métricas de Kafka publicadas en CloudWatch. Puede comprobar la consola de CloudWatch para verificar que se estén publicando.
Para comprobar que las métricas de Kafka se publican en CloudWatch
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. Elija Métricas, Todas las métricas.
Asegúrese de haber seleccionado la región en la que implementó la solución y elija Namespaces personalizados, CWAgent.
Busque las métricas que se mencionan en la sección de configuración de agente de este documento, por ejemplo,
kafka.partition.offline
para intermediarios,kafka.consumer.fetch.rate
para consumidores okafka.producer.request-rate
para productores. Si ve los resultados de estas métricas, significa que las métricas se están publicando en CloudWatch.
Crear el panel de soluciones de Kafka
Este panel muestra las métricas recién emitidas tanto para Kafka como para la JVM subyacente. Este panel proporciona una visión de los principales colaboradores sobre el estado de su carga de trabajo de Kafka, tanto en productores como en intermediarios y consumidores. La vista de los principales colaboradores muestra el widget de los 10 principales por métrica. Esto permite identificar los valores atípicos de una sola vez.
El panel de soluciones no muestra las métricas de EC2. Para ver las métricas de EC2, tendrá que usar el panel automático de EC2 para ver las métricas ofrecidas de EC2 y usar el panel de la consola de EC2 para ver las métricas de EC2 recopiladas por el agente de CloudWatch. Para obtener más información sobre los paneles automáticos de los servicios de AWS, consulte Visualización de un panel de CloudWatch para un solo servicio de AWS.
Para crear el panel, puede usar las siguientes opciones:
Use la consola de CloudWatch para crear el panel.
Utilice la consola de AWS CloudFormation para implementar el panel.
Descargue la infraestructura de AWS CloudFormation como código e intégrela como parte de su automatización de integración continua (CI).
Al utilizar la consola de CloudWatch para crear un panel, puede obtener una vista previa del panel antes de crearlo y que se le cobre por ello.
nota
El panel creado con AWS CloudFormation en esta solución muestra las métricas de la región en la que se implementa la solución. Asegúrese de crear la pila AWS CloudFormation en la región en la que se publican las métricas de JVM y Kafka.
Si especificó un namespace personalizado que no sea CWAgent
en la configuración del agente de CloudWatch, tendrá que cambiar la plantilla AWS CloudFormation del panel para sustituir CWAgent
por el namespace personalizado que esté utilizando.
Para crear el panel mediante la consola de CloudWatch
nota
Actualmente, los paneles de soluciones muestran las métricas relacionadas con la recopilación de elementos no utilizados solo para el Recopilador de elementos no utilizados G1, que es el recopilador predeterminado para las versiones más recientes de Java. Si utiliza un algoritmo de recopilación de elementos no utilizados distinto, los widgets relacionados con la recopilación de elementos no utilizados están vacíos. Sin embargo, puede personalizar estos widgets si se cambia la plantilla de CloudFormation del panel y se aplica el tipo de recopilación de elementos no utilizados adecuado a la dimensión de nombre de las métricas relacionadas con la recopilación de elementos no utilizados. Por ejemplo, si utiliza la recolección de elementos no utilizados en paralelo, cambie name=\"G1 Young Generation\"
a name=\"Parallel GC\"
de la métrica de recuento de recopilación de elementos no utilizados jvm.gc.collections.count
.
-
Abra la consola de CloudWatch en Crear panel mediante este enlace: https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=ApacheKafkaOnEc2&referrer=os-catalog
. -
Compruebe que la región seleccionada en la consola sea la región en la que se ejecuta la carga de trabajo de Kafka.
-
Ingrese el nombre del panel, luego seleccione Crear panel.
Para diferenciar fácilmente este panel de otros paneles similares de otras regiones, recomendamos incluir el nombre de la región en el nombre del panel, por ejemplo
KafkaDashboard-us-east-1
. -
Obtenga una vista previa del panel y seleccione Guardar para crearlo.
Para crear el panel de control mediante AWS CloudFormation
-
Abra el asistente de AWS CloudFormation Creación rápida de pilas mediante este enlace: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
. -
Compruebe que la región seleccionada en la consola sea la región en la que se ejecuta la carga de trabajo de Kafka.
-
En Nombre de la pila, ingrese un nombre para identificar esta pila, como
KafkaDashboardStack
. -
En la sección Parámetros, especifique el nombre del panel en el parámetro DashboardName.
Para diferenciar fácilmente este panel de otros paneles similares de otras regiones, recomendamos incluir el nombre de la región en el nombre del panel, por ejemplo
KafkaDashboard-us-east-1
. -
Reconozca las capacidades de acceso para las transformaciones en Capacidades y transformaciones. Tenga en cuenta que CloudFormation no agrega ningún recurso de IAM.
-
Revise la configuración y, a continuación, seleccione Crear pila.
-
Cuando el estado de la pila sea CREATE_COMPLETE, elija la pestaña Recursos situada debajo de la pila creada y, a continuación, elija el enlace situado en ID físico para ir al panel. También puede acceder al panel en la consola de CloudWatch seleccionando Paneles en el panel de navegación izquierdo de la consola y buscando el nombre del panel en Paneles personalizados.
Si desea editar el archivo de plantilla para personalizarlo para cualquier propósito, puede usar la opción Cargar un archivo de plantilla en Crear asistente de pilas para cargar la plantilla editada. Para obtener más información, consulte Creación de una pila en la consola de AWS CloudFormation. Puede utilizar este enlace para descargar la plantilla: https://aws-observability-solutions.s3.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
nota
Actualmente, los paneles de soluciones muestran las métricas relacionadas con la recopilación de elementos no utilizados solo para el Recopilador de elementos no utilizados G1, que es el recopilador predeterminado para las versiones más recientes de Java. Si utiliza un algoritmo de recopilación de elementos no utilizados distinto, los widgets relacionados con la recopilación de elementos no utilizados están vacíos. Sin embargo, puede personalizar estos widgets si se cambia la plantilla de CloudFormation del panel y se aplica el tipo de recopilación de elementos no utilizados adecuado a la dimensión de nombre de las métricas relacionadas con la recopilación de elementos no utilizados. Por ejemplo, si utiliza la recolección de elementos no utilizados en paralelo, cambie name=\"G1 Young Generation\"
a name=\"Parallel GC\"
de la métrica de recuento de recopilación de elementos no utilizados jvm.gc.collections.count
.
Introducción al panel de Kafka
Estas son algunas tareas que puede probar con el nuevo panel de Kafka. Estas tareas permiten validar que el panel funciona correctamente y le proporcionan experiencia práctica en su uso para supervisar un clúster de Kafka. A medida que las vaya probando, se familiarizará con la navegación por el panel y la interpretación de las métricas visualizadas.
Cómo utilizar listas desplegables
El panel incluye listas desplegables en la parte superior que puede utilizar para filtrar y seleccionar los grupos específicos de clúster de Kafka, productores y consumidores que desee supervisar.
Para mostrar las métricas de un clúster de Kafka específico, seleccione el nombre de ese clúster en la lista desplegable Clúster de Kafka.
Para mostrar las métricas de un grupo de productores de Kafka específico, seleccione el nombre de ese grupo de productores en la lista desplegable Productor de Kafka.
Para mostrar las métricas de un grupo de consumidores de Kafka específico, seleccione el nombre de ese grupo de consumidores en la lista desplegable Grupo de consumidores de Kafka.
Comprobar el estado del clúster
En la sección Descripción general del clúster, busque los widgets Particiones incluidas en réplicas replicadas y Réplicas sincronizadas. Lo ideal es que sean cero o un número pequeño. Un valor grande para cualquiera de estas métricas podría indicar problemas con el clúster de Kafka que deben investigarse.
Investigar el rendimiento del intermediario
En la sección Intermediarios, busque los widgets Solicitudes de recuperación fallidas y Solicitudes de productor fallidas. Estos muestran el número de solicitudes fallidas de operaciones de recuperación y producción, respectivamente. Las altas tasas de error podrían indicar problemas con los intermediarios o con la conectividad de la red que requieren una investigación más profunda.
Supervisar el rendimiento del productor
En la sección Descripción general del grupo de productores, busque los widgets Tasa media de solicitudes, Latencia media de solicitudes y Tasa media de envío/error de registros. Estos darán una visión general del rendimiento de los productores del grupo seleccionado. También puede profundizar para ver las métricas de productores y temas específicos en la sección Productores.
Supervisar el desfase del consumidor
En la sección Descripción general de los grupos de consumidores, busque el widget Desfase del consumidor. Esto muestra el retraso de los consumidores a la hora de procesar los mensajes procedentes de las últimas compensaciones en las particiones a las que están suscritos. Lo ideal sería que el retraso con respecto al consumo fuera bajo o nulo. Un retraso elevado en relación con los consumidores podría indicar que los consumidores son incapaces de mantener el ritmo de producción de datos, lo que podría provocar una posible pérdida de datos o retrasos en el procesamiento. También puede profundizar para ver las métricas de consumidores y temas específicos en la sección Consumidores.
Configure el agente para varios roles de Kafka en la misma instancia.
Las configuraciones individuales de las funciones de Kafka que se enumeran en Configuración del agente de CloudWatch para esta solución se aplican solo cuando las funciones de productor, consumidor e intermediario se implementan en instancias de EC2 independientes, sin que se superpongan. Si ejecuta varios roles de Kafka en las mismas instancias de Amazon EC2, tiene dos opciones:
Cree un archivo de configuración de agente único que enumere y configure todas las métricas de todos los roles de Kafka implementados en esa instancia. Si va a utilizar Systems Manager para administrar la configuración del agente, esta es la mejor opción.
Si elige esta opción y las múltiples funciones de Kafka forman parte del mismo proceso de JVM, debe especificar el mismo punto de conexión para cada función de Kafka en la configuración del agente. Si las múltiples funciones de Kafka forman parte de diferentes procesos de JVM, el punto de conexión de cada función puede ser diferente en función del puerto JMX configurado para ese proceso.
Cree archivos de configuración de agente independientes para cada función de Kafka y configure el agente para que aplique ambos archivos de configuración. Para obtener instrucciones sobre cómo aplicar varios archivos de configuración, consulte Varios archivos de configuración del agente de CloudWatch.
El siguiente ejemplo muestra una configuración de agente de CloudWatch en la que las funciones de productor y consumidor se ejecutan en una instancia como parte del mismo proceso de JVM. En este caso, el número de puerto debe ser el mismo en las partes de productor y consumidor de la configuración que se indica a continuación. Si, por el contrario, las dos funciones se ejecutaran como parte de procesos de JVM diferentes, podría especificar números de puerto diferentes para cada una de ellas, de acuerdo con el puerto JMX de cada proceso de JVM individual.
{ "metrics": { "namespace": "CWAgent", "append_dimensions": { "InstanceId": "${aws:InstanceId}" }, "metrics_collected": { "jmx": [ { "endpoint": "localhost:
port-number
", "kafka-producer": { "measurement": [ "kafka.producer.request-rate", "kafka.producer.byte-rate", "kafka.producer.request-latency-avg", "kafka.producer.response-rate", "kafka.producer.record-error-rate", "kafka.producer.record-send-rate" ] }, "append_dimensions": { "ProducerGroupName": "ProducerGroupName
" } }, { "endpoint": "localhost:port-number
", "kafka-consumer": { "measurement": [ "kafka.consumer.fetch-rate", "kafka.consumer.total.bytes-consumed-rate", "kafka.consumer.records-consumed-rate", "kafka.consumer.bytes-consumed-rate", "kafka.consumer.records-lag-max" ] }, "append_dimensions": { "ConsumerGroupName": "ConsumerGroupName
" } } ] } } }