Editar

Share via


Supervisión de Apache NiFi con MonitoFi

Azure Container Instances
Azure Container Registry
Azure Monitor

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con más información, como posibles casos de uso, servicios alternativos, consideraciones de implementación o una guía de precios, comunícalo a través de los Comentarios de GitHub.

Esta solución permite supervisar las implementaciones de Apache NiFi en Azure mediante MonitoFi. La herramienta envía alertas y muestra información de estado y rendimiento en los paneles.

Apache®, Apache NiFi® y NiFi son marcas comerciales registradas o marcas comerciales de Apache Software Foundation en los Estados Unidos u otros países. El uso de estas marcas no implica la aprobación de Apache Software Foundation.

Architecture

Diagram showing the flow of data between a NiFi cluster and MonitoFi. Other architecture components include Application Insights, InfluxDB, and Grafana.Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo

  • Una imagen de Docker encapsula un módulo de Python de MonitoFi y el SDK de Application Insights. Esta imagen de Docker se puede recuperar del registro de Docker Hub y almacenarse en Container Registry para su uso e implementación.

  • Si Container Instances o Docker se ejecutan en un equipo local, la imagen se puede recuperar para ejecutar instancias del contenedor de MonitoFi.

  • Otro contenedor que hospeda un servidor de InfluxDB y una instancia de Grafana se implementa localmente.

  • El contenedor de MonitoFi recopila información sobre el estado y el rendimiento de cada clúster de NiFi. El contenedor solicita datos:

    • De clústeres a intervalos de tiempo configurables.
    • De varios puntos de conexión mediante la API REST de Apache NiFi.
  • El contenedor de MonitoFi convierte los datos del clúster en estos formatos:

    • Un formato de registro estructurado. El contenedor envía estos datos a Application Insights.
    • Protocolo de línea de InfluxDB. En entornos locales o aislados, el contenedor almacena estos datos en una instancia local de InfluxDB.
  • Grafana muestra datos de Application Insights. Esta herramienta de supervisión de datos:

    • Usa Monitor como origen de datos.
    • Ejecuta consultas de lenguaje de consulta Kusto. El panel de Application Insights incluye consultas de ejemplo.
  • Grafana se usa para mostrar datos de la instancia local de InfluxDB. Para realizar consultas, Grafana usa los siguientes lenguajes:

  • El sistema de notificaciones de Grafana envía alertas en tiempo real por correo electrónico y Microsoft Teams cuando detecta anomalías en el clúster.

Componentes

Otros componentes de la arquitectura son los siguientes:

  • Application Insights. Esta característica de Azure Monitor supervisa el uso, la disponibilidad y el rendimiento de las aplicaciones.
  • Grafana. Esta herramienta de análisis de código abierto muestra datos y envía alertas.
  • InfluxDB. Esta plataforma almacena los datos localmente.

Detalles del escenario

MonitoFi es una herramienta que supervisa el estado y el rendimiento de los clústeres de Apache NiFi. Al ejecutar NiFi en Azure y usar MonitoFi:

  • Los paneles de MonitoFi muestran información histórica sobre el estado de los clústeres NiFi.
  • Las notificaciones en tiempo real alertan a los usuarios cuando se detectan anomalías en los clústeres.

Ventajas principales

MonitoFi tiene estas ventajas:

  • Ligera y ampliable: MonitoFi es una herramienta ligera que se ejecuta externamente. Como MonitoFi se basa en Python y está contenedorizada, puede ampliarla para agregar características. Una instancia de MonitoFi que se ejecuta en un contenedor puede dirigirse a varios clústeres NiFi.

  • Eficaz y útil: MonitoFi usa instancias locales de InfluxDB y Grafana para proporcionar alertas y supervisión en tiempo real. MonitoFi puede supervisar clústeres con latencias de tan solo un segundo.

  • Flexible y sólida: MonitoFi usa un contenedor de API REST para recuperar datos JSON de NiFi. MonitoFi convierte los datos en un formato utilizable que no depende de puntos de conexión o nombres de campo específicos. Por tanto, cuando cambian las respuestas de la API REST de NiFi, no es necesario cambiar el código de MonitoFi.

  • Fácil de adoptar: no tiene que volver a configurar los clústeres NiFi para supervisarlos.

  • Fácil de usar: MonitoFi ofrece configuraciones preestablecidas. También incluye plantillas para paneles de Grafana que puede importar sin modificaciones.

  • Altamente configurable: MonitoFi se ejecuta en un contenedor de Docker. MonitoFi se configura mediante variables de entorno. Puede configurar fácilmente las siguientes opciones y otras más en tiempo de ejecución:

    • Puntos de conexión
    • Opciones de acceso seguro
    • Certificados
    • Configuración de clave de instrumentación
    • Intervalo de recopilación

Con una imagen de contenedor, puede abordar diferentes clústeres NiFi, configuraciones e instancias de Application Insights o InfluxDB. Para cambiar los destinos, cambie el comando en tiempo de ejecución.

Implementación de este escenario

Para implementar esta solución, consulta MonitoFi: Monitor de estado y rendimiento para Apache NiFi en GitHub.

Ejemplos de implementación

  • En entornos locales y aislados, no hay acceso a la red pública de Internet. En consecuencia, estos sistemas implementan una instancia local de InfluxDB con Grafana. Este enfoque proporciona una solución de almacenamiento para los datos. El contenedor de MonitoFi usa la API REST de NiFi a través de una dirección IP privada para recuperar los datos del clúster. El contenedor almacena estos datos en InfluxDB. Grafana se usa para mostrar los datos de InfluxDB y enviar mensajes de correo electrónico y de Teams para alertar a los usuarios.

  • En entornos públicos, el contenedor de MonitoFi usa la API REST de NiFi para recuperar datos del clúster. A continuación, el contenedor envía estos datos en un formato estructurado a Application Insights. Estos entornos también implementan una instancia local de InfluxDB y un contenedor de Grafana. MonitoFi puede almacenar datos en esa instancia de InfluxDB. Grafana se usa para mostrar los datos y enviar mensajes de correo electrónico y de Teams para alertar a los usuarios.

Proceso de implementación

MonitoFi incluye un script de implementación totalmente automatizado que:

  • Comprueba los requisitos previos e instala las dependencias que faltan.
  • Implementa un contenedor de Docker para MonitoFi.
  • Implementa contenedores para InfluxDB y Grafana.
  • Configura las bases de datos y una directiva de retención para InfluxDB.
  • Configura un origen de datos en Grafana para InfluxDB.
  • Opcionalmente, configura un origen de datos en Grafana para Monitor.
  • Importa el panel de MonitoFi en Grafana. Grafana usa este panel para acceder a los datos de InfluxDB.
  • Opcionalmente, importa el panel de Application Insights en Grafana. Grafana puede usar este panel para acceder a los datos de Application Insights.
  • Configura un canal de notificación que Grafana usa para las alertas de Teams en tiempo real.

Consideraciones de la implementación

Al implementar esta solución, tenga en cuenta los siguientes requisitos previos y limitaciones:

  • MonitoFi necesita acceso al clúster NiFi. Use uno de estos enfoques para proporcionar ese acceso:

    • Coloque MonitoFi en la misma red que el clúster NiFi. Proporcione acceso mediante una dirección IP privada.
    • Haga que el clúster NiFi sea accesible públicamente a través de Internet.
  • El clúster NiFi puede ser seguro o no seguro. Para iniciar sesión, los clústeres protegidos admiten certificados en formato PKCS #12. Monte este tipo de certificado en el contenedor de MonitoFi y haga que la contraseña esté disponible.

  • Una instancia de MonitoFi puede supervisar varios clústeres NiFi al mismo tiempo. Otra posibilidad es usar varios contenedores de MonitoFi. En este caso, los contenedores pueden supervisar distintos puntos de conexión de API REST en el mismo clúster o en clústeres diferentes.

  • Si usa más de una instancia de MonitoFi, es posible almacenar los datos de MonitoFi en una base de datos de InfluxDB o enviarlos a un recurso común de Application Insights. Las etiquetas preestablecidas marcan los datos y ofrecen una manera de identificar su origen.

  • InfluxDB y Grafana se ejecutan en el mismo contenedor de Docker. Para proporcionar una manera de que MonitoFi envíe datos a este contenedor, use una de estas opciones:

    • Coloque el contenedor de Docker en la misma red que el contenedor de MonitoFi.
    • Haga que el contenedor de Docker esté disponible públicamente.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes