Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
La integración New Relic Kafka en el host informa datos métricos y de configuración de su servicio Kafka. Instrumentamos todos los elementos clave de su clúster, incluidos los corredores (tanto ZooKeeper como Bootstrap), productores, consumidores y temas.
Para instalar la integración de monitoreo de Kafka, debe seguir los siguientes pasos:
Para obtener una lista completa de versiones específicas de Windows y Linux, consulte la tabla de sistemas operativos compatibles.
Requisito del sistema
Una cuenta New Relic . ¿No tienes uno? ¡Registrate gratis! No se requiere tarjeta de crédito.
Si Kafka no se ejecuta en Kubernetes o Amazon ECS, puede instalar el agente de infraestructura en un host con sistema operativo Linux o Windows o en un host capaz de acceder de forma remota al lugar donde está instalado Kafka. De lo contrario:
Si está funcionando
Si está funcionando
Java versión 8 o superior.
JMX habilitado en todos los corredores.
Solo consumidores y productores basados en Java y con JMX habilitado.
El número total de temas de monitorización debe ser inferior a 10.000.
Requisitos de conectividad
La integración debe configurarse y permitirse conectarse a:
Hosts enumerados en zookeeper_hosts a través del protocolo Zookeeper, utilizando el mecanismo de autenticación de Zookeeper, si autodiscover_strategy está configurado en zookeeper.
Hosts definidos en bootstrap_broker_host a través del protocolo Kafka, utilizando los mecanismos de autenticación/transporte del intermediario Kafka, si autodiscover_strategy está configurado en bootstrap.
Todos los intermediarios del clúster a través del protocolo y puerto de Kafka, utilizando los mecanismos de autenticación/transporte de los intermediarios de Kafka.
Todos los intermediarios del clúster a través del protocolo y puerto JMX, utilizando los mecanismos de autenticación/transporte especificados en la configuración JMX de los intermediarios.
Todos los productores/consumidor especificados en productores y consumidor sobre el protocolo y puerto JMX, si desea monitoreo de productor/consumidor. La configuración de JMX para el consumidor debe ser la misma que para los corredores.
Importante
De forma predeterminada, los grupos de seguridad y sus equivalentes en otros proveedores de nube en AWS no tienen los puertos requeridos abiertos de forma predeterminada. JMX requiere dos puertos para funcionar: el puerto JMX y el puerto RMI. Estos se pueden establecer en el mismo valor al configurar la JVM para habilitar JMX y deben estar abiertos para que la integración pueda conectarse y recopilar métrica de los corredores.
Prepárese para la instalación
Kafka es una pieza compleja de software que se construye como un sistema distribuido. Por este motivo, debe asegurarse de que la integración pueda contactar con todos los hosts y servicios necesarios para que los datos se recopilen correctamente.
Dada la naturaleza distribuida de Kafka, la configuración no suele fijar el número real y la lista de intermediarios, sino que es bastante dinámico. Por este motivo, la integración Kafka ofrece dos mecanismos para realizar el descubrimiento automático de la lista de brokers en el clúster: Bootstrap y Zookeeper. El mecanismo que utilice depende de la configuración del clúster Kafka que se está monitoreando.
Bootstrap
Con el mecanismo de arranque, la integración utiliza un intermediario de arranque para realizar el descubrimiento automático. Se trata de un corredor cuya dirección es bien conocida y al que se le preguntará por cualquier otro corredor del que tenga conocimiento. La integración debe poder comunicarse con este corredor en la dirección proporcionada en el parámetro bootstrap_broker_host para que funcione el descubrimiento de arranque.
Zookeeper
Alternativamente, la integración de Kafka también puede comunicarse con un servidor de Zookeeper para obtener la lista de corredores. Para hacer esto, la integración debe contar con lo siguiente:
La lista de hosts de Zookeeper, zookeeper_hosts, con los que contactar.
Los secretos de autenticación adecuados para conectarse con los hosts.
Junto con la lista de corredores que conoce, Zookeeper también anunciará qué mecanismos de conexión admite cada corredor.
Puede configurar la integración de Kafka para probar directamente con uno de estos mecanismos con el parámetro preferred_listener . Si no se proporciona este parámetro, la integración intentará contactar a los brokers con todas las configuraciones anunciadas hasta que uno de ellos lo consiga.
Sugerencia
La integración utilizará Zookeeper solo para descubrir corredores y no recuperará métricas de él.
Para enumerar correctamente los temas procesados por los corredores, la integración debe comunicarse con los corredores a través del protocolo Kafka. Dependiendo de cómo estén configurados los intermediarios, esto podría requerir configurar SSL y/o SASL para que coincida con la configuración del intermediario. Los temas deben tener acceso DESCRIBIR.
Kafka integración consulta JMX, una extensión estándar de Java para el intercambio de métricas en una aplicación Java. JMX no está habilitado de forma predeterminada en los brokers Kafka y es necesario habilitarlo para que la colección métrica funcione correctamente. JMX requiere que RMI esté habilitado y el puerto RMI debe configurarse en el mismo puerto que JMX.
Puede configurar JMX para utilizar autenticación de nombre de usuario/contraseña, así como SSL. Si dicha característica se ha habilitado en la configuración JMX del corredor, deberá configurar la integración en consecuencia.
Si el descubrimiento automático está configurado en arrancar, la configuración JMX definida para el corredor arrancar se aplicará a todos los demás corredores descubiertos, por lo que el puerto y otras configuraciones deben ser las mismas en todos los corredores.
Importante
No recomendamos habilitar el acceso JMX/RMI anónimo y/o sin cifrar en segmentos de red públicos o que no sean de confianza porque esto representa un gran riesgo de seguridad.
El desplazamiento de los grupos de consumidores y consumidores de los temas, así como el retraso, se puede recuperar como KafkaOffsetSample con el indicador CONSUMER_OFFSET=true, pero debe estar en una instancia separada porque cuando este indicador se activa, la instancia no recopilará otras muestras.
Los productores y consumidores escritos en Java también pueden ser monitoreados para obtener metadatos más específicos a través del mismo mecanismo (JMX). Esto generará KafkaConsumerSamples y KafkaProducerSamples. JMX debe habilitarse y configurarse en aquellas aplicaciones donde no está habilitado de forma predeterminada.
Los productores y consumidores que no son Java no son compatibles con JMX y, por lo tanto, no son compatibles con la integración de Kafka.
Instalar y activar la integración.
Para instalar la integración de Kafka, siga las instrucciones para su entorno:
Instalación de linux
Siga las instrucciones para instalar una integración y reemplace la variable INTEGRATION_FILE_NAME con nri-kafka.
Cambie el directorio a la carpeta de configuración de integración ejecutando:
bash
$
cd /etc/newrelic-infra/integrations.d
Copie el archivo de configuración de muestra ejecutando:
Instale la integración Kafka de New Relic abriendo el símbolo del sistema y ejecutando:
bash
$
msiexec.exe /qn /i $PATH_TO\nri-kafka-amd64.msi
En el directorio de integración, C:\Program Files\New Relic\newrelic-infra\integrations.d\, cree una copia del archivo de configuración de muestra ejecutando:
Hay varias formas de configurar la integración, dependiendo de cómo se instaló:
Si se habilita a través de
Si se habilita a través de
Si está instalado en el host, edite la configuración en el archivo de configuración YAML de la integración, kafka-config.yml. La configuración de formato YAML de una integración es donde puede colocar las credenciales de inicio de sesión requeridas y configurar cómo se recopilan los datos. Las opciones que cambie dependen de su configuración y preferencia. El archivo de configuración tiene configuraciones comunes aplicables a todas las integraciones como interval, timeout, inventory_source. Para leer todo sobre estas configuraciones comunes, consulte nuestro documento Formato de configuración .
Importante
Si todavía utiliza nuestros archivos de configuración y definición legacy, consulte este documento para obtener ayuda.
Al igual que con otras integraciones, un archivo de configuración kafka-config.yml puede tener muchas instancias de la integración recopilando diferentes corredores, consumidores y productores métricos. Puede ver ejemplos de configuración con una o varias instancias en los archivos de muestrakafka-config.yml
Las configuraciones específicas relacionadas con Kafka se definen usando la sección env de cada instancia en el archivo de configuración kafka-config.yml . Estas configuraciones controlan la conexión a sus Brokers, Zookeeper y JMX, así como otras configuraciones y características de seguridad. La lista de configuraciones válidas se describe en la configuración de Kafka.
La integración tiene dos modos de operación en cada instancia, que son mutuamente excluyentes, que puedes configurar con el parámetro CONSUMER_OFFSET :
Colección de compensación del consumidor: establezca CONSUMER_OFFSET = true para recopilar KafkaOffsetSample.
Estos modos son mutuamente excluyentes porque la recopilación de compensación del consumidor tarda mucho en ejecutarse y tiene requisitos de alto rendimiento. Para recopilar ambos grupos de muestras, configure dos instancias, una con cada modo.
Los valores para estas configuraciones se pueden definir de varias maneras:
Agregando el valor directamente en el archivo de configuración. Esta es la forma más común.
Utilizando la gestión de secretos. Utilícelo para proteger información confidencial, como contraseñas que quedarían expuestas en texto sin formato en el archivo de configuración. Para obtener más información, consulte gestión de secretos.
Monitoreo de compensación
Al configurar CONSUMER_OFFSET = true, de forma predeterminada, solo se recopilarán las métricas de los grupos de consumidores con consumidor activo (y consumidor métrica). Para recopilar también la métrica de grupos de consumidores con consumidor inactivo debes configurar INACTIVE_CONSUMER_GROUP_OFFSET en true.
Cuando un grupo de consumidores está monitoreando más de un tema, es valioso tener el grupo de consumidores métrica separado por temas, especialmente si uno de los temas tiene un consumidor inactivo, porque entonces es posible detectar en qué tema el grupo de consumidores está teniendo rezago y si hay son consumidores activos para ese grupo de consumidores y tema.
Para obtener la métrica del grupo de consumidores separada por tema, debe establecer CONSUMER_GROUP_OFFSET_BY_TOPIC en true (el valor predeterminado es false).
La integración Kafka recoge la siguiente métrica. Cada nombre de métrica tiene como prefijo un indicador de categoría y un punto, como broker. o consumer..
Métrica
Descripción
broker.bytesWrittenToTopicPerSecond
Número de bytes escritos en un tema por el corredor por segundo.
broker.IOInPerSecond
Red de E/S en intermediarios en el clúster en bytes por segundo.
broker.IOOutPerSecond
E/S de red de los intermediarios del clúster en bytes por segundo.
broker.logFlushPerSecond
Log la tasa de descarga.
broker.messagesInPerSecond
Mensajes entrantes por segundo.
follower.requestExpirationPerSecond
Tasa de vencimiento de solicitudes de seguidores en desalojos por segundo.
net.bytesRejectedPerSecond
Bytes rechazados por segundo.
replication.isrExpandsPerSecond
Tasa de réplicas que se unen al grupo ISR.
replication.isrShrinksPerSecond
Tasa de réplicas que salen del grupo ISR.
replication.leaderElectionPerSecond
Tasa de elección de líder.
replication.uncleanLeaderElectionPerSecond
Tasa de elección de líderes impuros.
replication.unreplicatedPartitions
Número de particiones no replicadas.
request.avgTimeFetch
Tiempo promedio por solicitud de recuperación en milisegundos.
request.avgTimeMetadata
Tiempo promedio de solicitud de metadatos en milisegundos.
request.avgTimeMetadata99Percentile
Tiempo para solicitudes de metadatos para el percentil 99 en milisegundos.
request.avgTimeOffset
Tiempo promedio para una solicitud de compensación en milisegundos.
request.avgTimeOffset99Percentile
Tiempo para solicitudes de compensación del percentil 99 en milisegundos.
request.avgTimeProduceRequest
Tiempo promedio para una solicitud de producto en milisegundos.
request.avgTimeUpdateMetadata
Tiempo promedio para que una solicitud actualice metadatos en milisegundos.
request.avgTimeUpdateMetadata99Percentile
Tiempo para solicitudes de actualización de metadatos para el percentil 99 en milisegundos.
request.clientFetchesFailedPerSecond
Errores de solicitud de recuperación del cliente por segundo.
request.fetchTime99Percentile
Tiempo para solicitudes de recuperación del percentil 99 en milisegundos.
request.handlerIdle
Fracción promedio de tiempo que los subprocesos del controlador de solicitudes están inactivos.
request.produceRequestsFailedPerSecond
Solicitudes de producción fallidas por segundo.
request.produceTime99Percentile
Tiempo para solicitudes de productos agrícolas para el percentil 99.
topic.diskSize
Tamaño del disco de temas por agente y por tema. Sólo está presente si COLLECT_TOPIC_SIZE está habilitado.
topic.offset
Compensación de temas por corredor y por tema. Sólo está presente si COLLECT_TOPIC_OFFSET está habilitado.
Métrica
Descripción
consumer.avgFetchSizeInBytes
Número promedio de bytes recuperados por solicitud para un tema específico.
consumer.avgRecordConsumedPerTopic
Número promedio de registros en cada solicitud para un tema específico.
consumer.avgRecordConsumedPerTopicPerSecond
Número promedio de registros consumidos por segundo para un tema específico en registros por segundo.
consumer.bytesInPerSecond
Bytes del consumidor por segundo.
consumer.fetchPerSecond
La velocidad mínima a la que el consumidor envía solicitudes de recuperación por segundo.
consumer.maxFetchSizeInBytes
Número máximo de bytes recuperados por solicitud para un tema específico.
consumer.maxLag
Retraso máximo del consumidor.
consumer.messageConsumptionPerSecond
Tasa de consumo de mensajes del consumidor en mensajes por segundo.
consumer.offsetKafkaCommitsPerSecond
Tasa de compromisos de compensación con Kafka en compromisos por segundo.
consumer.offsetZooKeeperCommitsPerSecond
Tasa de compromisos de compensación con ZooKeeper en escrituras por segundo.
consumer.requestsExpiredPerSecond
Tasa de vencimiento retrasado de la solicitud del consumidor en desalojos por segundo.
Métrica
Descripción
producer.ageMetadataUsedInMilliseconds
Antigüedad en segundos desde que se utilizan los metadatos del productor actual.
producer.availableBufferInBytes
Cantidad total de memoria intermedia que no se utiliza en bytes.
producer.avgBytesSentPerRequestInBytes
Número promedio de bytes enviados por partición y por solicitud.
producer.avgCompressionRateRecordBatches
Tasa de compresión promedio de lotes de registros.
producer.avgRecordAccumulatorsInMilliseconds
Tiempo promedio en lotes de registros en ms transcurridos en el acumulador de registros.
producer.avgRecordSizeInBytes
Tamaño promedio de registro en bytes.
producer.avgRecordsSentPerSecond
Número promedio de registros enviados por segundo.
producer.avgRecordsSentPerTopicPerSecond
Número promedio de registros enviados por segundo para un tema.
producer.AvgRequestLatencyPerSecond
Latencia de solicitud promedio del productor.
producer.avgThrottleTime
Tiempo promedio que un corredor limitó una solicitud en milisegundos.
producer.bufferMemoryAvailableInBytes
Cantidad máxima de memoria intermedia que el cliente puede utilizar en bytes.
producer.bufferpoolWaitTime
Facción de tiempo que un agregado espera para la asignación de espacio.
producer.bytesOutPerSecond
Bytes del productor por segundo de salida.
producer.compressionRateRecordBatches
Tasa de compresión promedio de lotes de registros para un tema.
producer.iOWaitTime
Tiempo de espera de I/O del productor en milisegundos.
producer.maxBytesSentPerRequestInBytes
Número máximo de bytes enviados por partición y por solicitud.
producer.maxRecordSizeInBytes
Tamaño máximo de registro en bytes.
producer.maxRequestLatencyInMilliseconds
Latencia máxima de solicitud en milisegundos.
producer.maxThrottleTime
Tiempo máximo que un corredor limitó una solicitud en milisegundos.
producer.messageRatePerSecond
Mensajes del productor por segundo.
producer.responsePerSecond
Número de respuestas del productor por segundo.
producer.requestPerSecond
Número de solicitudes de productores por segundo.
producer.requestsWaitingResponse
Número actual de solicitudes en vuelo en espera de respuesta.
producer.threadsWaiting
Número de subprocesos de usuario bloqueados esperando que la memoria intermedia ponga en cola sus registros.
Métrica
Descripción
topic.partitionsWithNonPreferredLeader
Número de particiones por tema que no están dirigidas por su réplica preferida.
topic.respondMetaData
Número de temas que responden a solicitudes de metadatos.
topic.retentionSizeOrTime
Si una partición se conserva por tamaño o por tamaño y tiempo. Un valor de 0 = tiempo y un valor de 1 = tamaño y tiempo.
topic.underReplicatedPartitions
Número de particiones por tema que no se replican lo suficiente.
Métrica
Descripción
consumer.offset
El último consumo consumido compensado en una partición por el grupo de consumidores.
consumer.lag
La diferencia entre la marca máxima de un corredor y la compensación del consumidor (consumer.hwm - consumer.offset).
consumer.hwm
El desplazamiento del último mensaje escrito en una partición (marca de límite superior).
consumer.totalLag
La suma de los retrasos entre las particiones consumidas por un consumidor.
consumerGroup.totalLag
La suma de los retrasos en todas las particiones consumidas por un consumerGroup.
consumerGroup.maxLag
El retraso máximo en todas las particiones consumidas por un consumerGroup.
consumerGroup.activeConsumers
El número de consumidores activos en este consumerGroup.