8 Pielāgoti LLD noteikumi

Pārskats

Ir iespējams arī izveidot pilnībā pielāgotu LLD kārtulu, atklājot jebkāda veida entītijas — piemēram, datubāzes datubāzu serverī.

Lai to izdarītu, jāizveido pielāgots vienums, kas atgriež JSON virkni, norādot atrastos objektus un pēc izvēles — dažas to īpašības. Makrosu skaits katrai entītijai nav ierobežots — kamēr iebūvētās atklāšanas kārtulas atgriež vienu vai divus makrosus (piemēram, divus datņu sistēmu atklāšanai), ir iespējams atgriezt vairāk.

Piemērs

Nepieciešamo JSON virknes formātu vislabāk ilustrēt ar piemēru. Pieņemsim, ka jūs izmantojat vecu Zabbix 1.8 aģentu (tādu, kas neatbalsta vfs.fs.discovery atslēgu), bet jums joprojām ir nepieciešams atklāt failu sistēmas. Šeit ir vienkāršs Perl skripts Linux videi, kas atklāj piemontētās failu sistēmas un izvada tās JSON formātā, iekļaujot gan failu sistēmas nosaukumu, gan tipu. Viens no veidiem, kā to izmantot, būtu kā UserParameter ar atslēgu "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";

Atļautie simboli LLD makrosu nosaukumiem ir 0-9 , A-Z , _ , . Nosaukumos mazie burti netiek atbalstīti.

Tālāk ir parādīts tā izvades piemērs (pārformatēts skaidrības labad). JSON pielāgotajām atklāšanas pārbaudēm ir jāatbilst tam pašam formātam.

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

Iepriekšējā piemērā ir nepieciešams, lai atslēgas atbilstu prototipos izmantotajiem LLD makrosu nosaukumiem; alternatīva ir izvilkt LLD makrosu vērtības, izmantojot JSONPath {#FSNAME}$.fsname un {#FSTYPE}$.fstype, tādējādi padarot iespējamu šādu skriptu:

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

Tālāk ir parādīts tā izvades piemērs (pārformatēts skaidrības labad).

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

Pēc tam atklāšanas kārtulas Filter laukā jūs varat norādīt "{#FSTYPE}" kā makrosu un "rootfs|ext3" kā regulāro izteiksmi.

Jums nav obligāti jāizmanto tādi makrosu nosaukumi kā FSNAME/FSTYPE ar pielāgotām LLD kārtulām; jūs varat brīvi izmantot jebkurus nosaukumus pēc savas izvēles. Ja tiek izmantots JSONPath, tad LLD rinda būs masīva elements, kas var būt objekts, bet tas var būt arī cits masīvs vai vērtība.

Ņemiet vērā, ka, izmantojot user parameter, atgrieztās vērtības lielums ir ierobežots līdz 16 MB. Plašāku informāciju skatiet sadaļā datu ierobežojumi LLD atgrieztajām vērtībām.