Low-level discovery provides a way to automatically create items, triggers, and graphs for different entities on a computer. For instance, Zabbix can automatically start monitoring file systems or network interfaces on your machine, without the need to create items for each file system or network interface manually. Additionally, it is possible to configure Zabbix to remove unneeded entities automatically based on the actual results of periodically performed discovery.
A user can define their own types of discovery, provided they follow a particular JSON protocol.
The general architecture of the discovery process is as follows.
First, a user creates a discovery rule in Data collection → Templates, in the Discovery column. A discovery rule consists of (1) an item that discovers the necessary entities (for instance, file systems or network interfaces) and (2) prototypes of items, triggers, and graphs that should be created based on the value of that item.
An item that discovers the necessary entities is like a regular item seen elsewhere: the server asks a Zabbix agent (or whatever the type of the item is set to) for a value of that item, the agent responds with a textual value. The difference is that the value the agent responds with should contain a list of discovered entities in a JSON format. While the details of this format are only important for implementers of custom discovery checks, it is necessary to know that the returned value contains a list of macro → value pairs. For instance, item "net.if.discovery" might return two pairs: "{#IFNAME}" → "lo" and "{#IFNAME}" → "eth0".
These macros are used in names, keys and other prototype fields where they are then substituted with the received values for creating real items, triggers, graphs or even hosts for each discovered entity. See the full list of options for using LLD macros.
When the server receives a value for a discovery item, it looks at the macro → value pairs and for each pair generates real items, triggers, and graphs, based on their prototypes. In the example with "net.if.discovery" above, the server would generate one set of items, triggers, and graphs for the loopback interface "lo", and another set for interface "eth0".
Note that since Zabbix 4.2, the format of the JSON returned by low-level discovery rules has been changed. It is no longer expected that the JSON will contain the "data" object. Low-level discovery will now accept a normal JSON containing an array, in order to support new features such as the item value preprocessing and custom paths to low-level discovery macro values in a JSON document.
Built-in discovery keys have been updated to return an array of LLD rows at the root of JSON document. Zabbix will automatically extract a macro and value if an array field uses the {#MACRO} syntax as a key. Any new native discovery checks will use the new syntax without the "data" elements. When processing a low-level discovery value first the root is located (array at $.
or $.data
).
While the "data" element has been removed from all native items related to discovery, for backward compatibility Zabbix will still accept the JSON notation with a "data" element, though its use is discouraged. If the JSON contains an object with only one "data" array element, then it will automatically extract the content of the element using JSONPath $.data
. Low-level discovery now accepts optional user-defined LLD macros with a custom path specified in JSONPath syntax.
As a result of the changes above, newer agents no longer will be able to work with an older Zabbix server.
See also: Discovered entities
We zullen low-level discovery illustreren aan de hand van een voorbeeld van bestandssysteemontdekking.
Om de ontdekking te configureren, volg deze stappen:
The discovery rule form contains five tabs, representing, from left to right, the data flow during discovery:
The Discovery rule tab contains the item key to use for discovery (as well as some general discovery rule attributes):
All mandatory input fields are marked with a red asterisk.
Parameter | Description |
---|---|
Name | Name of discovery rule. |
Type | The type of check to perform discovery. In this example we are using a Zabbix agent item type. The discovery rule can also be a dependent item, depending on a regular item. It cannot depend on another discovery rule. For a dependent item, select the respective type (Dependent item) and specify the master item in the 'Master item' field. The master item must exist. |
Key | Enter the discovery item key (up to 2048 characters). For example, you may use the built-in "vfs.fs.discovery" item key to return a JSON with the list of file systems present on the computer, their types and mount options. Note that another option for filesystem discovery is using discovery results by the "vfs.fs.get" agent key, supported since Zabbix 4.4.5 (see example). |
Update interval | This field specifies how often Zabbix performs discovery. In the beginning, when you are just setting up file system discovery, you might wish to set it to a small interval, but once you know it works you can set it to 30 minutes or more, because file systems usually do not change very often. Time suffixes are supported, e.g. 30s, 1m, 2h, 1d, since Zabbix 3.4.0. User macros are supported, since Zabbix 3.4.0. Note: The update interval can only be set to '0' if custom intervals exist with a non-zero value. If set to '0', and a custom interval (flexible or scheduled) exists with a non-zero value, the item will be polled during the custom interval duration. New discovery rules will be checked within 60 seconds of their creation, unless they have Scheduling or Flexible update interval and the Update interval is set to 0. Note that for an existing discovery rule the discovery can be performed immediately by pushing the Execute now button. |
Custom intervals | You can create custom rules for checking the item: Flexible - create an exception to the Update interval (interval with different frequency) Scheduling - create a custom polling schedule. For detailed information see Custom intervals. Scheduling is supported since Zabbix 3.0.0. |
Keep lost resources period | This field allows you to specify the duration for how long the discovered entity will be retained (won't be deleted) once its discovery status becomes "Not discovered anymore" (between 1 hour to 25 years; or "0"). Time suffixes are supported, e.g. 2h, 1d, since Zabbix 3.4.0. User macros are supported, since Zabbix 3.4.0. Note: If set to "0", entities will be deleted immediately. Using "0" is not recommended, since just wrongly editing the filter may end up in the entity being deleted with all the historical data. |
Description | Enter a description. |
Enabled | If checked, the rule will be processed. |
Discovery rule history is not preserved.
Het tabblad Voorbewerking maakt het mogelijk om transformatieregels te definiëren die worden toegepast op het resultaat van ontdekking. In deze stap zijn één of meerdere transformaties mogelijk. Transformaties worden uitgevoerd in de volgorde waarin ze zijn gedefinieerd. Alle voorbewerking wordt uitgevoerd door de Zabbix-server.
Zie ook:
Type | ||
---|---|---|
Transformatie | Omschrijving | |
Tekst | ||
Reguliere expressie | Komt overeen met de ontvangen waarde met de reguliere expressie <pattern> en vervangt de waarde door de geëxtraheerde <output>. De reguliere expressie ondersteunt het extraheren van maximaal 10 vastgelegde groepen met de \N-sequentie. Parameters: pattern - reguliere expressie output - uitvoeropmaak sjabloon. Een \N (waar N=1…9) ontsnappingssequentie wordt vervangen door de N-de overeenkomende groep. Een \0 ontsnappingssequentie wordt vervangen door de overeenkomende tekst. Als u het selectievakje Aangepast bij mislukken markeert, is het mogelijk om aangepaste foutafhandelingsopties op te geven: de waarde negeren, een gespecificeerde waarde instellen of een gespecificeerd foutbericht instellen. |
|
Vervangen | Zoek de zoekreeks en vervang deze door een andere (of niets). Alle voorkomens van de zoekreeks worden vervangen. Parameters: zoekreeks - de te vinden en te vervangen reeks, hoofdlettergevoelig (vereist) vervanging - de reeks waarmee de zoekreeks moet worden vervangen. De vervangende reeks kan ook leeg zijn, waardoor de zoekreeks effectief wordt verwijderd wanneer deze wordt gevonden. Het is mogelijk om ontsnappingsreeksen te gebruiken om te zoeken naar of te vervangen door regeleinden, wagenretours, tabbladen en spaties "\n \r \t \s"; een backslash kan worden ontsnapt als "\\" en ontsnappingsreeksen kunnen worden ontsnapt als "\\n". Het ontsnappen van regeleinden, wagenretours en tabbladen gebeurt automatisch tijdens lage-niveaumontdekking. Ondersteund sinds 5.0.0. |
|
Gestructureerde gegevens | ||
JSONPath | Haal waarde of fragment uit JSON-gegevens met behulp van JSONPath-functionaliteit. Als u het selectievakje Aangepast bij mislukken markeert, wordt het item niet onbeschikbaar als de voorbewerkingsstap mislukt, en het is mogelijk om aangepaste foutafhandelingsopties op te geven: de waarde negeren, een gespecificeerde waarde instellen of een gespecificeerd foutbericht instellen. |
|
XML XPath | Haal waarde of fragment uit XML-gegevens met behulp van de XPath-functionaliteit. Voor deze optie om te werken, moet de Zabbix-server gecompileerd zijn met libxml-ondersteuning. Voorbeelden: number(/document/item/value) haalt 10 op uit <document><item><value>10</value></item></document> number(/document/item/@attribute) haalt 10 op uit <document><item attribute="10"></item></document> /document/item haalt <item><value>10</value></item> op uit <document><item><value>10</value></item></document> Let op dat namespaces niet worden ondersteund. Ondersteund sinds 4.4.0. Als u het selectievakje Aangepast bij mislukken markeert, is het mogelijk om aangepaste foutafhandelingsopties op te geven: de waarde negeren, een gespecificeerde waarde instellen of een gespecificeerd foutbericht instellen. |
|
CSV naar JSON | Converteer gegevens van een CSV-bestand naar JSON-indeling. Zie voor meer informatie: CSV naar JSON voorbewerking. Ondersteund sinds 4.4.0. |
|
XML naar JSON | Converteer gegevens in XML-indeling naar JSON. Zie voor meer informatie: Serialisatieregels. Als u het selectievakje Aangepast bij mislukken markeert, is het mogelijk om aangepaste foutafhandelingsopties op te geven: de waarde negeren, een gespecificeerde waarde instellen of een gespecificeerd foutbericht instellen. |
|
SNMP | ||
SNMP-wandelwaarde | Haal waarde op aan de hand van de gespecificeerde OID/MIB-naam en pas opmaakopties toe: Onveranderd - retourneer Hex-STRING als niet-ontsnapte hexadecimale tekenreeks; UTF-8 uit Hex-STRING - converteer Hex-STRING naar UTF-8-tekenreeks; MAC uit Hex-STRING - converteer Hex-STRING naar MAC-adres tekenreeks (waarbij ' ' wordt vervangen door ':' );Integer uit BITS - converteer de eerste 8 bytes van een bitsnaar uitgedrukt als een reeks hexadecimale tekens (bijv. "1A 2B 3C 4D") naar een 64-bits niet-ondertekend geheel getal. Bij bitsreeksen langer dan 8 bytes worden opeenvolgende bytes genegeerd. Als u het selectievakje *Aangepast bij mislukken |
Error:(.*?)\.
$.errors
. Als een JSON zoals {"errors":"e1"}
wordt ontvangen, wordt de volgende voorbewerkingsstap niet uitgevoerd.1m
. Als dezelfde tekst twee keer in deze regel wordt doorgegeven binnen 60 seconden, wordt deze verwijderd.Let op dat als de ontdekkingsregel op de host is toegepast via een template, de inhoud van dit tabblad alleen-lezen is.
Het tabblad LLD macros maakt het mogelijk om aangepaste low-level discovery macros te specificeren.
Aangepaste macros zijn nuttig in gevallen waarin de geretourneerde JSON de benodigde macros nog niet heeft gedefinieerd. Bijvoorbeeld:
vfs.fs.discovery
voor het ontdekken van bestandssystemen retourneert een JSON met enkele vooraf gedefinieerde LLD-macros zoals {#FSNAME}, {#FSTYPE}. Deze macros kunnen direct worden gebruikt in item- en triggervoorbeelden (zie volgende secties van de pagina); het definiëren van aangepaste macros is niet nodig;vfs.fs.get
retourneert ook een JSON met bestandssysteemgegevens, maar zonder enige vooraf gedefinieerde LLD-macros. In dit geval kunt u de macros zelf definiëren en ze toewijzen aan de waarden in de JSON met behulp van JSONPath:De geëxtraheerde waarden kunnen worden gebruikt in ontdekte items, triggers, enz. Let op dat waarden worden geëxtraheerd uit het resultaat van de ontdekking en eventuele voorbewerkingen tot nu toe.
Parameter | Omschrijving |
---|---|
LLD macro | Naam van de low-level discovery macro, met behulp van de volgende syntaxis: {#MACRO}. |
JSONPath | Pad dat wordt gebruikt om de LLD macrowaarde te extraheren uit een LLD-rij, met behulp van JSONPath-syntaxis. Bijvoorbeeld, $.foo zal "bar" en "baz" extraheren uit deze JSON: [{"foo":"bar"}, {"foo":"baz"}] De waarden die zijn geëxtraheerd uit de geretourneerde JSON worden gebruikt om de LLD-macros in item-, trigger- enzovoort-voorbeeldvelden te vervangen. JSONPath kan worden gespecificeerd met behulp van de punt-notatie of de haakjes-notatie. De haakjes-notatie moet worden gebruikt in geval van speciale tekens en Unicode, zoals $['unicode + speciale tekens #1']['unicode + speciale tekens #2'] . |
A filter can be used to generate real items, triggers, and graphs only for entities that match the criteria. The Filters tab contains discovery rule filter definitions allowing to filter discovery values:
Parameter | Description |
---|---|
Type of calculation | The following options for calculating filters are available: And - all filters must be passed; Or - enough if one filter is passed; And/Or - uses And with different macro names and Or with the same macro name; Custom expression - offers the possibility to define a custom calculation of filters. The formula must include all filters in the list. Limited to 255 symbols. |
Filters | The following filter condition operators are available: matches, does not match, exists, does not exist. Matches and does not match operators expect a Perl Compatible Regular Expression (PCRE). For instance, if you are only interested in C:, D:, and E: file systems, you could put {#FSNAME} into "Macro" and "^C|^D|^E" regular expression into "Regular expression" text fields. Filtering is also possible by file system types using {#FSTYPE} macro (e.g. "^ext|^reiserfs") and by drive types (supported only by Windows agent) using {#FSDRIVETYPE} macro (e.g., "fixed"). You can enter a regular expression or reference a global regular expression in "Regular expression" field. In order to test a regular expression you can use "grep -E", for example: for f in ext2 nfs reiserfs smbfs; do echo $f | grep -E '^ext|^reiserfs' || echo "SKIP: $f"; done Exists and does not exist operators allow to filter entities based on the presence or absence of the specified LLD macro in the response. Note that if a macro from the filter is missing in the response, the found entity will be ignored, unless a "does not exist" condition is specified for this macro. A warning will be displayed, if the absence of a macro affects the expression result. For example, if {#B} is missing in: {#A} matches 1 and {#B} matches 2 - will give a warning {#A} matches 1 or {#B} matches 2 - no warning |
A mistake or a typo in the regular expression used in the LLD rule (for example, an incorrect "File systems for discovery" regular expression) may cause deletion of thousands of configuration elements, historical values, and events for many hosts.
Zabbix database in MySQL must be created as case-sensitive if file system names that differ only by case are to be discovered correctly.
Het tabblad Override maakt het mogelijk om regels in te stellen om de lijst van item-, trigger-, grafiek- en host-prototypes of hun eigenschappen aan te passen voor ontdekte objecten die aan bepaalde criteria voldoen.
Overlays (indien aanwezig) worden weergegeven in een herordenable sleep-en-plaats lijst en worden uitgevoerd in de volgorde waarin ze zijn gedefinieerd. Om de details van een nieuwe overlay te configureren, klikt u op in het blok Overrides. Om een bestaande overlay te bewerken, klikt u op de naam van de overlay. Een pop-up venster wordt geopend waarmee u de details van de overlay-regel kunt bewerken.
Alle verplichte parameters zijn gemarkeerd met rode asterisken.
Parameter | Omschrijving |
---|---|
Naam | Een unieke (per LLD-regel) overlay-naam. |
Als filter overeenkomt | Bepaalt of volgende overlays moeten worden verwerkt wanneer de filtervoorwaarden zijn voldaan: Doorgaan met overlays - volgende overlays worden verwerkt. Stoppen met verwerken - operaties van voorafgaande (indien aanwezig) en deze overlay worden uitgevoerd, volgende overlays worden genegeerd voor overeenkomende LLD-rijen. |
Filters | Bepaalt op welke ontdekte entiteiten de overlay moet worden toegepast. Overlay-filters worden verwerkt na ontdekkingsregel filters en hebben dezelfde functionaliteit. |
Operaties | Overlay-operaties worden weergegeven met deze details: Voorwaarde - een objecttype (item prototype/trigger prototype/grafiek prototype/host prototype) en een voorwaarde die moet worden voldaan (komt overeen/komt niet overeen/bevat/komt niet voor/matches/komt niet overeen) Actie - koppelingen voor bewerken en verwijderen van een operatie worden weergegeven. |
Configuratie van een operatie
Om de details van een nieuwe operatie te configureren, klikt u op in het blok Operaties. Om een bestaande operatie te bewerken, klikt u op naast de operatie. Er wordt een pop-up venster geopend waarin u de details van de operatie kunt bewerken.
Parameter | Omschrijving | ||
---|---|---|---|
Object | Vier soorten objecten zijn beschikbaar: Item prototype Trigger prototype Grafiek prototype Host prototype |
||
Voorwaarde | Hiermee kunnen entiteiten worden gefilterd waarop de operatie moet worden toegepast. | ||
Operator | Ondersteunde operatoren: komt overeen - toepassen op dit prototype komt niet overeen - toepassen op alle prototypes, behalve deze bevat - toepassen, als de naam van het prototype dit tekenreeks bevat bevat niet - toepassen, als de naam van het prototype deze tekenreeks niet bevat matches - toepassen, als de naam van het prototype overeenkomt met reguliere expressie komt niet overeen - toepassen, als de naam van het prototype niet overeenkomt met reguliere expressie |
||
Patroon | Een reguliere expressie of een tekenreeks om naar te zoeken. | ||
Object: Item prototype | |||
Aanmaken ingeschakeld | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee de oorspronkelijke instellingen voor het item prototype kunnen worden overschreven: Ja - het item wordt toegevoegd in een ingeschakelde toestand. Nee - het item wordt toegevoegd aan een ontdekte entiteit, maar in een uitgeschakelde toestand. |
||
Ontdekken | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee de oorspronkelijke instellingen voor het item prototype kunnen worden overschreven: Ja - het item wordt toegevoegd. Nee - het item wordt niet toegevoegd. |
||
Interval bijwerken | Wanneer het selectievakje is aangevinkt, verschijnen er twee opties, waarmee een ander interval voor het item kan worden ingesteld: Vertraging - Item bijwerkinterval. Gebruiker macro's en tijdsuffixen (bijv. 30s, 1m, 2h, 1d) worden ondersteund. Moet worden ingesteld op 0 als Aangepast interval wordt gebruikt. Aangepast interval - klik op om flexibele/planning intervallen op te geven. Voor meer gedetailleerde informatie, zie Aangepaste intervallen. |
||
Periode geschiedenisopslag | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee een andere geschiedenisopslagperiode voor het item kan worden ingesteld: Bewaar geen geschiedenis - als geselecteerd, wordt de geschiedenis niet opgeslagen. Opslagperiode - als geselecteerd, verschijnt aan de rechterkant een invoerveld voor het specificeren van de opslagperiode. Gebruiker macro's en LLD-macro's worden ondersteund. |
||
Periode trendopslag | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee een andere trendopslagperiode voor het item kan worden ingesteld: Bewaar geen trends - als geselecteerd, worden de trends niet opgeslagen. Opslagperiode - als geselecteerd, verschijnt aan de rechterkant een invoerveld voor het specificeren van de opslagperiode. Gebruiker macro's en LLD-macro's worden ondersteund. |
||
Tags | Wanneer het selectievakje is aangevinkt, verschijnt een nieuw blok, waarmee tag-waardeparen kunnen worden gespecificeerd. Deze tags worden toegevoegd aan de tags die zijn gespecificeerd in het item prototype, zelfs als de tag-namen overeenkomen. |
||
Object: Trigger prototype | |||
Aanmaken ingeschakeld | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee de oorspronkelijke instellingen voor het trigger prototype kunnen worden overschreven: Ja - de trigger wordt toegevoegd in een ingeschakelde toestand. Nee - de trigger wordt toegevoegd aan een ontdekte entiteit, maar in een uitgeschakelde toestand. |
||
Ontdekken | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee de oorspronkelijke instellingen voor het trigger prototype kunnen worden overschreven: Ja - de trigger wordt toegevoegd. Nee - de trigger wordt niet toegevoegd. |
||
Ernst | Wanneer het selectievakje is aangevinkt, verschijnen er knoppen voor trigger-ernst, waarmee de trigger-ernst kan worden aangepast. | ||
Tags | Wanneer het selectievakje is aangevinkt, verschijnt een nieuw blok, waarmee tag-waardeparen kunnen worden gespecificeerd. Deze tags worden toegevoegd aan de tags die zijn gespecificeerd in het trigger prototype, zelfs als de tag-namen overeenkomen. |
||
Object: Grafiek prototype | |||
Ontdekken | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee de oorspronkelijke instellingen voor het grafiek prototype kunnen worden overschreven: Ja - de grafiek wordt toegevoegd. Nee - de grafiek wordt niet toegevoegd. |
||
Object: Host prototype | |||
Aanmaken ingeschakeld | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee de oorspronkelijke instellingen voor het host prototype kunnen worden overschreven: Ja - de host wordt aangemaakt in een ingeschakelde toestand. Nee - de host wordt aangemaakt in een uitgeschakelde toestand. |
||
Ontdekken | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee de oorspronkelijke instellingen voor het host prototype kunnen worden overschreven: Ja - de host wordt ontdekt. Nee - de host wordt niet ontdekt. |
||
Sjabloon koppelingen | Wanneer het selectievakje is aangevinkt, verschijnt er een invoerveld om sjablonen op te geven. Begin met het typen van de naam van de sjabloon of klik op Selecteer naast het veld en selecteer sjablonen uit de lijst in een pop-up venster. Alle aan een host prototype gekoppelde sjablonen worden vervangen door sjablonen van deze overlay. |
||
Tags | Wanneer het selectievakje is aangevinkt, verschijnt een nieuw blok, waarmee tag-waardeparen kunnen worden gespecificeerd. Deze tags worden toegevoegd aan de tags die zijn gespecificeerd in het host prototype, zelfs als de tag-namen overeenkomen. |
||
Host inventaris | Wanneer het selectievakje is aangevinkt, verschijnen de knoppen, waarmee een andere inventaris modus voor het host prototype kan worden geselecteerd: Uitgeschakeld - host inventaris niet aanvullen Handmatig - handmatig details verstrekken Geautomatiseerd - host inventarisgegevens automatisch invullen op basis van verzamelde metingen. |
These are the available form buttons and their respective operations:
Add a discovery rule: Click this button to add a new discovery rule. This option is only available when creating new discovery rules.
Update: Click this button to update the properties of an existing discovery rule. This button is visible when you're editing an existing discovery rule.
Clone: Click this button to create a new discovery rule with the same properties as the current one. This can be useful if you want to create a similar discovery rule without starting from scratch.
Check Now: Click this button to trigger the discovery process immediately based on the current discovery rule. This option is available for existing discovery rules. Keep in mind that using this option won't update the configuration cache, so recent changes to the discovery rule configuration might not be reflected immediately.
Delete: Click this button to delete the discovery rule.
Cancel: Click this button to cancel the editing of discovery rule properties. This can be used if you decide not to save any changes you've made.
The provided information discusses how discovered entities are managed and displayed in Zabbix, especially in relation to low-level discovery rules. Here's a breakdown of the key points:
Discovered Items, Triggers, and Graphs: The screenshots illustrate how discovered items, triggers, and graphs appear in the host's configuration. These entities are prefixed with an orange link that points back to the specific discovery rule that generated them.
Handling Duplicate Entities: If there are already existing entities with the same uniqueness criteria (e.g., a duplicate item key or graph name), Zabbix will not create new entities. An error message is displayed in such cases, indicating that certain entities could not be created. However, this won't affect the overall status of the discovery rule, and Zabbix will continue creating/updating other entities.
Automatic Deletion of Entities: Items, triggers, and graphs created by a low-level discovery rule will be automatically deleted if the discovered entity (e.g., file system, interface) stops being discovered or no longer meets the filter criteria. These entities are removed after a defined number of days specified in the "Keep lost resources period" field.
Lifetime Indicator for 'Not Discovered Anymore': When discovered entities are no longer being discovered, a lifetime indicator is shown in the item list. Hovering over this indicator displays a message indicating the number of days left until the item is deleted.
Delayed Deletion: If entities are marked for deletion but weren't deleted as expected (due to a disabled discovery rule or item host), they will be deleted the next time the discovery rule is processed.
Entities Containing Others: Entities that contain other entities (e.g., triggers containing items) won't update if they include items that are marked for deletion. For instance, if a low-level discovery-based trigger contains items set for deletion, the trigger won't update.
This information provides an overview of how Zabbix handles discovered entities generated through low-level discovery rules and how automatic deletion and maintenance of these entities work.
The provided information gives you pointers to other types of out-of-the-box discovery available in Zabbix and where you can find more detailed information about each type. Here's a summary of the different types of discovery mentioned:
Network Interfaces Discovery: Learn about discovering network interfaces and how to configure it in Zabbix: Network Interfaces Discovery.
CPUs and CPU Cores Discovery: Discover CPUs and CPU cores using Zabbix's low-level discovery: CPUs and CPU Cores Discovery.
SNMP OIDs Discovery: Discover SNMP OIDs and configure SNMP-based discovery in Zabbix: SNMP OIDs Discovery.
JMX Objects Discovery: Learn how to discover JMX objects and set up JMX-based discovery: JMX Objects Discovery.
ODBC SQL Queries Discovery: Discover using ODBC SQL queries and implement SQL-based discovery: ODBC SQL Queries Discovery.
Windows Services Discovery: Discover Windows services and configure service-based discovery: Windows Services Discovery.
Host Interfaces Discovery: Learn about discovering host interfaces in Zabbix: Host Interfaces Discovery.
Additionally, you can find more details about the JSON format for discovery items and an example of creating a custom file system discoverer as a Perl script in the section: Creating Custom Low-Level Discovery Rules.
This information provides an overview of the different types of out-of-the-box discovery available in Zabbix and directs you to specific sections for more detailed information on each type.
To create a custom low-level discovery (LLD) rule in Zabbix, you can follow these steps:
Create a Custom Item that Returns JSON: Write a script or command that outputs JSON with the information you want to discover. The JSON should follow a specific format with macro names and their corresponding values. For example, you can create a script that discovers databases on a server and outputs JSON like this:
Define LLD Macros: In your JSON output, use macro names surrounded by curly braces ({}
) to represent the discovered values. In the example above, {#DBNAME}
and {#DBTYPE}
are macros that represent the discovered database name and type.
Create a Discovery Rule: In the Zabbix web interface, navigate to Configuration > Discovery and create a new discovery rule. Specify the name, type of discovery, and set the Key field to a unique identifier for your custom discovery.
Add LLD Macros to Discovery Rule: In the discovery rule configuration, add LLD macros for the properties you want to discover. For example, add {#DBNAME}
and {#DBTYPE}
macros to match the macros in your JSON output.
Configure the Discovery Filter: Define the regular expressions or conditions in the Filter field to match the discovered values against specific criteria. This ensures that only the relevant entities are created based on your custom LLD.
Create Prototypes: Create prototypes for items, triggers, and other entities based on the discovered values. Use the LLD macros in the prototype configuration to dynamically populate values from the discovered entities.
Apply and Monitor: Once your custom LLD rule is configured and prototypes are created, apply the rule to a host. Zabbix will execute the custom script, discover entities, and create items, triggers, and other entities based on the discovered information.
Remember to ensure that the JSON format and macro names in your custom script match the LLD macros you define in your discovery rule and prototype configurations. Custom LLD rules allow you to discover any type of entities and configure Zabbix to monitor them effectively.