MONQ - surveillance et AIOps originaires de Russie



Dans notre blog, nous avons beaucoup parlé de solutions étrangères pour le suivi et l'audit, et maintenant il est temps pour le développement national. MONQ est un système parapluie avec des connecteurs pour des systèmes de surveillance communs, des modèles de service de ressources, l'analyse de données, un potentiel d'IA élevé et un modèle de licence spécial. On nous a donné une distribution à regarder et nous avons décidé de partager comment elle est là sous le capot et si tout est aussi nanotechnologique que le vendeur le dit (le projet, après tout, est un résident de Skolkovo). L'honneur des tests m'est tombé et je vais vous parler de l'installation, des capacités du système et un peu des licences. Je demande un chat.

Présentation


En 2018, Gartner a introduit un nouveau terme pour décrire comment l'intelligence artificielle (IA) peut être appliquée au support informatique. «L'AIOps (Intelligence artificielle pour les opérations informatiques) promet de gagner du temps et des efforts des services informatiques pour identifier divers problèmes dans l'environnement de plus en plus complexe dans lequel ils doivent travailler.» Gartner suggère que l'IA sera utilisée pour identifier automatiquement les problèmes et les résoudre. En 2019, cela semble être un conte de fées, et je n'ai encore vu aucun cas réel de support informatique entièrement automatique.

J'ai obtenu la plateforme MONQ du laboratoire numérique MONQ . Le développeur lui-même la positionne comme une solution AIOps. Mais je l'appellerais un système de surveillance parapluie, de gestion des événements et de lancement de scripts d'automatisation. Il n'y a pas encore beaucoup d'intelligence.

En service, je prends en charge plus de 100 systèmes, serveurs, services et services différents. Mes outils de surveillance occasionnels sont Zabbix et Prometheus, comme ils couvrent la plupart des tâches de surveillance des performances. Quelques systèmes dans la boucle de surveillance cessent parfois de répondre, il est traité en redémarrant le serveur (il n'y a pas d'autre moyen, personne ne réécrira le code de la courbe). J'ai toujours voulu essayer de mettre en œuvre un cas lorsque le système de surveillance identifie un problème à partir de deux sources indépendantes et redémarre le serveur lui-même. Pour de telles tâches, des systèmes parapluie avec des sous-systèmes de script sont généralement utilisés, car il est désormais à la mode RPA (Robotic Process Automation). Je ne connais pas les systèmes gratuits, mais les systèmes commerciaux sont comme un pont en fonte.

Aujourd'hui, nous allons essayer d'installer MONQ ensemble, d'y connecter Zabbix et Prometheus, de configurer des alertes et d'écrire un script de redémarrage du serveur. Pour que demain vous puissiez calmement poser vos pieds sur la table, en ne regardant qu'occasionnellement le processus de traitement d'une machine avec une autre machine et de boire du café avec un croissant.

Architecture de la solution



Architecture MONQ

Le système est déployé dans des conteneurs Docker dans le cluster kubernetes. Les ensembles de microservices sont combinés en blocs fonctionnels. Toutes les données des utilisateurs, informations techniques, événements, journaux après enrichissement avec diverses balises utiles volent dans le lac de données sur ClickHouse, puis le processus de calcul et d'analyse a lieu. Des modèles, des événements importants sont détectés, des déclencheurs composés sont formés et divers processus importants peuvent être lancés pour des événements importants: des alertes et des incidents aux scripts utilisateur complexes.

Déballage


Youtube est plein de vidéos déballant quelque chose. Maintenant, je vais essayer de faire la même chose, mais dans un format texte-image et non pas avec un produit physique, mais avec une distribution. Pour commencer, préparez - installez le cluster kubernetes.

Vous pouvez lire sur la configuration d'un cluster kubernetes, par exemple, ici . Je vais vous parler des fonctionnalités de configuration:

  • coredns est utilisé comme DNS de cluster;
  • nginx-ingress-controller;
  • autorisation rbac dans un cluster;
  • un stockage partagé (pv / pvc) est utilisé.

Pour chaque projet, le fournisseur fournit les exigences techniques pour le matériel. La configuration minimale pour l'installation est de 4 serveurs. Cela suffit pour conduire un pilote, sous réserve d'intégration avec un système de surveillance. Pour mes besoins, en vérifiant la fonctionnalité du système, cette option fonctionnera également.

Dans les conditions de combat, comme on m'a dit, le système s'adapte aux besoins du client en fonction de la charge et de la tolérance de panne requise.

Ma configuration pour le système au minimum:
ServeurCœurs de processeurMémoire GoStockage, Go
kubernetes master1250
travailleur kubernetes 148100
travailleur kubernetes 248100
Serveur DB47300
Total1325550

Une fois la plate-forme prête, je lance le playbook ansible du vendeur pour installer l'infrastructure de base et lancer le système. Playbook fait ce qui suit:

  • installe les packages nécessaires sur les serveurs;
  • lance kubernetes;
  • installe et configure les applications sur le serveur de base de données. Parmi eux: Clickhouse, RabbitMQ, PostgreSQL, ArangoDB, Redis et tout cela dans des conteneurs Docker;
  • installe Consul pour le stockage centralisé des configurations de microservices;
  • ajoute un point de terminaison, des entités d'entrée de service pour le SGBD et des parties d'infrastructure du système;
  • génère une table avec les données d'autorisation.

Afin de ne pas démarrer l'application de microservice manuellement, le fournisseur a préparé un registre de microservices intégré qui ajoute et met à jour des microservices, configure le SGBD et l'autorisation interservices.

Le démarrage du système se résume aux actions suivantes:

  • le programme d'installation du système est lancé avec un fichier de configuration pré-préparé (il contient les données d'autorisation dans kubernetes, DBMS et Consul, le nom de domaine du système);
  • le programme d'installation démarre le registre des microservices;
  • en utilisant le registre, les microservices sont démarrés un par un, le registre génère une configuration de microservices en consul, déploiement d'entités, service, entrée dans kubernetes;
  • au démarrage, chaque microservice charge un schéma pour sa propre base de données.

Le résultat du programme d'installation que j'ai lancé est dans l'image ci-dessous.


Tableau de bord Kubernetes: le résultat du programme d'installation

Une fois le processus d'installation terminé, MONQ sera disponible sous le nom de domaine que j'ai spécifié dans le fichier de configuration du programme d'installation. Et le voici.


Interface de connexion MONQ

Personnalisation


Dans la configuration initiale du système, il y a déjà un utilisateur avec des droits de contrôle complets. Je me connecte en dessous et regarde ce dont MONQ est capable.

Création d'utilisateurs dans le système et configuration de groupes de travail


Il existe deux méthodes d'autorisation utilisateur dans le système:

  • Active Directory
  • Intégré.

Pour la première connaissance, l'autorisation intégrée convient.


Utilisateur du système prédéfini

Les droits d'accès aux objets et aux ressources du système (intégration, unités de configuration (KE), déclencheurs synthétiques, scripts, etc.) sont délivrés au niveau des groupes de travail (GT). Tout groupe de travail peut être le propriétaire de l'objet ou avoir le droit de lire ou d'écrire. Il existe plusieurs niveaux d'accès:

  • Les membres du groupe de travail avec le niveau de droits de propriétaire peuvent effectuer n'importe quelle action avec l'objet (groupe de travail avec ce niveau de droits, l'objet ne peut en avoir qu'un);
  • Un groupe de travail avec le droit d'enregistrer peut gérer l'objet, mais ne peut pas le supprimer et en distribuer les droits à d'autres groupes de travail;
  • Un groupe de travail en lecture seule peut afficher des informations sur un objet;
  • Un GT sans droit d'accès à un objet n'est pas du tout conscient de son existence.

Par défaut, le système a été créé WP "Administrateurs de l'espace", qui vient d'installer mon utilisateur. Ce groupe de travail possède tous les droits sur tous les objets qui seront créés dans cette entité. Pour les collègues qui souhaitent également jeter un coup d'œil au système, créez un Super Administrateurs WP supplémentaire.


Groupes de travail, rôles et participants

Les droits d'utilisateurs spécifiques sont configurés dans le cadre du GT sous forme de rôles.

Configuration PCM


Il s'agit du modèle de service de ressources. Il s'agit d'un modèle de service logique qui décrit la composition et les relations des KE avec les ressources KE, qui fournissent ensemble le service à un niveau convenu. PCM est nécessaire pour stocker des informations sur les objets, les entités et les relations entre eux. PCM dans MONQ est un graphique de réseau contenant des informations sur les KE et leurs relations.

La principale différence et, à mon avis, l'avantage de la mise en œuvre du PCM dans le système est l'accent mis sur les services aux entreprises. Cela permet de présenter la structure complète du service ou du service que l'utilisateur final utilise, et non de se concentrer sur le système d'infrastructure sur lequel le service ou le service est basé.

À des fins de test, j'ai créé un "compte personnel de l'utilisateur" PCM simplifié.


PCM "Compte personnel de l'utilisateur"

Après avoir configuré la surveillance, je montrerai comment elle sera transformée.

Composition du PCM:

  • La machine virtuelle sur laquelle le système d'information (SI) SRVe3_VM15 s'exécute;
  • STR: Nginx_LK, PHP-fpm_LK, MySQL_LK;
  • Notre service (IS) - LK (compte personnel);
  • Modules IP: autorisation, recherche, gestion de documents, paiement. En fait, il y en a plus, mais jusqu'à présent, ils n'ont créé que ceux-ci.

Configuration de l'intégration


MONQ fournit la connexion de différents types de systèmes:

  • Systèmes de surveillance (Zabbix, Prometheus, SCOM et autres);
  • Systèmes de collecte de journaux (Splunk, Logstash et autres);
  • Systèmes de lancement d'autotest (Jenkins, Gitlab CI et autres)
  • Bureaux de service, trackers de tâches (Microfocus SM, Jira, Redmine, Naumen et autres).

J'ai connecté les systèmes de surveillance Zabbix, Prometheus. Ces connecteurs sont configurés dans la section Intégration.


Intégration avec les systèmes de surveillance

Les mesures et les événements proviennent de Zabbix et de Prométhée vers MONQ.

Connexion de la surveillance synthétique (tests fonctionnels automatisés)


Dans MONQ, vous pouvez également configurer les tests fonctionnels des applications. Dans mon exemple, il s'agit d'un compte personnel. J'ai connecté plusieurs versions d'autotests de Jenkins.


Module de suivi fonctionnel «Projets FMON»

La surveillance fonctionnelle dans MONQ est un module distinct avec son propre écran «Functional Testing». Et voici un exemple de rapport sur l'exécution d'un de mes tests:


Projet d'autorisation d'utilisateur FMON, échec de l'assemblage

Configurer la surveillance et les alertes


À l'aide de modèles standard (plusieurs modèles prêts à l'emploi pour les déclencheurs synthétiques pour chaque intégration sont disponibles prêts à l'emploi), il a créé des déclencheurs synthétiques pour les événements principaux de Zabbix et de Prométhée. Les déclencheurs synthétiques ici sont des déclencheurs créés à l'intérieur de la plate-forme qui fonctionnent avec des données primaires provenant de différentes sources. Ensuite, j'ai lié les déclencheurs résultants aux éléments PCM (KE).


Section "Déclencheurs synthétiques"

Et cela ressemble à un déclencheur synthétique créé par le modèle.


Un exemple de déclencheur synthétique créé par le modèle pour Prometheus

Dans la section "Mes scripts", par exemple, il existe déjà un script qui redémarre le serveur. Le script lui-même est écrit en Lua et peut être modifié. Sur cette base, j'ai créé mon propre script pour redémarrer le service.


Script de redémarrage du service sur le serveur

En plus de l'intégration habituelle avec le client de messagerie, vous pouvez configurer l'envoi de notifications à divers messageries instantanées. Dans ce cas, vous pouvez configurer un bot de discussion qui écrira à un groupe spécial, par exemple, à la conversation des administrateurs dans un télégramme.

Pour utiliser les intégrations avec les messageries instantanées, vous devez ouvrir l'accès au cloud Microsoft Azure.

Les utilisateurs avancés peuvent écrire leurs propres plugins de notification sur Lua. Voici un exemple de mon script pour l'envoi de notifications par SMS.


Plugin d'envoi de SMS pour la plateforme MONQ

Surveillance de la visualisation


Après le réglage, mon PCM a un peu changé, trois autres systèmes ont été placés pour une surveillance générale, dont l'état détermine les performances du «compte d'utilisateur personnel» du SI. Ajout également de plusieurs services.


"Compte personnel de l'utilisateur" PCM avec déclencheurs joints

Des informations générales sur l'état des objets sous surveillance sont affichées sur la vue principale sous la forme de widgets personnalisés.


La présentation principale du SI "Compte personnel"

Au moment de la capture d'écran, il y a un problème avec un grand nombre de requêtes dans la base de données, en raison de laquelle la réponse des pages du SI "Compte d'utilisateur personnel" a augmenté. Le système en informe à l'écran et envoie des SMS.

Pour la surveillance opérationnelle, l '«écran opérationnel» est utilisé sur lequel il n'y a qu'un seul widget avec la liste actuelle des événements (événements actifs et événements qui se sont fermés il y a 15 minutes).


Présentation d'écran en direct

Pour les tests, j'ai généré une charge élevée sur le CPU de la machine virtuelle en utilisant MySQL. Le système a saisi l'événement et a lancé l'action avec un script de redémarrage du service mysqld pré-préparé. Si après 15 minutes l'événement est toujours actif, un redémarrage se produit.


Le service a redémarré correctement et j'ai reçu une notification indiquant que tout allait bien.

Tous les événements dans le temps peuvent être consultés dans la section "Chronologie". Et si le système ITSM est toujours connecté, il affichera le travail prévu selon le KE.


Surveillance des événements dans la vue Chronologie

Des informations sur la disponibilité des systèmes installés pour la surveillance se trouvent dans la vue «SLA Reports».


Signaler le SLA sur IP "Compte personnel de l'utilisateur"

Pour plus de clarté, j'ai généré un rapport pendant deux semaines en excluant les événements avec les priorités 3 et 4, enfin, les tests, bien sûr. Si vous croyez au rapport, le système fonctionne bien. Le rapport est exporté au format PDF et XLS.

Les écrans affichent des informations sur les filtres préconfigurés par l'utilisateur. Tout événement sur les écrans peut être marqué pour une recherche ou un filtrage rapide.

Licence


L'avantage non fonctionnel, mais non moins clé, de MONQ j'ai économisé pour la fin de l'article. C'est une licence. La grande majorité des solutions de surveillance parapluie étrangères sont autorisées par le nombre d'appareils (généralement appelés par points de terminaison, par instance de système d'exploitation ou autre) à partir desquels les événements ou les mesures sont traités. Que vous collectiez des données à partir des objets de surveillance finaux ou qu'un autre système de surveillance le fasse. Si les mesures sont collectées à l'aide d'un système commercial, le double paiement pour la même chose est inévitable. MONQ est autorisé par le nombre de connecteurs utilisés pour les systèmes externes. Autrement dit, si vous utilisez deux systèmes, d'où vous souhaitez collecter des informations - ce sont deux connecteurs utilisés ou deux licences. Ainsi, du point de vue des «frais de perception», lors de l'utilisation de MONQ, rien ne changera. Vous ne paierez que le coût de l'intégration à ces systèmes. En cela, je vois un grand avantage et un grand potentiel.

Comme on m'a dit, les plans de développement du système sont de nombreuses améliorations qui sont constamment introduites. Des innovations notables au cours des six prochains mois apparaîtront: un constructeur de tableau de bord, un maître pour la création de déclencheurs synthétiques, des détails accrus lors du calcul du SLA (vous verrez quel facteur et quelle influence sur l'accessibilité de l'objet) et une API publique externe.

Conclusions


J'ai aimé que les gars de la société de développement prennent facilement contact, parlent et partagent des informations, et j'ai aimé le système. Il n'a toujours pas beaucoup de fonctionnalités et il est difficile de comparer directement avec Splunk ou AppDynamics en termes d'AIOps, mais, clairement, si tout ce qu'ils disent se réalise, ce système prendra la place qui lui revient parmi les leaders du marché et le quadrant Gartner.

Si vous souhaitez évaluer le système vous-même, obtenir une présentation, regarder une démonstration ou si vous recherchez une solution parapluie depuis longtemps et êtes prêt pour un projet pilote, veuillez laisser une demande dans le formulaire de commentaires sur notre site Web.

Source: https://habr.com/ru/post/fr476134/


All Articles