Sommaire
Le package NetworkTools permet de monitorer des ressources réseau et offre différents outils pour faire des Pings, tests d’ouverture de port TCP, tests de site Web (HTTP), scanner de port, Wake-On-Lan ou encore résolution DNS.
Le code source de ce package est en ligne sur : https://github.com/myconstellation/constellation-packages/tree/master/NetworkTools
Installation
Depuis le “Online Package Repository” de votre Console Constellation, déployez le package NetworkTools :
Une fois le package télécharger votre repository local, sélectionnez la sentinelle sur laquelle déployer le package.
Pour finir, sur la page de Settings, vous pouvez définir les ressources à monitorer :
Si vous n’avez rien à monitorer vous pouvez supprimer (bouton “Remove”) le setting ou encore effacer le JSON. La configuration du monitoring réseau est expliquée ci-dessous.
Bien entendu vos pouvez également déployer ce package manuellement dans la configuration de votre Constellation. Par exemple sans aucun monitoring :
1 |
<package name="NetworkTools" / > |
Configurer le monitoring
Ce package expose différentes fonctions (MessageCallbacks) dans votre Constellation pour tester des ressources réseau (Site Web HTTP, port TCP, Ping, résolution DNS, scanner de port, etc..). Il peut aussi monitorer à intervalle régulier des ressources réseau et publier le résultat dans les StateObjects Constellation.
Pour cela le paramètre “Monitoring” est un tableau JSON qui contient la liste des ressources à monitoring.
Il y a trois type de monitoring :
- Ping : effectue un ping (IMCP Echo) vers une adresse IP ou DNS
- Tcp : effectue un test d’ouverture de socket que un port TCP
- Http : effectue un appel HTTP et optionnellement une vérification de la réponse
Chaque ressource à monitorer est identifiée par un nom qui sera utilisé comme nom de StateObject pour la publication du résultat.
De plus chaque ressource peut spécifier son intervalle de temps entre deux test (par défaut fixé à 60 secondes).
Par exemple pour pinger une machine toutes les minutes :
1 |
{ Name: "Ping My Machine", Type: "Ping", Hostname: "myhostname.mydomain.com" } |
Pour pinger la même machine mais toutes les 10 secondes :
1 |
{ Name: "Ping My Machine", Type: "Ping", Hostname: "myhostname.mydomain.com", Interval:10 } |
Pour monitorer un service TCP sur le port 80 toutes les 10 secondes :
1 |
{ Name: "My Web Server", Type: "TCP", Hostname: "myhostname.mydomain.com", Port: 80, Interval:10 } |
Pour monitorer un site Web HTTP :
1 |
{ Name: "Check Sebastien.warin.fr", Type: "Http", Address: "http://sebastien.warin.fr" } |
La même chopse mais en vérifiant le réponse HTTP avec une expression régulière :
1 |
{ Name: "Check Sebastien.warin.fr", Type: "Http", Address: "http://sebastien.warin.fr", Regex: "Le blog personnel et technique de Sebastien Warin", Interval: 30 } |
Détails du package
Les Settings
Nom | Type | Détail | Description |
Monitoring | Object JSON | Optionnel | La liste des ressources réseau à monitoring (Ping, port TCP ou site web) |
Les StateObjects
Vous retrouverez autant de StateObjects que vous avez de ressources monitorées.
Par exemple
Nom | Type | Description |
<< resource monitorée >> | NetworkTools.MonitoringResult | Le StateObject représente le dernier état connu de la ressource (état et temps de réponse) |
Les MessageCallbacks
Le package expose 6 MessageCallbacks :
Nom | Réponse (saga) | Description |
CheckHttp | Int64 | Test une URL HTTP et retourne le temps de réponse en seconde (ou –1 si pas de réponse). |
CheckPort | Int64 | Test un port TCP et retourne le temps de réponse en seconde (ou –1 si pas de réponse). |
DnsLookup | String[] | Résolution DNS d’une adresse et retourne la liste des adresses IP |
Ping | Int64 | Ping une adresse IP ou DNS et retourne le temps de réponse en seconde (ou –1 si pas de réponse). |
ScanPort | Dictionary<int, bool> | Scanne les ports TCP d’une IP ou DNS et retourne un dictionnaire des ports TCP testés associés à leurs états (ouvert ou fermé) |
WakeUp | Boolean | Envoi un paquet “Wake On Lan” à une adresse MAC |
Quelques exemples
- Envoyer une notification si une ressource réseau ne répond plus
- Surveiller ses ressources réseau (serveurs, services ou sites web) avec une bande de LED WS2801 et un Arduino/ESP
Démarrez la discussion sur le forum Constellation