7 Pielāgotie LLD noteikumi

Pārskats

Ir arī iespējams izveidot pilnībā pielāgotu LLD noteikumu, kas atklāj jebkura veida entītijas - piemēram, datubāzes datubāzes 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. Makro skaits uz vienu entītiju nav ierobežots - kamēr iebūvētie atklāšanas noteikumi atgriež vai nu vienu, vai divus makro (piemēram, divus failu sistēmas atklāšanai), ir iespējams atgriezt vairāk.

Piemērs

Nepieciešamais JSON virknes formāts vislabāk ir ilustrēts ar piemēru. Pieņemsim, ka mēs izmantojam vecu Zabbix 1.8 aģentu (tādu, kas neatbalsta vfs.fs.discovery), bet mums joprojām ir jāatklāj failu sistēmas. Šeit ir vienkāršs Perl skripts Linux sistēmai, kas atklāj piemontētās failu sistēmas un izvada 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 makro nosaukumos ir 0-9 , A-Z , _ , .. Nosaukumos nav atbalstīti mazie burti.

Tālāk ir parādīts tā izvades piemērs (pārformatēts skaidrības labad). JSON pielāgotā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 LLD makro nosaukumiem, kas izmantoti prototipos; alternatīva ir iegūt LLD makro 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). JSON pielāgotā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"  }
]

Tad atklāšanas noteikuma laukā "Filter" mēs varētu norādīt {#FSTYPE} kā makro un rootfs|ext3 kā regulāro izteiksmi.

Pielāgotajos LLD noteikumos jums nav obligāti jāizmanto makro nosaukumi FSNAME/FSTYPE; varat izmantot jebkurus nosaukumus, kas jums patīk. 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 lietotāja parametru, atgrieztās vērtības apjoms ir ierobežots līdz 16 MB. Plašāku informāciju skatiet sadaļā datu limiti LLD atgrieztajām vērtībām.