Le but de cet article est d'expliquer comment peut-on administrer une application Mulesoft ou un ensemble d'applications Mulesoft. Bien que le Control Pane fourni par CloudHub propose de nombreuses pages de configuration / consultation - en particulier pour les logs - elle ne permet pas de répondre rapidement aux questions très liées au domaine traité, telles que: "pourquoi ma commande CI234325 n'a été importée dans SAP" ou "Est-ce que le fichier MVTOPT_1243.csv a été traité ?". Sans développement adapté, répondre à ce type de question nécessite une investigation - et de l'archéologie dans les logs - rarement négligeable en terme de temps passé.
Il n'est donc pas raisonnable de se contenter des fonctions fournies en standard par l'outil, il faut l'accompagner de fonctionnalités d'administration spécifiques, qu'il faut développer en parallèle des fonctionnalités qui portent la valeur métier. Certains rétorqueront qu'une utilisation soignée des logs peut palier au problème et ils auraient raison... et tort. Raison, car en effet, toutes les informations nécessaires pour alimenter un outil d'investigation peuvent s'y trouver et tort, car les meilleures logs au monde ont quand même besoin d'un outil sophistiqué pour pouvoir être exploitées efficacement. Les logs (comme on le verra plus loin) sont effectivement une solution technique à notre problème, mais en partie seulement.
Prenons un peu de hauteur: à qui et à quoi sert un outil d'investigation
- Qui ? essentiellement deux types d'intervenants:
- le Support Niveau 2 (c'est à dire la personne qui doit localiser OU le problème a eu lieu)
- l'exploitant, qui doit s'assurer que les flux inter-applicatifs fonctionnent correctement.
- Quoi ?
- Répondre aux questions très concrètes posées plus haut,
- vérifier le bon fonctionnement du système,
- lancer des commandes pour assurer ce bon fonctionnement.
Pour qu'un tel outil soit vraiment utile et utilisable, il faut:
Qu'il soit unique : si le support niveau 2 doit farfouiller dans les logs de dix outils différents il risque de consommer beaucoup de temps à consulter ceux qui ne sont pour rien dans l'incident. S'il n'a qu'un outil, il saura immédiatement où l'incident a eu lieu.
Qu'il soit efficace : c'est à dire qu'il propose :
- un filtre sur mot clé, généralement l'identifiant d'un objet fonctionnel (la commande, le produit, le client) ou technique (le fichier d'import MVTOPT_1243.csv)
- d'ordonner les lignes récupérées
- de mettre en exergue les informations les plus pertinentes
- d'alerter en cas de dysfonctionnement grave
- de surveiller l'usage de certaines ressources ou de détecter la présence ou l'absence d'artefacts ou de services
- des méthodes simples d'intervention pour relancer un flux ou apporter une correction
On voit ici que les fonctionnalités demandées sont peu ou prou celles offertes par une base de données. Notons que si les fonctionnalités de recherches sont plus puissantes, le travail d'investigation s'en trouvera encore davantage faciliter.
En bref, une solution d'administration est composée des trois éléments donnés dans le schéma ci-dessous:
- les applications Mulesoft qui alimentent le système en notifications,
- une base de données (au sens général: un outil capable de conserver de l'information et de la structurer, pas forcément un SGBD)
- un outil de consultation des notifications collectées capable aussi d'emmètre des commandes à destination des serveurs Mulesoft.
Les applications Mulesoft alimentent la base de données au fur et à mesure de l'exécution des API et des flux. Le support de niveau 2 ainsi que l'exploitation utilise l'outil de consultation pour vérifier l'état du système ou identifier la cause d'un incident. Notons qu'un tel système peut être utilisé par d'autres composantes du SI que Mulesoft et qu'il est même très utile que ce soit le cas: cela permet de suivre le déroulement d'un processus de l'entreprise de manière transversale aux outils.
Quelles informations conserver et comment doivent elles être structurées ? Je propose le principe suivant (vu chez un de nos clients et qui s'est révélé particulièrement efficace). La structure d'une notification est la suivante:
- Un identifiant de session (ou de identifiant de transaction)
- Le type et l'identifiant de l'objet technique/fonctionnel concerné par la notification
- La date (estampille temporelle a la milliseconde) ou la notification a été émise
- La source (= instance Mulesoft ou outil tiers) à l'origine de la notification
- L'opération en cours (sachant qu'une session/transaction peut être une succession de ces opérations)
- Une zone d'information plus générale.
La structure des notifications fait penser à celle de logs et effectivement certains logs peuvent être utilisées pour implémenter des notifications. Nous verrons dans la suite de ce document que plusieurs solutions de monitoring existantes utilisent ce type d'implémentation (ELK, Titanium).
L'identifiant de session (identifiant généralement un processus métier) est le liant entre les différents objets impliqués dans le processus (par exemple, le fichier csv et les commandes décrites dans le fichier csv que l'on crée) et pour cette raison, c'est un élément essentiel pour reconstruire l'historique de transactions complexes.
La partie information peut contenir n'importe quel type d'information, mais nous avons avantage à ce que cette information soit structurée (XML, JSON) car cela permet de construire des filtres plus sophistiquées.
Dressons une liste des implémentations les plus courantes:
ELK
C'est un peu la solution par défaut. Elle consiste à rapatrier les logs de Mulesoft (et des autres outils) à l'aide de Logstash, de les stocker dans une base Elastic Search et d'utiliser ensuite Kibana pour l'exploiter. Ces trois outils sont proposés en Open Source.
Les avantages de la solution sont :
- Solution de référence du marché
- Solution de référence de l’éditeur MULESOFT
- Compétences disponibles sur le marché
- Outillage disponible et éprouvé Open Source
- Utilise les LOG Mulesoft
- Utilise les LOG des autres outils du SI
- Peut être utile même si aucune fonction de support/monitoring n’a été développée
- Intégration avec les logs de DEBUG/TRACE
- Les compétences ELK sont très techniques et chères
- La maintenance d’une solution ELK est hors de portée d’un client non technique
- Le coût d’une installation ELK est non négligeable
- La maîtrise de Kibana est essentielle pour proposer un service adapté
- Infrastructure ELK dédiée requise (Cloud ou OnPremise)
- Ne répond pas au problématiques d’intervention/correction (=> Dev d’une API et d’une collection POSTMAN dediée)
Parmi les avantages, on compte:
- Solution éditeur Clé en main
- Utilise les LOG Mulesoft
- Pas de coût d’installation, de configuration
- Pas d’infrastructure dédiée
- Pas de maintenance donc autonomie du client
- Parfaitement intégrée dans la contrôle Pane
- Peut être utile même si aucune fonction de support/monitoring n’a été développée
- Intégration avec les logs de DEBUG/INFO
- Coût de l’extension Titanium
- Service très « générique » non configurable
- Ne répond pas au problématiques d’intervention/correction (=> Dev d’une API et d’une collection POSTMAN dédiée)
- Ne sais pas utiliser les LOG des autres pièces du SI
- Peut nécessiter le développement d’un API de LOG sur Mulesoft à mettre à la disposition des autres pièces du SI
- Répond à toutes les problématiques (surveillance, investigation, intervention)
- Permet l’implémentation de solutions de monitoring très adaptées et très efficaces
- Ne nécessite que des compétences technique MULESOFT (et POSTMAN) « basiques »
- Peut venir en complément d’une autre solution (pour la partie intervention notamment)
- Coût de la mise en place (tout est à faire…)
- Maintenance de la solution (généralement hors de portée d’un Client)
- Nécessite une infrastructure dédiée (en Cloud ou onPremise)
- Instrumentation spécifique du code Mulesoft
- Pas de possibilité de l’intégrer « automatiquement » aux LOG Mulesoft et des autres pièces du SI
- Peut nécessiter le développement d’un API de LOG sur Mulesoft à mettre à la disposition des autres pièces du SI
- Permet une gestion très intégré des actions de monitoring et d’exploitation
- Très adaptée aux problématiques des (très) grands clients
- Offre un panel riche de fonctionnalités
- Très structurant pour le SI du Client (en fait, cette solution n’est possible – et devient obligatoire – que si le client a DÉJÀ mis en place une solution de ce type.
- Coût (cependant noter qu’il existe des solution Open Source)
- Fonctionnalités et expérience entièrement dépendante de l’outil
- Installation et configuration entièrement dépendante de l’outil (ce n'est parfois pas évident de trouver des compétences sur le marché)
The purpose of this article is to explain how to administer a Mulesoft application or a set of Mulesoft applications. Although the Control Pane provided by CloudHub offers a number of configuration / consultation pages - particularly for logs - it does not provide a quick answer to questions that are very closely related to the domain being dealt with, such as: "Why has my CI234325 command not been imported into SAP?" or "Has the MVTOPT_1243.csv file been processed? Without appropriate development, answering this type of question requires investigation - and archaeology in the logs - which is rarely negligible in terms of time spent.
It is therefore unreasonable to be satisfied with the functions provided as standard by the tool. It must be accompanied by specific administration functions, which must be developed in parallel with the functions that deliver business value. Some will argue that careful use of logs can solve the problem, and they would be right... and wrong. Right, because in fact all the information needed to feed an investigation tool can be found there and wrong, because the best logs in the world still need a sophisticated tool to be exploited effectively. Logs (as we shall see later) are indeed a technical solution to our problem, but only in part.
Let's take a step back: who and what is the purpose of an investigative tool?
- Who? Essentially two types of stakeholder:
- Level 2 Support (i.e. the person who has to locate WHERE the problem occurred)
- the operator, who must ensure that the inter-application flows function correctly.
- What does this mean?
- Answering the very specific questions posed above,
- check that the system is working properly
- issue commands to ensure that the system is working properly.
For such a tool to be truly useful and usable, it needs to be..:
It must be unique: if level 2 support has to rummage through the logs of ten different tools, it runs the risk of spending a lot of time consulting those that had nothing to do with the incident. If it only has one tool, it will know immediately where the incident took place.
It must be efficient: in other words, it must offer :
- a keyword filter, generally the identifier of a functional object (the order, the product, the customer) or a technical object (the MVTOPT_1243.csv import file)
- order the lines retrieved
- highlight the most relevant information
- alert in the event of a serious malfunction
- monitor the use of certain resources or detect the presence or absence of artefacts or services
- simple intervention methods to restart a flow or make a correction
We can see here that the functions required are more or less the same as those offered by a database. Note that if the search functions are more powerful, the investigation work will be even easier.
In short, an administration solution is made up of the three elements shown in the diagram below:
- the Mulesoft applications that feed the system with notifications,
- a database (in the general sense: a tool capable of storing information and structuring it, not necessarily a DBMS)
- a tool for consulting the notifications collected, also capable of issuing commands to the Mulesoft servers
Mulesoft applications feed the database as APIs and flows are executed. Level 2 support and operations use the consultation tool to check the status of the system or identify the cause of an incident. It should be noted that such a system can be used by IS components other than Mulesoft, and that it is even very useful for this to be the case: it enables the progress of a company process to be monitored across all the tools.
What information should be kept and how should it be structured? I suggest the following principle (seen with one of our customers and which has proved particularly effective). The structure of a notification is as follows:
- A session identifier (or transaction identifier)
- The type and identifier of the technical/functional object concerned by the notification
- The date (time stamp to the millisecond) on which the notification was issued
- The source (= Mulesoft instance or third-party tool) of the notification
- The current operation (bearing in mind that a session/transaction can be a succession of these operations)
- A more general information area.
The structure of the notifications is reminiscent of that of logs, and indeed some logs can be used to implement notifications. We will see later in this document that several existing monitoring solutions use this type of implementation (ELK, Titanium).
The session identifier (generally identifying a business process) is the link between the various objects involved in the process (for example, the csv file and the commands described in the csv file that is created) and for this reason it is an essential element for reconstructing the history of complex transactions.
The information part can contain any type of information, but it is to our advantage if this information is structured (XML, JSON) as this allows us to build more sophisticated filters.
Here's a list of the most common implementations:
ELK
This is more or less the default solution. It involves retrieving logs from Mulesoft (and other tools) using Logstash, storing them in an Elastic Search database and then using Kibana to exploit it. These three tools are offered as Open Source.
- Market benchmark solution
- MULESOFT's benchmark solution
- Skills available on the market
- Available and proven Open Source tools
- Uses Mulesoft LOGs
- Uses the LOGs of other IS tools
- Can be useful even if no support/monitoring function has been developed
- Integration with DEBUG/TRACE logs
- ELK skills are highly technical and expensive
- The maintenance of an ELK solution is out of reach for a non-technical customer
- The cost of an ELK installation is not negligible
- Expertise in Kibana is essential to offer a suitable service
- Dedicated ELK infrastructure required (Cloud or OnPremise)
- Does not address intervention/correction issues (=> Dev of an API and a dedicated POSTMAN collection)
- Turnkey editor solution
- Uses Mulesoft LOGs
- No installation or configuration costs
- No dedicated infrastructure
- No maintenance, so customer autonomy
- Perfectly integrated into Pane control
- Can be useful even if no support/monitoring function has been developed
- Integration with DEBUG/INFO logs
- Cost of the Titanium extension
- Very generic, non-configurable service
- Does not address intervention/correction issues (=> Dev of an API and a dedicated POSTMAN collection)
- Does not know how to use LOGs from other parts of the IS
- May require the development of a LOG API on Mulesoft to be made available to other parts of the IS
- Responds to all issues (monitoring, investigation, intervention)
- Allows the implementation of highly adapted and effective monitoring solutions
- Requires only "basic" MULESOFT (and POSTMAN) technical skills
- Can be used in conjunction with another solution (particularly for intervention)
- Cost of implementation (everything has to be done...)
- Maintenance of the solution (generally out of reach for a customer)
- Requires a dedicated infrastructure (Cloud or onPremise)
- Specific instrumentation for Mulesoft code
- Cannot be "automatically" integrated with Mulesoft LOGs and other parts of the IS
- May require the development of a LOG API on Mulesoft to be made available to other parts of the IS
- Allows highly integrated management of monitoring and operational actions
- Highly adapted to the needs of (very) large customers
- Offers a rich range of functions
- Very structuring for the customer's IS (in fact, this solution is only possible - and becomes compulsory - if the customer has ALREADY implemented a solution of this type.
- Cost (although it should be noted that there are Open Source solutions)
- Functionality and experience entirely dependent on the tool
- Installation and configuration entirely dependent on the tool (it is sometimes difficult to find skills on the market)