Aller au contenu

Recommended Posts

Network Monitor

Version 1.20

 

 

Voici un module virtuel permettant de surveiller plusieurs équipements sur le réseau local (et aussi sur Internet), et d'envoyer des notifications en cas de problème détecté.

 

gallery_133_281_840.png

 

Icônes :

 

Je propose ces 2 icônes, mais d'autres icônes sont disponibles dans les pages du topic :

 

gallery_133_281_9344.pnggallery_133_281_12114.png

 

Configuration :

 

Après import du module virtuel, modifier la section "User Variables" du 1er bouton du module virtuel :

-- User variables
local userID = {5}                 -- Mail
local smartphoneID = {73, 127}     -- Push
local sms = {
	["VD_ID"]     = 98,        -- Virtual Device ID
	["VD_Button"] = "1",       -- Virtual Device Button
	["VG_Name"]   = "SMS"      -- Global Variable Name
}
local icons = {
	["OK"] = 1028,                 -- Normal Icon ID
	["Error"] = 1045               -- Error Icon ID
}
local DEVICES = {
  -- ["Service Name"]                     = { IP Address   ,  Port, Protocol, Data to send, Expected return code, Expected data, Retry, {Notification methods}, VG, VG },
  ["Eco-Devices"]                    = {"192.168.1.1",    80, "http", "/index1.htm",       200, "Eco Devices"            ,     1, {"push", "email", "sms"}, nil, nil},
  ["HP ProLiant Remote Access Card"] = {"192.168.1.2",    80, "http", "/login.html",       200, "Remote Access Card"     ,     1, {        "email"       }, nil, {"Vacances", "1"}},
  ["HP ProLiant Gen8 ILO"]           = {"192.168.1.3",   443, "tcp",  "",                  nil, ""                       ,     1, {        "email"       }, nil, nil},
  ["ESXi"]                           = {"192.168.1.4",    80, "http", "/",                 301, ""                       ,     1, {"push", "email", "sms"}, nil, nil},
  ["Synology DiskStation"]           = {"192.168.1.5",  5000, "http", "/webman/index.cgi", 200, "DiskStation"            ,     1, {"push", "email", "sms"}, nil, nil},
  ["Raspberry PI"]                   = {"192.168.1.6",    80, "http", "/",                 200, "Welcome to nginx"       ,     1, {"push", "email", "sms"}, nil, nil},
  ["Sonos"]                          = {"192.168.1.7",  1400, "http", "/status",           200, "Options"                ,     1, {"push", "email"       }, nil, {"Vacances", "1"}},
  ["SMS Gateway"]                    = {"192.168.1.8",  9090, "http", "/",                 200, "Welcome to SMS Gateway" ,     5, {"push", "email"       }, nil, nil},
  ["VRT-IP"]                         = {"192.168.1.9",    80, "http", "/",                 200, "Volets Roulant de Toit" ,     1, {"push", "email"       }, nil, nil},
  ["IPX800"]                         = {"192.168.1.10",   80, "http", "/user/index2.htm",  200, "IPX800"                 ,     1, {"push", "email"       }, nil, nil},
  ["Foscam"]                         = {"192.168.1.11",   88, "http", "/",                 200, "IPCam Client"           ,     1, {"push", "email", "sms"}, nil, {"Vacances", "0"}},
  ["Hikvision"]                      = {"192.168.1.12",   80, "http", "/doc/page/login.asp", 200, "login"                ,     1, {"push", "email", "sms"}, nil, nil},
  ["HAproxy"]                        = {"192.168.1.13",   80, "http", "/",                 503, ""                       ,     1, {"push", "email", "sms"}, nil, nil},
  ["FHEM"]                           = {"192.168.1.14", 8083, "http", "/fhem",             200, "EnOcean"                ,     1, {"push", "email", "sms"}, nil, nil},
  ["Freebox"]                        = {"192.168.1.15",   80, "http", "/login.php",        200, "Freebox OS"             ,     1, {                 "sms"}, nil, nil},
  ["OpenVPN"]                        = {"192.168.1.16",  443, "tcp",  "",                  nil, ""                       ,     1, {        "email", "sms"}, nil, nil},
  ["Redhat"]                         = {"192.168.1.17",   22, "tcp",  nil,                 nil, "OpenSSH"                ,     1, {        "email"       }, nil, nil},
  ["Google"]                         = {"www.google.fr",  80, "http", "/",                 200, "Recherche Google"       ,     1, {                 "sms"}, nil, nil}}
}
local debug = false

  • userID : liste séparée par des virgules des ID des utilisateurs qui doivent recevoir des notification par email (le mail est celui configuré pour chaque utilisateur dans le panneau de contrôle d'accès)
  • smartphoneID : liste séparée par des virgules des ID des smartphones qui doivent recevoir des notifications push (à  récupérer dans le toolkit de Krikroff ou via l'API : /api/iosDevices)
  • sms : si vous avez une passerelle SMS sous Android avec SMS Gateway (ou équivalent) pilotée par un module virtuel, il faut renseigner ici les informations nécessaires.
  • icons : si vous avez 2 icônes personnalisées, remplacer les valeurs nil par les ID numériques de vos icones (à  trouver dans /api/icons)
  • DEVICES : c'est la partie la plus longue à  paramétrer, pour cela je vous ai laissé un exemple de tout ce que je monitore chez moi (j'ai juste changé les IP). C'est assez parlant, vous pouvez copier/coller en respectant bien la syntaxe. A noter que si l'avant-dernière colonne qui contient le nom facultatif d'une variable globale à  incrémenter, celle-ci est automatiquement créée par le module. La dernière colonne permet d'annuler le monitoring d'un équipement particulier en fonction de la valeur d'une variable globale.
  • debug : true ou false afin d'activer l'affichage étendu dans la fenêtre de débugage du bouton du module virtuel.

 

Dans la Main Loop, le code est de Steven. Il y a une variable nbHeure permettant de paramétrer l'intervalle de vérification, par défaut à  1 heure.

Si vous voulez un rafraichissement inférieur à  40 minutes, il suffit de tout remplacer par un simple fibaro:sleep(), car cette fonction ne plante pas pour les durées inférieures.

 

Network_Monitor_v1.01.vfib

Network_Monitor_v1.10.vfib

Network_Monitor_v1.20.vfib

Modifié par Lazer
  • Upvote 11

Partager ce message


Lien à poster
Partager sur d’autres sites

YEs, sympa, super merci @Lazer

 

Beau boulot, reste plus qu à  tester ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah bien tout ça mais me dit pas que t'as laisser les adresses ip de tes devices ? Tiens au passage, comment t'envoie les SMS (j'ai pas cherché faut dire :))

Partager ce message


Lien à poster
Partager sur d’autres sites

tu ne t'arrêtes jamais....

cela pourra remplacer avantageusement le VD CheckInternet

Partager ce message


Lien à poster
Partager sur d’autres sites

En fait c'est un VD que j'avais commencé il y a longtemps, et que je viens seulement de terminer, afin qu'il soit partageable à  peu près proprement (même si la configuration de la variable DEVICES n'est pas des plus simples).

 

Le but premier n'était pas de monitorer l'accès à  Internet, mais il se trouve que ça fonctionne très bien avec Google par exemple.

Le VD Check Internet a au moins un avantage, c'est de mettre à  jour une variable globale indiquant le status de la connexion Internet, utilisable dans des scénarios.

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo et @lazer, et un "mix" de vos 2 VD ? De cette facon, on a aussi la variable utilisable dans les scenes non ? 

Qu'en pensez-vous ?

Partager ce message


Lien à poster
Partager sur d’autres sites

ça c'est une idée pour Lazer pour la v1.1, créer une variable Network_Monitor avec les valeurs OK, NotOK.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Et pourquoi dans la variable globale on aurait pas un tableau avec le nom des matos en panne ?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai commencé un faire un truc du même genre pour IPPBX qui plante régulièrement... Làc'est plus générique et j'aime bien...

Partager ce message


Lien à poster
Partager sur d’autres sites

bonne idée @benjynet, un tableau, un tableau ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

tout est effectivement possible, mais cela doit rester exploitable / utile.

On reçois déjàun mail avec ce qui ne va pas.

Avoir une variable avec OK/NotOK est facile pour pouvoir utiliser l'info dans d'autres scénarios (GEA, ...)

Mais un tableau avec ce qui ne va pas, et tant qu'àfaire depuis combien de temps, n'est pas exploitable dans GEA.

Avec le mail (si un mail par device mort, au lieu d'un mail global) on peu remplir un tableau xls avec IFTTT (cfr les mails que j'envoie pour les noeuds morts)

Partager ce message


Lien à poster
Partager sur d’autres sites

oui, bien-sûr, mais cela représente" beaucoup" (je pense) de travail pour Lazer pour faire qqch de sympa, et surtout de "facilement" utilisable. Aurais-tu un exemple d'utilisation de cette info ?

Partager ce message


Lien à poster
Partager sur d’autres sites

En partageant ce module, j'étais certain que vous auriez tous des idées plus tordues les unes que les autres :2:

 

Ma vision des choses :

  • ce module ne remplace par le VD Check Internet, car :
    • il n'est pas capable d'agréger plusieurs sites web pour prendre une décision (Google n'est pas suffisant, il peut être indisponible, tandis que la connexion internet fonctionne encore)
    • La durée d'interrogation est fixe pour tous les devices surveillés. Surveiller une connexion ADSL toutes les minutes a du sens, tandis que surveiller un Sonos toutes les minutes est contre-productif (charge réseau....)
  • Au sujet des variables globale :
    • je ne suis pas pour créer un tableau, car comme dis Jojo, c'est impossible à  exploiter dans GEA, ce qui représente quand même la majorité des usages, n'en déplaise à  ses détracteurs.
    • l'idéal est une variable globale par élément à  surveiller, de façon optionnelles. Donc dans le tableau DEVICES, il suffit d'ajouter une colonne qui contient nil ou le nom de la variable globale à  mettre à  jour. Ainsi on peut surveiller les éléments critiques, et ignorer les autres. C'est relativement facile à  implémenter.
  • Idéalement, dans le futur, il faudrait ajouter un intervalle variable pour chaque device à  surveiller, mais cela oblige à  revoir la structure de tout le code, donc ce n'est pas à  l'ordre du jour.

Partager ce message


Lien à poster
Partager sur d’autres sites

bon je me plei à  vos avis, j'utilise aussi GEA ;-)

 

Que diriez-vous tout de même de récuperer dans une ou plusieurs etiquettes le/les devices qui seraient en erreur, ce qui nous permettrait d'un coup d'oeil de voir l'etat ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Je suis surpris.... personne n'a encore réclamé le changement d’icône, pourtant très apprécié :D

Partager ce message


Lien à poster
Partager sur d’autres sites

encore une excellente idée our la v1.1, mais alors tu livres également les icônes avec une croix rouge ou un v vert SVP ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@Lazer, oh oui, le changement d'icone ;-)

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Rien àdire, ça marche au poil, merci beaucoup !

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon, je vais m'attaquer àla mise àjour de ce module virtuel.

Pour les variables globales, ça sera donc une variable globale par équipement réseau surveillé. Un nouveau champs dans le tableau DEVICES permettra de configurer le nom de chaque variable globale.

Quelles valeurs vous plairait ?

Je pense faire très simple :

  • 0 ou 1
  • "OK" ou "Error" (ou NOK, ou KO)
  • ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Perso je préfère les numériques,il suffit d'un tonumber() dans d'autres scripts pour les utiliser.

0 = OK

Puis 1 2 3 4 etc suivant le nombre d'erreurs ?

Sent from my Note4

Partager ce message


Lien à poster
Partager sur d’autres sites

×