7 Прилагођена LLD правила

Преглед

Такође је могуће креирати потпуно прилагођено LLD правило, откривање било који тип ентитета - на пример, базе података на серверу базе података.

Да бисте то урадили, треба креирати прилагођену ставку која враћа JSON, наводећи пронађени објекти и опционо - нека њихова својства. Износ од макрои по ентитету нису ограничени - док уграђена правила откривања врати један или два макроа (на пример, два за систем датотека откриће), могуће је вратити више.

Пример

Потребан JSON формат најбоље је илустровати примером. Претпоставимо да микористе стари Zabbix 1.8 агент(који не подржава "vfs.fs.discovery"), али још увек морамо да откријемо систем датотека. Ево је једноставна Perl скрипта за Linux која открива монтиране системе датотека и излази JSON, који укључује име и тип система датотека. Један начин да користити га као UserParameter са кључем "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";

Дозвољени симболи за имена LLD макроа су 0-9, A-Z, _, . Мала слова нису подржана у именима.

Пример његовог излаза (реформатиран ради јасноће) је приказан испод. JSON за прилагођене провере откривања морају да прате исти формат.

[
           { "{#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"  }
       ]

У претходном примеру потребно је да кључеви одговарају LLD макроу имена која се користе у прототиповима, алтернатива је издвајање LLD макро вредности користећи JSONPath {#FSNAME}$.fsname y {#FSTYPE}$.fstype, на тај начин омогућавајући такву скрипту:

#!/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";

Пример његовог излаза (реформатиран ради јасноће) је приказан испод. JSON за прилагођене провере откривања морају да прате исти формат.

[
           { "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"  }
       ]

Затим, у пољу "Филтер" правила откривања, могли бисмо да наведемо "{#FSTYPE}" као макро и "rootfs|ext3" као регуларни израз.

Не морате да користите имена макроа FSNAME/FSTYPE са прилагођеним LLD правилима, слободни сте да користите имена која год желите. У случају да JSONPath се користи онда ће LLD ред бити елемент низа који може бити објекат, али може бити и други низ или вредност.

Имајте на уму да је, ако користите кориснички параметар, повратна вредност ограничена на 16 MB. За више детаља погледајте ограничења података за LLD повратне вредности.