Scripting con LUA
El Monsta le permite crear lógicas personalizadas de recolección de datos, procesamiento de métricas y reglas complejas de alertas utilizando el lenguaje de programación Lua.
Si las plantillas estándar o las expresiones nativas no son suficientes para su necesidad (como el parseo de cadenas complejas, cálculos matemáticos avanzados o bucles), el motor de scripting en Lua ofrece total flexibilidad para extender la plataforma.
¿Por qué Lua?
Sección titulada «¿Por qué Lua?»Lua es un lenguaje de scripting brasileño, ampliamente utilizado en la industria tecnológica (especialmente en videojuegos y sistemas embebidos) por tres motivos principales:
- Extrema Velocidad: Es uno de los lenguajes de scripting más rápidos del mundo, garantizando que sus scripts se ejecuten en milisegundos sin sobrecargar el servidor de Monsta.
- Ligereza: El intérprete ocupa muy poco espacio en memoria, permitiendo ejecuciones simultáneas a gran escala.
- Sintaxis Simple: Es muy fácil de leer y aprender, incluso para quienes tienen poca experiencia en programación.
Guía rápida de sintaxis de Lua
Sección titulada «Guía rápida de sintaxis de Lua»Para ayudarle a empezar a crear sus primeros scripts en Monsta, aquí están los conceptos fundamentales del lenguaje:
Variables y tipos de datos
Sección titulada «Variables y tipos de datos»En Lua, no necesita definir el tipo de la variable antes (tipado dinámico). Use siempre la palabra clave local para garantizar que la variable exista solo dentro de ese script (evitando conflictos de memoria).
local nome_dispositivo = "Servidor Core" -- Cadenalocal latencia = 45 -- Númerolocal ativo = true -- BooleanoEstructuras condicionales (if / else)
Sección titulada «Estructuras condicionales (if / else)»La sintaxis utiliza las palabras clave then, elseif y cierra el bloque obligatoriamente con un end.
if latencia > 100 then print("Alerta: Latência Alta!")elseif latencia > 50 then print("Aviso: Latência Moderada.")else print("Status: OK.")endTablas (Diccionarios y Arrays)
Sección titulada «Tablas (Diccionarios y Arrays)»Las tablas son la única estructura de datos compleja en Lua. Sirven tanto como listas indexadas como objetos con clave y valor.
-- Ejemplo de Array/Listalocal sensores = {"Ping", "CPU", "Memória"}
-- Ejemplo de Dicionário (Chave/Valor)local dados_coleta = { ip = "192.168.1.50", status = "Online", portas_abertas = 4}¿Cómo interactúa Monsta con el script?
Sección titulada «¿Cómo interactúa Monsta con el script?»Generalmente, Monsta inyecta variables globales o tablas predefinidas dentro de su script (conteniendo los datos recolectados del dispositivo) y espera que su script devuelva un valor específico (como un número, texto o booleano) usando el comando return.
-- Ejemplo de una consulta de SNMPlocal load_linux = snmp.get("1.3.6.1.4.1.2021.10.1.3.2.0") -- Função do Monstareturn load_linuxEl return también puede definir el estado de la métrica. Para devolver un estado, el return debe devolver un diccionario que contenga value (valor a devolver) y status (una string con valores predefinidos).
Los valores aceptados para status son:
| status | Color | Estado de la métrica |
|---|---|---|
| ”MetricOk” | Verde | Normal |
| ”MetricWarning” | Naranja | Advertencia |
| ”MetricCritical” | Rojo | Crítico |
-- Ejemplo de una consulta de SNMP con tratamiento del statuslocal volt = snmp.get("1.3.6.1.2.1.33.1.3.3.1.3.1.0")
if volt > 230 then -- Si la tensión es mayor, entra en estado Advertencia return { value=volt, status="MetricWarning" }elseif volt < 100 then -- Si la tensión es menor, entra en estado Crítico return { value=volt, status="MetricCritical" }else -- Si no, el estado será Normal return { value=volt, status="MetricOk" }endRecursos y manuales completos
Sección titulada «Recursos y manuales completos»Para profundizar en el lenguaje, consulte la documentación oficial de la lengua Lua.
Monsta cuenta con funciones propias que se utilizan en los scripts. Para conocer los módulos internos específicos que Monsta pone a disposición (funciones de red, manipulación de cadenas y conexión), consulte los próximos artículos de esta sección (Módulos de script con Lua).