Áú»¢¶Ä²©

6 Reglas LLD personalizadas

Descripci¨®n general

Tambi¨¦n es posible crear una regla LLD completamente personalizada, descubriendo cualquier tipo de entidades, por ejemplo, bases de datos en un servidor de bases de datos.

Para hacerlo, se debe crear una m¨¦trica personalizada que devuelva JSON, especificando objetos encontrados y, opcionalmente, algunas propiedades de los mismos. La cantidad de macros por entidad no est¨¢n limitadas, mientras que las reglas de descubrimiento integradas devuelven una o dos macros (por ejemplo, dos para el descubrimiento del sistema de archivos ), es posible devolver m¨¢s.

Ejemplo

El formato JSON requerido se ilustra mejor con un ejemplo. Supongamos que nosotros est¨¢n ejecutando un antiguo agente Áú»¢¶Ä²© 1.8 (uno que no admite "vfs.fs.discovery"), pero a¨²n necesitamos descubrir sistemas de archivos. Aqu¨ª est¨¢ un script Perl simple para Linux que descubre sistemas de archivos montados y genera JSON, que incluye tanto el nombre como el tipo del sistema de archivos. Una manera de usarlo ser¨ªa como un par¨¢metro de usuario con la clave "vfs.fs.discovery_perl":

#!/usr/bin/perl
       
       $primero = 1;
       
       imprimir "[\n";
       
       para (`cat /proc/mounts`)
       {
           ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
       
           imprima "\t,\n" si no es $primero;
           $primero = 0;
       
           imprimir "\t{\n";
           print "\t\t\"{#FSNAME}\":\"$fsname\",\n";
           print "\t\t\"{#FSTYPE}\":\"$fstype\"\n";
           imprimir "\t}\n";
       }
       
       imprimir "]\n";

::: nota importante Los s¨ªmbolos permitidos para los nombres de macros LLD son 0-9, A-Z, _, . No se admiten letras min¨²sculas en los nombres. :::

A continuaci¨®n se muestra un ejemplo de su resultado (reformateado para mayor claridad). JSON para comprobaciones de descubrimiento personalizadas debe seguir el mismo formato.

[
           { "{#FSNAME}":"/", "{#FSTYPE}":"rootfs" },
           { "{#FSNAME}":"/sys", "{#FSTYPE}":"sysfs" },
           { "{#FSNAME}":"/proc", "{#FSTYPE}":"proc" },
           { "{#FSNAME}":"/dev", "{#FSTYPE}":"devtmpfs" },
           { "{#FSNAME}":"/dev/pts", "{#FSTYPE}":"devpts" },
           { "{#FSNAME}":"/lib/init/rw", "{#FSTYPE}":"tmpfs" },
           { "{#FSNAME}":"/dev/shm", "{#FSTYPE}":"tmpfs" },
           { "{#FSNAME}":"/home", "{#FSTYPE}":"ext3" },
           { "{#FSNAME}":"/tmp", "{#FSTYPE}":"ext3" },
           { "{#FSNAME}":"/usr", "{#FSTYPE}":"ext3" },
           { "{#FSNAME}":"/var", "{#FSTYPE}":"ext3" },
           { "{#FSNAME}":"/sys/fs/fuse/connections", "{#FSTYPE}":"fusectl" }
       ]

En el ejemplo anterior se requiere que las claves coincidan con la macro LLD nombres utilizados en prototipos, la alternativa es extraer valores macro LLD usando JSONPath {#FSNAME} ¡ú $.fsname y {#FSTYPE} ¡ú $.fstype, haciendo as¨ª posible dicho script:

#!/usr/bin/perl
        
       $primero = 1;
        
       imprimir "[\n";
        
       para (`cat /proc/mounts`)
       {
           ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
        
           imprima "\t,\n" si no es $primero;
           $primero = 0;
        
           imprimir "\t{\n";
           print "\t\t\"fsname\":\"$fsname\",\n";
           print "\t\t\"fstype\":\"$fstype\"\n";
           imprimir "\t}\n";
       }
        
       imprimir "]\n";

A continuaci¨®n se muestra un ejemplo de su resultado (reformateado para mayor claridad). JSON para comprobaciones de descubrimiento personalizadas debe seguir el mismo formato.

[
           { "fsname": "/", "fstype": "rootfs" },
           { "fsname": "/sys", "fstype": "sysfs" },
           { "fsname": "/proc", "fstype": "proc" },
           { "fsname": "/dev", "fstype": "devtmpfs" },
           { "fsname":"/dev/pts", "fstype":"devpts" },
           { "fsname":"/lib/init/rw", "fstype":"tmpfs" },
           { "fsname": "/dev/shm", "fstype": "tmpfs" },
           { "fsname":"/home", "fstype":"ext3" },
           { "fsname": "/tmp", "fstype": "ext3" },
           { "fsname": "/usr", "fstype": "ext3" },
           { "fsname": "/var", "fstype": "ext3" },
           { "fsname":"/sys/fs/fuse/connections", "fstype":"fusectl" }
       ]

Luego, en el campo "Filtro" de la regla de descubrimiento, podr¨ªamos especificar "{#FSTYPE}" como macro y "rootfs|ext3" como expresi¨®n regular.

::: nota cl¨¢sica No es necesario utilizar nombres de macro FSNAME/FSTYPE con nombres personalizados. Reglas de LLD, eres libre de usar los nombres que quieras. En caso JSONPath se usa, entonces la fila LLD ser¨¢ un elemento de matriz que puede ser un objeto, pero tambi¨¦n puede ser otra matriz o un valor. :::

Tenga en cuenta que, si utiliza un par¨¢metro de usuario, el valor de retorno est¨¢ limitado a 16 MB. Para obtener m¨¢s detalles, consulte l¨ªmites de datos para valores de retorno de LLD.