Modifier

Share via


Monitoring d’Apache NiFi avec MonitoFi

Azure Container Instances
Azure Container Registry
Azure Monitor

Idées de solution

Cet article présente une idée de solution. Si vous souhaitez que nous développions le contenu avec d’autres informations, telles que des cas d’usage potentiels, d’autres services, des considérations d’implémentation ou un guide des prix, adressez-nous vos commentaires GitHub.

Cette solution surveille les déploiements d’Apache NiFi sur Azure à l’aide de MonitoFi. L’outil envoie des alertes et affiche des informations sur l’intégrité et le niveau de performance dans des tableaux de bord.

Apache®, Apache NiFi® et NiFi® sont soit des marques déposées, soit des marques commerciales d’Apache Software Foundation aux États-Unis et/ou dans d’autres pays. L’utilisation de ces marques n’implique aucune approbation de l’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.Téléchargez un fichier Visio de cette architecture.

Workflow

  • Une image Docker encapsule un module Python de MonitoFi et le Kit de développement logiciel (SDK) d’Application Insights. Cette image Docker peut être récupérée dans le registre Docker Hub et stockée dans Container Registry à des fins d’utilisation et de déploiement.

  • Si Container Instances ou Docker s’exécute sur un ordinateur local, l’image peut être récupérée pour exécuter des instances du conteneur MonitoFi.

  • Un autre conteneur qui héberge un serveur InfluxDB et une instance Grafana est déployé localement.

  • Le conteneur MonitoFi collecte des informations sur l’intégrité et le niveau de performance de chaque cluster NiFi. Le conteneur demande des données :

    • À partir des clusters à des intervalles de temps configurables.
    • À partir de différents points de terminaison à l’aide de l’API REST d’Apache NiFi.
  • Le conteneur MonitoFi convertit les données des clusters dans les formats suivants :

    • Format de journal structuré. Le conteneur envoie ces données à Application Insights.
    • Protocole de ligne InfluxDB. Dans les environnements isolés physiquement ou locaux, le conteneur stocke ces données dans une instance locale d’InfluxDB.
  • Grafana affiche les données d’Application Insights. Cet outil d’analyse des données :

    • Utilise Monitor comme source de données.
    • Exécute des requêtes en Kusto Query Language. Le tableau de bord Application Insights comprend des exemples de requêtes.
  • Grafana est utilisé pour afficher les données de l’instance locale d’InfluxDB. Pour effectuer des requêtes, Grafana utilise les langages suivants :

  • Le système de notification de Grafana envoie des alertes en temps réel par e-mail et par le biais de Microsoft Teams lorsqu’il détecte des anomalies dans le cluster.

Composants

Les autres composants de l’architecture sont les suivants :

  • Application Insights. Cette fonctionnalité d’Azure Monitor supervise l’utilisation, la disponibilité et le niveau de performance des applications.
  • Grafana. Cet outil d’analyse open source affiche les données et envoie des alertes.
  • InfluxDB. Cette plateforme stocke les données localement.

Détails du scénario

MonitoFi est un outil qui analyse l’intégrité et le niveau de performance des clusters Apache NiFi. Lorsque vous exécutez NiFi sur Azure et utilisez MonitoFi :

  • Les tableaux de bord de MonitoFi affichent des informations historiques sur l’état des clusters NiFi.
  • Des notifications en temps réel alertent les utilisateurs lorsque des anomalies sont détectées dans les clusters.

Principaux avantages

MonitoFi présente les avantages suivants :

  • Léger et extensible : MonitoFi est un outil léger qui s’exécute en externe. Parce que MonitoFi est basé sur Python et est conteneurisé, vous pouvez l’étendre pour ajouter des fonctionnalités. Une instance de MonitoFi qui s’exécute dans un conteneur peut cibler plusieurs clusters NiFi.

  • Efficace et utile : MonitoFi utilise des instances locales d’InfluxDB et de Grafana pour fournir une surveillance et des alertes en temps réel. MonitoFi peut surveiller des clusters avec des latences d’une seconde.

  • Flexible et robuste : MonitoFi utilise un wrapper d’API REST pour récupérer des données JSON de NiFi. MonitoFi convertit ces données dans un format utilisable qui ne dépend pas de points de terminaison ni de noms de champs spécifiques. Par conséquent, lorsque les réponses de l’API REST de NiFi changent, vous n’avez pas besoin de modifier le code de MonitoFi.

  • Facile à adopter : Vous n’avez pas à reconfigurer les clusters NiFi pour les surveiller.

  • Facile à utiliser : MonitoFi offre des configurations prédéfinies. Il comprend également des modèles de tableaux de bord Grafana que vous pouvez importer sans modification.

  • Hautement configurable : MonitoFi s’exécute dans un conteneur Docker. Vous configurez MonitoFi à l’aide de variables d’environnement. Vous pouvez facilement configurer les paramètres suivants et d’autres au moment de l’exécution :

    • Points de terminaison
    • Paramètres pour un accès sécurisé
    • Certificats
    • Paramètres de la clé d’instrumentation
    • Intervalle de collecte

Avec une image conteneur, vous pouvez cibler différents clusters NiFi, différentes configurations et différentes instances d’Application Insights ou d’InfluxDB. Pour changer de cible, vous modifiez la commande d’exécution.

Déployer ce scénario

Pour déployer cette solution, consultez MonitoFi : analyseur d’intégrité et de performances pour Apache NiFi sur GitHub.

Exemples de déploiement

  • Dans les environnements isolés physiquement et locaux, il n’y a aucun accès à l’Internet public. Par conséquent, ces systèmes déploient une instance locale d’InfluxDB avec Grafana. Cette approche fournit une solution de stockage pour les données. Le conteneur MonitoFi utilise l’API REST de NiFi sur une adresse IP privée pour récupérer les données des clusters. Le conteneur stocke ces données dans InfluxDB. Grafana est utilisé pour afficher les données d’InfluxDB et envoyer des messages e-mail et Teams afin d’avertir les utilisateurs.

  • Dans les environnements publics, le conteneur MonitoFi utilise l’API REST de NiFi pour récupérer les données des clusters. Le conteneur envoie ensuite ces données dans un format structuré à Application Insights. Ces environnements déploient également une instance locale d’InfluxDB et un conteneur Grafana. MonitoFi peut stocker des données dans cette instance d’InfluxDB. Grafana est utilisé pour afficher les données et envoyer des messages e-mail et Teams afin d’avertir les utilisateurs.

Processus de déploiement

MonitoFi comprend un script de déploiement entièrement automatisé qui :

  • Vérifie la configuration requise et installe les dépendances manquantes.
  • Déploie un conteneur Docker MonitoFi.
  • Déploie des conteneurs pour InfluxDB et Grafana.
  • Configure les bases de données et une stratégie de rétention pour InfluxDB.
  • Configure une source de données dans Grafana pour InfluxDB.
  • En option, configure une source de données dans Grafana pour l’analyse.
  • Importe le tableau de bord MonitoFi dans Grafana. Grafana utilise ce tableau de bord pour accéder aux données d’InfluxDB.
  • En option, importe le tableau de bord Application Insights dans Grafana. Grafana peut utiliser ce tableau de bord pour accéder aux données d’Application Insights.
  • Configure un canal de notification que Grafana utilise pour les alertes Teams en temps réel.

Points à prendre en considération pour le déploiement

Lorsque vous déployez cette solution, gardez à l’esprit les conditions préalables et limitations suivantes :

  • MonitoFi a besoin d’accéder au cluster NiFi. Utilisez l’une de ces approches pour fournir cet accès :

    • Placez MonitoFi dans le même réseau que le cluster NiFi. Fournissez l’accès via une adresse IP privée.
    • Rendez le cluster NiFi accessible publiquement sur Internet.
  • Le cluster NiFi peut être sécurisé ou non. Pour la connexion, les clusters sécurisés prennent en charge les certificats au format PKCS#12. Montez ce type de certificat dans le conteneur MonitoFi et rendez le mot de passe disponible.

  • Une instance MonitoFi peut surveiller plusieurs clusters NiFi à la fois. Une autre possibilité consiste à utiliser plusieurs conteneurs MonitoFi. Dans ce cas, les conteneurs peuvent surveiller différents points de terminaison de l’API REST dans le même cluster ou dans des clusters différents.

  • Si vous utilisez plus d’une instance MonitoFi, il est possible de stocker les données MonitoFi dans une base de données InfluxDB ou de les envoyer à une ressource Application Insights commune. Des balises prédéfinies marquent les données et fournissent un moyen d’identifier leur source.

  • InfluxDB et Grafana s’exécutent dans le même conteneur Docker. Pour permettre à MonitoFi d’envoyer des données à ce conteneur, utilisez l’une des options suivantes :

    • Placez le conteneur Docker dans le même réseau que le conteneur MonitoFi.
    • Rendez le conteneur Docker accessible publiquement.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Auteur principal :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étapes suivantes