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.
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.