Áú»¢¶Ä²©

Esta es una traducci¨®n de la p¨¢gina de documentaci¨®n original en espa?ol. Ay¨²danos a mejorarla.

7 Reglas de descubrimiento 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¨¢ limitada, 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 est¨¢mos 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
       
       $first = 1;
       
       print "[\n";
       
       for (`cat /proc/mounts`)
       {
           ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
       
           print "\t,\n" if not $first;
           $first = 0;
       
           print "\t{\n";
           print "\t\t\"{#FSNAME}\":\"$fsname\",\n";
           print "\t\t\"{#FSTYPE}\":\"$fstype\"\n";
           print "\t}\n";
       }
       
       print "]\n";

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 los nombres de la macro LLD utilizados en prototipos, la alternativa es extraer valores de la macro LLD usando JSONPath {#FSNAME} ¡ú $.fsname y {#FSTYPE} ¡ú $.fstype, haciendo as¨ª posible dicho script:

#!/usr/bin/perl
        
       $first = 1;
        
       print "[\n";
        
       for (`cat /proc/mounts`)
       {
           ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
        
           print "\t,\n" if not $first;
           $first = 0;
        
           print "\t{\n";
           print "\t\t\"fsname\":\"$fsname\",\n";
           print "\t\t\"fstype\":\"$fstype\"\n";
           print "\t}\n";
       }
        
       print "]\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.

No es necesario utilizar nombres de macro FSNAME/FSTYPE con nombres personalizados. En las reglas de LLD, es libre de usar los nombres que quiera. En caso de 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 los l¨ªmites de datos para valores de retorno de LLD.