Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Solución para monitorizar aplicaciones de Kafka con Amazon Managed Grafana

Modo de enfoque
Solución para monitorizar aplicaciones de Kafka con Amazon Managed Grafana - Amazon Managed Grafana

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.

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.

Las aplicaciones creadas a partir de Apache Kafka tienen necesidades de monitorización especializadas. En esta página, se describe una plantilla que proporciona una solución para supervisar las aplicaciones de Kafka que se ejecutan en máquinas virtuales Java en su clúster de Amazon EKS. La solución se puede instalar mediante AWS Cloud Development Kit (AWS CDK).

nota

Esta solución no admite la supervisión de las aplicaciones Amazon Managed Streaming for Apache Kafka. Para obtener información sobre la supervisión de las aplicaciones de Amazon MSK, consulte Supervisar un clúster de Amazon MSK en la Guía para desarrolladores de Amazon Managed Streaming for Apache Kafka.

Esta solución configura:

  • Su espacio de trabajo de Amazon Managed Service for Prometheus para almacenar métricas de Kafka y Java Virtual Machine (JVM) de su clúster de Amazon EKS.

  • Recopile métricas específicas de Kafka y JVM mediante el CloudWatch agente, así como un complemento de agente. CloudWatch Las métricas están configuradas para enviarse al espacio de trabajo de Amazon Managed Service for Prometheus.

  • Su espacio de trabajo de Grafana gestionado por Amazon para obtener esas métricas y crear paneles que le ayuden a supervisar su clúster.

nota

Esta solución proporciona métricas de JVM y Kafka para la aplicación que se ejecuta en Amazon EKS, pero no incluye las métricas de Amazon EKS. Puede utilizar la solución Observability para monitorizar Amazon EKS y ver las métricas y alertas de su clúster de Amazon EKS.

Acerca de esta solución

Esta solución configura un espacio de trabajo de Grafana gestionado por Amazon para proporcionar métricas para su aplicación Apache Kafka. Las métricas se utilizan para generar paneles que le ayudan a operar su aplicación de manera más eficaz al proporcionar información sobre el rendimiento y la carga de trabajo de la aplicación Kafka.

La siguiente imagen muestra una muestra de uno de los paneles creados por esta solución.

Imagen en la que se muestra un ejemplo de una carpeta de panel de Grafana creada con esta solución.

Las métricas se recopilan con un intervalo de extracción de 1 minuto. Los paneles muestran las métricas agregadas en 1 minuto, 5 minutos o más, en función de la métrica específica.

Para obtener una lista de las métricas rastreadas por esta solución, consulte Lista de métricas rastreadas.

Costos

Esta solución crea y utiliza recursos en su espacio de trabajo. Se le cobrará por el uso estándar de los recursos creados, que incluyen:

  • Acceso de los usuarios al espacio de trabajo de Amazon Managed Grafana. Para obtener más información acerca de los precios, consulte Precios de Amazon Managed Grafana.

  • Amazon Managed Service para la ingesta y el almacenamiento de métricas de Prometheus y el análisis de métricas (procesamiento de muestras de consultas). La cantidad de métricas que utiliza esta solución depende de la configuración y el uso de la aplicación.

    Puedes ver las métricas de ingesta y almacenamiento en Amazon Managed Service for Prometheus CloudWatch utilizando Para obtener más información, consulta las CloudWatchmétricas en la Guía del usuario de Amazon Managed Service for Prometheus.

    Puede calcular el costo utilizando la calculadora de precios de la página Precios de Amazon Managed Service para Prometheus. El número de métricas dependerá del número de nodos del clúster y de las métricas que generen las aplicaciones.

  • Costos de red. Puede incurrir en cargos de AWS red estándar por tráfico cruzado de zonas de disponibilidad, región u otro tipo de tráfico.

Las calculadoras de precios, disponibles en la página de precios de cada producto, pueden ayudarlo a comprender los posibles costos de su solución. La siguiente información puede ayudar a obtener un costo base de la solución que se ejecuta en la misma zona de disponibilidad que el clúster de Amazon EKS.

Producto Métrica de la calculadora Valor

Servicio administrado por Amazon para Prometheus

Serie activa

95 (por cápsula de Kafka)

Intervalo promedio de recopilación

60 (segundos)

Amazon Managed Grafana

Número de editores o administradores activos

1 (o más, en función de sus usuarios)

Estos números son los números base de una solución que ejecuta Kafka en Amazon EKS. Esto le proporcionará una estimación de los costos base. A medida que añada los pods de Kafka a su aplicación, los costos aumentarán, como se muestra. Estos costos excluyen los costos de uso de la red, que variarán en función de si el espacio de trabajo de Grafana gestionado por Amazon, el espacio de trabajo de Amazon Managed Service for Prometheus y el clúster de Amazon EKS se encuentran en la misma zona de disponibilidad y la misma VPN. Región de AWS

Requisitos previos

Esta solución requiere que haya hecho lo siguiente antes de utilizarla.

  1. Debe tener o crear un clúster de Amazon Elastic Kubernetes Service que desee supervisar y el clúster debe tener al menos un nodo. El clúster debe tener configurado el acceso al punto de conexión del servidor de API para incluir el acceso privado (también puede permitir el acceso público).

    El modo de autenticación debe incluir el acceso a la API (se puede configurar en API o API_AND_CONFIG_MAP). Esto permite que la implementación de la solución utilice entradas de acceso.

    Se debe instalar lo siguiente en el clúster (es cierto de forma predeterminada al crear el clúster a través de la consola, pero se debe añadir si se crea el clúster mediante la AWS API o AWS CLI): Amazon EKS Pod Identity Agent, AWS CNI, CoreDNS, Kube-proxy y controlador CSI de Amazon EBS AddOns (el controlador CSI de Amazon EBS no es técnicamente necesario para la solución, pero sí para la mayoría de las aplicaciones de Kafka). AddOn

    Guarde el nombre del clúster para especificarlo más adelante. Puede consultarlo en los detalles del clúster en la consola de Amazon EKS.

    nota

    Para obtener más información sobre cómo crear un clúster de Amazon EKS, consulte Introducción a Amazon EKS.

  2. Debe ejecutar una aplicación Apache Kafka en máquinas virtuales Java de su clúster de Amazon EKS.

  3. Debe crear un espacio de trabajo de Amazon Managed Service for Prometheus en el mismo lugar que su clúster Cuenta de AWS de Amazon EKS. Para obtener más información, consulte Create a workspace en la Guía del usuario de Amazon Managed Service para Prometheus.

    Guarde el ARN del espacio de trabajo de Amazon Managed Service para Prometheus para especificarlo más adelante.

  4. Debe crear un espacio de trabajo de Grafana gestionado por Amazon con Grafana versión 9 o posterior, al igual que Región de AWS su clúster de Amazon EKS. Para obtener más información sobre la creación de un nuevo espacio de trabajo, consulte Creación de un espacio de trabajo de Amazon Managed Grafana.

    El rol de espacio de trabajo debe tener permisos para acceder a Amazon Managed Service para Prometheus y Amazon. CloudWatch APIs La forma más sencilla de hacerlo es utilizar los permisos gestionados por el servicio y seleccionar Amazon Managed Service for Prometheus y. CloudWatch También puedes añadir manualmente las AmazonGrafanaCloudWatchAccesspolíticas AmazonPrometheusQueryAccessy a la función de IAM de tu espacio de trabajo.

    Guarde el ID y el punto de conexión del espacio de trabajo de Amazon Managed Grafana para especificarlos más adelante. El ID tiene el formato g-123example. El ID y el punto de conexión se encuentran en la consola de Amazon Managed Grafana. El punto de conexión es la URL del espacio de trabajo e incluye el ID. Por ejemplo, https://g-123example.grafana-workspace.<region>.amazonaws.com/.

nota

Si bien no es estrictamente obligatorio configurar la solución, debe configurar la autenticación de usuario en su espacio de trabajo de Amazon Managed Grafana antes de que los usuarios puedan acceder a los paneles creados. Para obtener más información, consulte Autenticación de usuarios en los espacios de trabajo de Amazon Managed Grafana.

Uso de esta solución

Esta solución configura la AWS infraestructura para admitir las métricas de informes y monitoreo de una aplicación de Kafka que se ejecuta en un clúster de Amazon EKS. Puede instalarla usando. AWS Cloud Development Kit (AWS CDK)

nota

En estos pasos se presupone que tiene un entorno con AWS CLI, y AWS CDK, y tanto Node.js como NPM instalados. Utilizará make y brew para simplificar la compilación y otras acciones comunes.

Para usar esta solución para monitorear un clúster de Amazon EKS con AWS CDK
  1. Asegúrese de que completar todos los pasos previos.

  2. Descargue todos los archivos de la solución desde Amazon S3. Los archivos se encuentran en s3://aws-observability-solutions/Kafka_EKS/OSS/CDK/v1.0.0/iac y puede descargarlos con el siguiente comando de Amazon S3. Ejecute este comando desde una carpeta de su entorno de línea de comandos.

    aws s3 sync s3://aws-observability-solutions/Kafka_EKS/OSS/CDK/v1.0.0/iac/ .

    No es necesario modificar estos archivos.

  3. En su entorno de línea de comandos (desde la carpeta en la que descargó los archivos de la solución), ejecute los siguientes comandos.

    Establezca las variables de entorno necesarias. Sustituya REGION AMG_ENDPOINTEKS_CLUSTER, y AMP_ARN por su punto final de espacio de trabajo de Amazon Managed Grafana (en el formulariohttp://g-123example.grafana-workspace.us-east-1.amazonaws.com) Región de AWS, el nombre del clúster de Amazon EKS y el ARN del espacio de trabajo de Amazon Managed Service for Prometheus.

    export AWS_REGION=REGION export AMG_ENDPOINT=AMG_ENDPOINT export EKS_CLUSTER_NAME=EKS_CLUSTER export AMP_WS_ARN=AMP_ARN
  4. Debe crear anotaciones que la implementación pueda utilizar. Puede optar por anotar directamente un espacio de nombres, una implementación, un statefulset, un daemonset o sus pods. La solución de Kafka requiere cinco anotaciones. Utilizará kubectl para anotar sus recursos con los siguientes comandos:

    kubectl annotate <resource-type> <resource-value> instrumentation.opentelemetry.io/inject-java=true kubectl annotate <resource-type> <resource-value> cloudwatch.aws.amazon.com/inject-jmx-jvm=true kubectl annotate <resource-type> <resource-value> cloudwatch.aws.amazon.com/inject-jmx-kafka=true kubectl annotate <resource-type> <resource-value> cloudwatch.aws.amazon.com/inject-jmx-kafka-producer=true kubectl annotate <resource-type> <resource-value> cloudwatch.aws.amazon.com/inject-jmx-kafka-consumer=true

    Sustituya <resource-type> y <resource-value> por los valores correctos para su sistema. Por ejemplo, para anotar el foo despliegue, el primer comando sería:

    kubectl annotate deployment foo instrumentation.opentelemetry.io/inject-java=true
  5. Cree un token de cuenta de servicio con acceso ADMIN para llamar a Grafana HTTP. APIs Para obtener más información, consulte Utilice cuentas de servicio para autenticarse con el HTTP de Grafana APIs. Puedes usarlo AWS CLI con los siguientes comandos para crear el token. Deberás sustituirlo por el GRAFANA_ID ID de tu espacio de trabajo de Grafana (aparecerá en el formulariog-123example). Esta clave caducará después de 7200 segundos o 2 horas. Si es necesario, puede cambiar la hora (seconds-to-live). La implementación tarda menos de una hora.

    # creates a new service account (optional: you can use an existing account) GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \ --workspace-id GRAFANA_ID \ --grafana-role ADMIN \ --name grafana-operator-key \ --query 'id' \ --output text) # creates a new token for calling APIs export AMG_API_KEY=$(aws grafana create-workspace-service-account-token \ --workspace-id $managed_grafana_workspace_id \ --name "grafana-operator-key-$(date +%s)" \ --seconds-to-live 7200 \ --service-account-id $GRAFANA_SA_ID \ --query 'serviceAccountToken.key' \ --output text)

    Haz que la clave de API esté disponible para el AWS CDK agregándola AWS Systems Manager con el siguiente comando. AWS_REGIONSustitúyala por la región en la que se ejecutará la solución (en el formularious-east-1).

    aws ssm put-parameter --name "/observability-aws-solution-kafka-eks/grafana-api-key" \ --type "SecureString" \ --value $AMG_API_KEY \ --region AWS_REGION \ --overwrite
  6. Ejecute el siguiente comando make, que instalará cualquier otra dependencia del proyecto.

    make deps
  7. Por último, ejecute el AWS CDK proyecto:

    make build && make pattern aws-observability-solution-kafka-eks-$EKS_CLUSTER_NAME deploy
  8. [Opcional] Una vez finalizada la creación de la pila, puede utilizar el mismo entorno para crear más instancias de la pila para otras aplicaciones de Kafka que se ejecuten en clústeres de Amazon EKS de la misma región, siempre que cumpla los demás requisitos previos para cada una de ellas (incluidos los espacios de trabajo independientes de Amazon Managed Grafana y Amazon Managed Service for Prometheus). Deberá redefinir los comandos export con los nuevos parámetros.

Cuando se complete la creación de la pila, su espacio de trabajo de Grafana gestionado por Amazon se completará con un panel con las métricas de su aplicación y del clúster de Amazon EKS. Las métricas tardarán unos minutos en mostrarse, a medida que se recopilen.

Lista de métricas rastreadas

Esta solución recopila métricas de su aplicación Kafka basada en JVM. Estas métricas se almacenan en Amazon Managed Service para Prometheus y, después, se muestran en los paneles de Amazon Managed Grafana.

Con esta solución, se realiza un seguimiento de las siguientes métricas.

  • jvm.classes.loaded

  • jvm.gc.collections.count

  • jvm.gc.collections.ha transcurrido

  • jvm.memory.heap.init

  • jvm.memory.heap.max

  • jvm.memory.heap.used

  • jvm.memory.heap.committed

  • jvm.memory.nonheap.init

  • jvm.memory.nonheap.max

  • jvm.memory.nonheap.used

  • jvm.memory.nonheap.committed

  • jvm.memory.pool.init

  • jvm.memory.pool.max

  • jvm.memory.pool.used

  • jvm.memory.pool.committed

  • jvm.threads.count

  • kafka.message.count

  • kafka.request.count

  • kafka.request.failed

  • kafka.request.time.total

  • kafka.request.time.50p

  • kafka.request.time.99p

  • kafka.request.time.avg

  • kafka.network.io

  • kafka.purgatory.size

  • kafka.partition.count

  • kafka.partition.offline

  • kafka.partition.under_replicated

  • kafka.isr.operation.count

  • kafka.max.lag

  • kafka.controller.active.count

  • kafka.leader.election.rate

  • kafka.unclean.election.rate

  • kafka.request.queue

  • kafka.logs.flush.time.count

  • kafka.logs.flush.time.median

  • kafka.logs.flush.time.99p

  • kafka.consumer.fetch-rate

  • kafka.consumer. records-lag-max

  • kafka.consumer.total. bytes-consumed-rate

  • kafka.consumer.total. fetch-size-avg

  • kafka.consumer.total. records-consumed-rate

  • kafka.consumer. bytes-consumed-rate

  • kafka.consumer. fetch-size-avg

  • kafka.consumer. records-consumed-rate

  • kafka.productor. io-wait-time-ns-promedio

  • kafka.productor. outgoing-byte-rate

  • kafka.productor. request-latency-avg

  • kafka.producer.request rate

  • kafka.producer.ratio de respuesta

  • kafka.producer.byte-rate

  • kafka.producer.tasa de compresión

  • kafka.producer. record-error-rate

  • kafka.productor. record-retry-rate

  • kafka.productor. record-send-rate

Solución de problemas

Hay algunas cosas que pueden provocar un error en la configuración del proyecto. Asegúrese de revisar lo siguiente.

  • Debe cumplir todos los requisitos previos antes de instalar la solución.

  • El clúster debe tener al menos un nodo antes de intentar crear la solución o acceder a las métricas.

  • Su clúster de Amazon EKS debe tener instalados los complementos AWS CNI, CoreDNS y kube-proxy. Si no están instalados, la solución no funcionará correctamente. Se instalan de forma predeterminada al crear el clúster a través de la consola. Es posible que tengas que instalarlos si el clúster se creó mediante un AWS SDK.

  • Se agotó el tiempo de espera para la instalación de los pods de Amazon EKS. Esto puede ocurrir si no hay suficiente capacidad de nodos disponible. Estos problemas se deben a varias causas, entre las que se incluyen las siguientes:

    • El clúster Amazon EKS se inicializó con Fargate en lugar de Amazon. EC2 Este proyecto requiere Amazon EC2.

    • Los nodos tienen taints y, por lo tanto, no están disponibles.

      Puede utilizar kubectl describe node NODENAME | grep Taints para comprobar las taints. Luego, kubectl taint node NODENAME TAINT_NAME- para eliminar las taints. Asegúrese de incluir - después del nombre de la taint.

    • Los nodos han alcanzado el límite de capacidad. En este caso, puede crear un nodo nuevo o aumentar la capacidad.

  • No ve ningún panel en Grafana: está utilizando un ID de espacio de trabajo de Grafana incorrecto.

    Ejecute el siguiente comando para obtener información acerca de Grafana:

    kubectl describe grafanas external-grafana -n grafana-operator

    Puede comprobar los resultados para ver la URL del espacio de trabajo correcta. Si no es la que esperaba, vuelva a implementarla con el ID de espacio de trabajo correcto.

    Spec: External: API Key: Key: GF_SECURITY_ADMIN_APIKEY Name: grafana-admin-credentials URL: https://g-123example.grafana-workspace.aws-region.amazonaws.com Status: Admin URL: https://g-123example.grafana-workspace.aws-region.amazonaws.com Dashboards: ...
  • No ve ningún panel en Grafana: está utilizando una clave de API caducada.

    Para detectar esto, tendrá que usar el operador grafana y comprobar si hay errores en los registros. Obtenga el nombre del operador de Grafana con este comando:

    kubectl get pods -n grafana-operator

    Esto devolverá el nombre del operador, por ejemplo:

    NAME READY STATUS RESTARTS AGE grafana-operator-1234abcd5678ef90 1/1 Running 0 1h2m

    Utilice el nombre del operador en el siguiente comando:

    kubectl logs grafana-operator-1234abcd5678ef90 -n grafana-operator

    Los mensajes de error como los siguientes indican que la clave de API ha caducado:

    ERROR error reconciling datasource {"controller": "grafanadatasource", "controllerGroup": "grafana.integreatly.org", "controllerKind": "GrafanaDatasource", "GrafanaDatasource": {"name":"grafanadatasource-sample-amp","namespace":"grafana-operator"}, "namespace": "grafana-operator", "name": "grafanadatasource-sample-amp", "reconcileID": "72cfd60c-a255-44a1-bfbd-88b0cbc4f90c", "datasource": "grafanadatasource-sample-amp", "grafana": "external-grafana", "error": "status: 401, body: {\"message\":\"Expired API key\"}\n"} github.com/grafana-operator/grafana-operator/controllers.(*GrafanaDatasourceReconciler).Reconcile

    En este caso, cree una nueva clave de API y vuelva a implementar la solución. Si el problema persiste, puede forzar la sincronización mediante el siguiente comando antes de volver a implementarlo:

    kubectl delete externalsecret/external-secrets-sm -n grafana-operator
  • Falta el parámetro SSM. Si ve un error similar al siguiente, ejecute cdk bootstrap y vuelva a intentarlo.

    Deployment failed: Error: aws-observability-solution-kafka-eks-$EKS_CLUSTER_NAME: SSM parameter /cdk-bootstrap/xxxxxxx/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/ guide/bootstrapping.html)
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.