Supervision d’une installation BlueMind

Lorsque une panne se produit ou que des dysfonctionnements sont constatés, il est souvent complexe d’en trouver la cause. Voilà pourquoi BlueMind 3.5.9 intègre désormais un stack complet (et open source) de métriques, alerting et de visualisation de l’état de la plateforme.
Partager

Un système BlueMind ou un serveur de messagerie en général est un système complexe. Il intègre de nombreux composants avec des rôles bien définis mais parfois obscurs. Lorsque une panne se produit ou que des dysfonctionnements sont constatés, il est souvent complexe d’en trouver la cause.

Une panne du système de messagerie est souvent source de panique car le service est critique pour la majorité des utilisateurs. Des mesures d’urgence sont alors prises, qui conduisent souvent à des redémarrages qui solutionnent (parfois) le problème mais vont rendre l’analyse post-mortem particulièrement complexe.

L’existant

Un système BlueMind, composé de nombreux services et de nombreuses machine virtuelles Java, essaie le plus souvent de ne pas mourir en silence.

On va trouver :
• Des fichiers /var/log/java_pid1234.hprof ; des dumps mémoires générés automatiquement lorsque le système rencontre un manque de mémoire
• Des fichiers de logs, très nombreux, où l’on va trouver des vilaines choses comme des index elastiscsearch qui nous disent « disk high watermark reached, disabling shards » (le disque dur est plein)

Dans ces différents cas, le problème ne sera pas pris en compte tout de suite, et un redémarrage ou un nettoyage du disque va avoir lieu avant qu’une anomalie ne soit remontée pour analyse.

Laisser un disque dur se remplir quand on gère un système n’est pas un fait d’arme très glorieux. On arrive à la situation suivante : l’administrateur système nettoie le disque dur, puis déclare une anomalie pour indiquer que la recherche n’est plus fonctionnelle.

Ce petit mensonge est problématique, mais ce qui nous intéresse, c’est d’empêcher la situation de se produire.

La supervision

Les systèmes de supervision existent, mais leur déploiement était jusqu’à maintenant laissé à la charge des personnes supervisant des installations BlueMind. La supervision des systèmes Java est un sujet assez complexe et les métriques généralistes ne sont ni intéressantes ni parlantes.

Avec BlueMind 3.5.9, nous avons intégré un stack complet de métriques, alerting et de visualisation de l’état de la plateforme.
Notre ADN étant open-source, nous nous sommes tournés vers une solution open-source : la TICK stack (Telegraf, Influxdb, Chronograf, Kapacitor) http://influxdata.com. Un agent telegraf est installé sur chaque nœud de votre installation. Telegraf transmet ces données à Influxdb, Kapacitor les analyse pour produire des alertes et Chronograf affiche des tableaux de bord pour aider à anticiper les problèmes.

Notre intégration

Pour la 3.5.9 toute la stack est disponible mais n’est pas déployée par défaut. Sur un serveur (votre serveur principal, avec bm-core, ou un serveur de supervision dédié) il faut installer le paquet bm-tick-full.

Ce dernier va déployer toute la stack TICK (que nous avons intégré dans nos dépôts pour contrôler les versions utilisées). Sur chaque serveur de votre installation BlueMind, il faut installer bm-tick-node. Si vous faites cela avant le passage en 3.5.9, l’assistant de mise à jour va s’occuper de tout. Sinon il est préférable après redémarrage de forcer la configuration de toute la stack :

curl -H « X-Bm-ApiKey: $(cat /etc/bm/bm-core.tok) » -XPOST http://localhost:8090/internal-api/tick/mgmt/_reconfigure

depuis votre serveur bm-core.

Agent Java

Les administrateurs les plus attentifs vont remarquer que les processus Java de BlueMind sont lancés avec une option supplémentaire :

/usr/lib/jvm/bm-jdk/bin/java -Dlogback.configurationFile=/etc/bm/local/bm-core.log.xml -Dio.netty.native.workdir=/var/lib/bm-core/work -Xloggc:/var/log/garbage-collector/bm-core/gc.pause.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=4 -XX:GCLogFileSize=4M -XX:+PrintGCApplicationStoppedTime -server -Xms812m -Xmx812m -Xss256k -XX:+UseCompressedOops -XX:MaxDirectMemorySize=812m -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log -Djava.net.preferIPv4Stack=true -Dnet.bluemind.property.product=bm-core -javaagent:/var/lib/bm-metrics-agent/bm-metrics-agent.jar -Djava.awt.headless=true -Dosgi.noShutdown=true -Duser.timezone=GMT -cp /usr/share/bm-core/plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar org.eclipse.equinox.launcher.Main -registryMultiLanguage -debug -application net.bluemind.application.launcher.coreLauncher

C’est cet agent, attaché à nos machines virtuelles, qui nous permet d’exposer nos métriques applicatives à Telegraf. Que fait-il ?
Il ouvre un socket unix dans /var/run/bm-metrics, pour chaque JVM :

Ces sockets unix sont interrogés par Telegraf pour obtenir les métriques de chaque composant :

curl –unix-socket /var/run/bm-metrics/metrics-bm-lmtpd.sock http://bm/metrics

Qui nous donne en version simplifiée :

Ces données vont être consommées par Telegraf toutes les 10 secondes et…

Dashboards !

Ceci est un exemple de tableau de bord sur le flux de mail pre-configuré dans BlueMind 3.5.9.
Mais de nombreuses autres métriques sont disponibles : système (disques, charge, trafic réseau), postgresql (QPS, shared buffers usage), nginx.

Les données sont historisées sur une fenêtre de 7 jours, donc plus de mystère sur le disque dur qui était encore plein 2 heures avant de remonter un incident.

Alerting

Connaître le nombre de processus IMAP actifs, c’est bien. Le comparer avec le maximum configuré c’est mieux.

Cette métrique est observée en permanence par Kapacitor (le script imap-connections est configuré par bluemind) pour comparer le nombre de process à un instant avec celui configuré dans BlueMind.

Ces alertes sont visibles sur l’accueil du monitoring/tick/ de votre BlueMind avec le mot de passe de l’assistant d’installation.

Annotations

En corrolaire des alertes viennent les annotations, qui nous permettent de pointer des points dans le temps (ou des plages de temps) sur nos graphes.
Si le Core est redémarré par un administrateur, la supervision l’archive et le montre sur tous les graphes :

Les tâches programmées qui s’exécutent dans votre système sont aussi intégrées sur les graphes dès qu’elles prennent plus de 30 secondes. Plus de doute désormais pour diagnostiquer que les lenteurs ressenties par les utilisateurs sont dues à une sauvegarde ou un import d’annuaire.

La suite

De nombreuses métriques sont enregistrées par notre produit mais toutes ne sont pas encore exploitées dans des graphes ou des scripts d’alerting. Les dashboards et scripts d’alerting peuvent être ajoutés à BlueMind via des plugins et les prochaines versions devraient en amener de nouveaux et proposer des fonctions de « self healing » (quand tel problème survient, la solution est connue et donc appliquée de manière automatique).

Découvrez toute la documentation ici

Contenus similaires
Résumé de la politique de confidentialité

1. Préambule

BlueMind est particulièrement attaché au respect de la vie privée et à la protection des données à caractère personnel. Aussi, la présente politique de protection des données a pour objectif de vous informer sur les engagements et mesures pratiques pris par BlueMind afin de veiller au respect de vos données à caractère personnel.

La présente politique de confidentialité pourra évoluer en fonction du contexte légal et réglementaire et de la doctrine de la Cnil.

2. Champ d’application

Cette politique de protection des données à caractère personnel s’applique à tous les traitements de données à caractère personnel, mis en œuvre par BlueMind, relatifs aux personnes extérieures (notamment les clients, partenaires, candidats au recrutement, fournisseurs, internautes).

3. Données collectées

De manière générale, vous pouvez entrer en contact avec BlueMind et visiter nos sites internet sans qu’il soit nécessaire de nous communiquer vos données personnelles.

Toutefois, afin d’être en mesure de vous apporter certains services, BlueMind peut vous demander de lui fournir des données personnelles, par exemple, pour répondre à une demande de contact, suivre un dossier de candidature, envoyer une newsletter ou gérer votre souscription à nos services.

Peuvent notamment être collectées vos coordonnées (nom, adresse, numéro de téléphone, adresse électronique, etc.) et d’autres informations, telles que celles indispensables à l’ouverture d’une souscription, ou bien encore des données liées à votre parcours professionnel lorsque vous postulez à l’une de nos offres.

Dans tous les cas, BlueMind veille à ne collecter et ne traiter que des données strictement nécessaires au regard de la finalité pour laquelle elles sont traitées (minimisation des données).

4. Finalités de la collecte

Les traitements mis en œuvre par BlueMind répondent à une finalité explicite, légitime et déterminée.

Vos données sont traitées principalement pour les finalités suivantes :

la gestion de votre inscription aux évènements ;
la gestion de votre abonnement à nos publications ;
la réponse à vos demande de contact ;
le suivi de votre dossier de candidature.

5. Information des utilisateurs

Conformément à la Règlementation Informatique et libertés, BlueMind vous informe sur les traitements de données à caractère personnel qu’elle met en œuvre.

Ainsi, BlueMind vous informe, de manière claire, lors de chaque collecte de données à caractère personnel notamment :

de l’identité du responsable de traitement (il s’agit du Data Protection Officer, DPO) ;
de la finalité pour laquelle vos données sont collectées ;
du caractère facultatif ou obligatoire des réponses ;
des destinataires des données ;
de l’existence et des modalités d’exercice des droits d’interrogation, d’accès, de rectification et d’opposition relativement à l’ensemble des données vous concernant.

6. Destinataires des données

BlueMind ne communique vos données à caractère personnel qu’à des destinataires habilités et déterminés.

Les destinataires de vos données à caractère personnel sont les services concernés de BlueMind.

7. Conservation des données

BlueMind ne conserve vos données que pour la durée nécessaire aux opérations pour lesquelles elles ont été collectées ainsi que dans le respect de la législation en vigueur.

8. Sécurité

BlueMind assure la sécurité de vos données à caractère personnel en mettant en place une protection des données renforcée par l’utilisation de moyens de sécurisation physiques et logiques.
9. Vos droits

En application de la règlementation Informatique et libertés, vous disposez d’un droit d’accès, de rectification, d’effacement, de limitation du traitement, à la portabilité et de définir le sort de vos données après votre décès relativement à l’ensemble des données vous concernant qui s’exercent auprès du Délégué à la protection des données par courrier électronique à l’adresse suivante : dpo@bluemind.net ou par courrier postal à l’adresse suivante, Hôtel des Télécom, BlueMind, 40 rue du village d’entreprise, 31670 Labège, accompagné d’une copie d’un titre d’identité signé.

10. Contact

Pour toutes demandes d’information concernant la politique de protection des données à caractère personnel mise en œuvre par BlueMind, vous pouvez vous adressez à dpo@bluemind.net