Bonjour à tous. Oui, je sais, nous sommes vendredi et je vois que nombre d’entre vous sont déjà déçus de ne pas avoir de billet “Rognotudju”. Même si l’envie ne m’en manque pas, je vais être plus constructif en cette veille de week-end bienvenue ! Je vous propose dans ce petit billet de vous présenter une méthode ‘artisanale’ vous permettant de superviser les débits des ports de vos différents tier0/tier1 via les API, le tout envoyé et graphé vers une base classique Telegraf/InfluxDB/Grafana.

Extraire les metrics des API

L’API REST de NSX-T est extrêmement riche, c’est même la première méthode développée par VMware pour configurer et gérer le produit, plus encore que l’interface Web (on en a déjà parlé sur vBlog ^^). A ce titre, sa documentation est très fournie (voir ici, attention, l’affichage prend du temps). Cela nous a permis de trouver ce qu’il nous fallait assez vite.

Notre objectif ici est donc d’extraire des données de débits ou de volumes des ports logiques de routeurs T0 ou T1. Pour cela on va utiliser la méthode GET /logical-router-ports/. Dans la pratique cela se traduit par une requête complète de ce type, via curl :

En retour, on obtient la liste exhaustive de tous les ports logiques de tous les routeurs en place dans l’infrastructure NSX-T. Autant dire que cela peut faire du monde. Ce qu’il faut retenir ici c’est que chaque port logique est identifié (comme tout objet NSX par ailleurs) par un UUID au format “XXXXXXXX-BBBB-CCCC-DDDD-EEEEEEEEEEEE”. C’est avec cet UUID que l’on va pouvoir extraire les statistiques recherchées. Il faut également récupérer l’UUID du edge node duquel vous souhaitez extraire les stats. En effet, que vous ayez choisi le mode actif/standby ou l’actif-actif lors de la définition de vos routeurs, les statisques sont spécifiques à chaque instance déployée et donc spécifiques au edge node que vous allez interroger.

Ensuite, il suffit de produire une requête GET /logical-router-ports/XXXXXXXX-BBBB-CCCC-DDDD-EEEEEEEEEEE/statistics?transport_node_id=YYYYYYYY-BBBB-CCCC-DDDD-EEEEEEEEEEE avec les bon UUID et vous obtenez une sortie JSON de ce type :

Les données intéressantes sont là, à porter de main : total_bytes, total_packets et dropped_packets. Le reste n’est que de la mise en forme et du scripting. A noter que vous pouvez aussi superviser unitairement un port au sein de vos segments, utilisez plutôt la méthode basée GET /logical-ports/ , ça marche très bien aussi !

Comment trouver facilement les UUID de vos logical ports et edge nodes

Si vous êtes familier des requêtes REST API, vous pouvez vous en sortir en ligne de commande, mais il y a un moyen plus simple de retrouver les UUID dont vous aurez besoin via l’interface de management. Pour les edges nodes, rendez-vous dans la section “System”, onglet “Fabric->Nodes”. Ensuite cliquez directement sur l’ID du edge node pour le consulter en totalité.

Pour la partie logical port des routeurs, rendez-vous cette fois-ci dans “Advanced Network & Security”, onglet “Routers”, puis ouvrez la fiche du routeur cible. Enfin, ouvrez le menu contextuel “Configuration” puis “Router ports”. Il vous suffit, comme pour les edges node, dans la liste des port, de cliquer sur l’ID pour l’afficher en entier.

Mise en forme pour Telegraf/InFluxDB

On est paré pour extraire les données de NSX-T, les mettre en forme et les injecter dans InfluxDB via Telegraf. Pour se faire, j’ai construit un petit script sans grosses ambitions pour le moment, mais “qui fait le taff” comme on dit (Il faudrait sans doute pas mal le faire évoluer notamment pour la gestion des exceptions et erreurs). En entrée, vous indiquez l’UUID du logical port à interroger, suivi d’une description (plus facile de sélectionner une description qu’un UUID de port dans l’interface Grafana ^^) et enfin, le nom du edge node (vers lequel on fait un simple mapping nom->UUID). Nous avons aujourd’hui deux TIER0 en production chez nous, donc assez logiquement 4 edge nodes.

Ce script, lancé directement avec les bonne infos, renvoie deux lignes spécifiques compatible avec l’injection Telegraf->InfluxDB :

Coté Telegraf, la configuration est très simple, il vous suffit d’ajouter cette source avec des valeurs adaptées :

C’est bôô !

Les informaticiens sont souvent des gens simples, qui s’émerveillent de pixels formant des courbes souvent incompréhensibles par le “vulgus pecum”. Donc, on va s’extasier ensemble, voila ce que ça peut donner avec une petite dizaine de requêtes NSX-T intégrées et mises en formes sur Grafana :

Comme toujours, n’hésitez pas à commenter, surtout ce genre d’articles techniques, cela permet d’enrichir le sujet !