Intégration de LUA dans LoriotPro

LoriotPro V4.00 « Extended Edition » LUA Scripting Extension V1.0

Le Langage LUA

Le langage LUA est de type interprété, c’est-à-dire qu’un programme LUA peut être écrit à partir d’un simple éditeur de texte et exécuté sans passer par l’usage d’un compilateur. Le langage LUA utilise une syntaxe spécifique décrite dans la documentation officielle du langage que l’on peut trouver sur le site http://www.lua.org . L’intérêt de ce langage est son mode « embedded », c’est -à-dire qu’il s’intègre à une application, LoriotPro en l’occurrence, pour étendre ses fonctionnalités. LUA permet dans son mode « embedded » la création de nouveaux mots de langage qui seront spécifiques à l’application. L’intégration de LUA à LoriotPro nous a permis de créer un ensemble de nouvelles fonctions LUA
LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA spécifiques à LoriotPro permettant de résoudre les besoins de collecte et de traitement intelligente.

Intégration de LUA dans LoriotPro

LoriotPro « Extended Edition » prend en charge des extensions de fonctionnalité écrites en LUA. Ces extensions se présentent sous la forme de scripts au format texte, situé dans le répertoire c:\loriotpro-rep\bin\config\script. Ces scripts sont utilisables sous la forme d’objet SNMP virtuel ou bien directement à partir d’une ActiveView, du « Report Center », de « ShortCut » de host, ou des différents menus du logiciel. Un environnement de développement est fourni pour permettre de créer, tester et lancer des scripts de tous types. En fonction du type d’utilisation des scripts il existe plusieurs librairies de fonctions spécifiques. LoriotPro utilise la version 5.02 de LUA en mode dll (lua50.dll) ce qui permet l’utilisation de librairies externes. La suite du document s’applique à montrer comment utiliser ces fonctions et librairies.

SNMP Objet virtuel

Pour simplifier l’usage des scripts dans l’ensemble des fonctions existantes de LoriotPro il est possible d’associer une script LUA avec un objet SNMP. L’association entre un script LUA et un nom d’objet SNMP se réalise à l’aide d’un fichier de MIB standard comportant quelques balises propriétaires. Ce mécanisme permet de fournir de façon simple à l’utilisateur un ensemble de fonctions utilisables comme des objets SNMP standard.
De base la MIB LUTEUS-SCRIPT-STANDARD-MIB incluse dans le package « Extended » de LoriotPro (fichier bin/mibs/1-lp_script-standard.mib) contient 40 objets virtuels à utiliser. La MIB LUTEUS-SCRIPT-MIB incluse dans le package « Extended » de LoriotPro (fichier bin/mibs/1-lp_script01.mib) contient des exemples d’objets virtuels créés à partir de scripts LUA.
Le principe d’utilisation de fichier de MIB pour créer des objets virtuels SNMP est très simple. Le fichier est créé en utilisant la syntaxe ASN1 standard d’un fichier de MIB. Pour que l’objet soit considéré par LoriotPro comme un script LUA il faut utiliser un « ACCESS » de type lp_access_script.

Passage de paramètres

Lorsque LoriotPro appel un objet snmp virtuel il lui passe plusieurs paramètres que le script va pouvoir utiliser pour s’initialiser. En retour le script fournit deux valeurs que LoriotPro va utiliser pour construire la réponse.
Exemple:
Le fichier your-script.mib contient la définition de l’objet lp_your_diskused qui va nous permettre de calculer le pourcentage d’utilisation de notre disque C :.
YOUR-SCRIPT-MIB DEFINITIONS ::= BEGIN
IMPORTS FROM LUTEUS-TC-MIB;
luteus
scripts FROM LUTEUS-TC-MIB;
your_script OBJECT IDENTIFIER ::= { scripts 1000 }
— Vous devez commencer à 1000 (1 to 999 is reserved to Luteus)
— ou bien attacher vos objets à votre propre OID
— si vous désirez diffuser vos MIB en utilisant notre OID
— enterprises.luteus
— consulter nous pour obtenir un range de valeur
-– le nom des objets est limité à une vingtaine de caractères
lp_your_diskused OBJECT-TYPE
SYNTAX Integer32
ACCESS lp_access_script
STATUS current
DESCRIPTION
« Test un calcul sur LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA lp_value = (lp.Get(lp_host,’hrstorageused.index’) / lp.Get(lp_host,’hrstoragesize.index’))*100;”
 »
— le script peut être “embedded” directement dans le fichier
— il est placé entre les balises <LP_SCRIPT>
— il est aussi possible de ne pas utiliser ces balises
— à la compilation un fichier lp_your_diskused.lua sera généré dans
— le répertoire bin/config/script
— il est possible de copier directement le fichier lp_your_diskused.lua
— dans le répertoire bin/config/script.
— une fois compilé il est possible de modifier le fichier
— lp_your_diskused.lua se trouvant dans bin/config/script.
— attention si vous recompiler cette MIB vos modifications seront perdu.
— lp_host et lp_index est passé au script par LoriotPro
— lp_iod n’est pas utilisé par ce script
— lp_value est retourné par le script car l’objet est de type Integer32
<LP_SCRIPT>
lp_buffer = »BAD »
get1=(« hrstorageused »..lp_index); –concatenation get2=(« hrstoragesize »..lp_index); –concatenation
lp_value = (lp.Get(lp_host,get1)/(lp.Get(lp_host,get2)+0.001))*100; lp_buffer = »OK »
<LP_SCRIPT>
::= { your_script 1 }
END
On peut tester le script au préalable avec l’éditeur de script. Reportez vous au chapitre concernant l’éditeur pour plus d’information sur son utilisation.
L’objet peut maintenant être utilisé comme un objet SNMP standard à travers tous les modules de LoriotPro.
Attention cet objet est indexé et il faudra donc indiquer manuellement l’index du disque que nous désirons tester.
Dans ce module qui affiche le nom de l’objet SNMP reçu, nous avons lp_your_ diskused.2 qui n’est en réalité qu’un artefact par contre nous avons bien les 94,02 % d’utilisation de notre disque C :.
Nous pouvons l’utiliser dans un plugin de graph linéaire.
Le principe des objets snmp virtuels est simple, une requête avec l’OID du ou des objets virtuels est envoyée vers le host. Au retour du paquet (mode synchrone uniquement), le noyaux de LoriotPro regarde les objets de type lp_access_script (logiquement à NUL) retournés par l’agent snmp et les remplace par le résultat des scripts. Les scripts peuvent eux aussi envoyer des requêtes vers l’agent snmp ou un ensemble d’agents snmp.
Les objets snmp virtuel sont bien sûr utilisables dans des ActiveView.

Pré requis 
Introduction 
Besoin de traitement de l’information 
Phase 1 : recherche documentaire
Phase 2 : trouver l’index du disque C :
Phase 3 : Collecter les valeurs
Phase 4 : faire le calcul
Phase 5 : afficher le résultat
Conclusion
Le Langage LUA
Intégration de LUA dans LoriotPro 
SNMP Objet virtuel
Passage de paramètres
Objet snmp virtuel par défaut
Exception d’utilisation des objets SNMP virtuel
Utilisation des scripts LUA dans les ActiveView 
Introduction
Type de scripts utilisable dans les ActiveView
Usage direct d’objets SNMP virtuels
Calculette scientifique
Lancement scheduler de script LUA
Script utilisé avec la fonction DoubleClick
Script associé au menu contextuel d’un objet graphique
Utilisation directe de script dans une ActiveView
Utilisation de Script d’initialisation pour les ActiveView Modal
Utilisation direct de scrip
A partir des menus du logiciel
A partir d’un Shortcut de host
ShortCut associant une ActiveView Modal et un Script LUA
A partir du Report Center
A partir du module de management des hosts (Bulk Configuration)
Plugin éditeur de script 
Introduction
Zone d’édition du script
Zone d’édition des variables
Zone des messages systèmes
Librairies LUA de LoriotPro 
Introduction
Fichier de définition de variables système
Exemple de code sous forme de fonction LUA
Gestion de périodes
Analyse de ressource SNMP
Librairies externe LUA
Exemple LUA_ZIP
Exemple LUA_ODBC
Exemple LUA_COM
Exemple LUA_SOCKET
Projet Lua_Wizard_LIB
Matrice de compatibilité des libraries LUA
ANNEXES

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *