Dit gedeelte biedt details over de voorverwerking van itemwaarden. De voorverwerking van itemwaarden maakt het mogelijk om transformatieregels voor de ontvangen itemwaarden te definiëren en uit te voeren.
De voorverwerking wordt beheerd door het voorverwerkingsbeheerproces, samen met voorverwerkingswerkers die de voorverwerkingsstappen uitvoeren. Alle waarden (met of zonder voorverwerking) van verschillende gegevensverzamelaars gaan door het voorverwerkingsbeheer voordat ze aan de geschiedeniscache worden toegevoegd. Er wordt gebruik gemaakt van socketgebaseerde IPC-communicatie tussen gegevensverzamelaars (pollers, trappers, enz.) en het voorverwerkingsproces. Zowel de Zabbix-server als de Zabbix-proxy (voor items die worden bewaakt door de proxy) voeren voorverwerkingsstappen uit.
Om de gegevensstroom van de gegevensbron naar de Zabbix-database te visualiseren, kunnen we de volgende vereenvoudigde diagram gebruiken:
Het bovenstaande diagram toont alleen processen, objecten en acties die verband houden met de verwerking van itemwaarden in een vereenvoudigde vorm. Het diagram toont geen voorwaardelijke richtingswijzigingen, foutafhandeling of lussen. De lokale gegevenscache van het voorverwerkingsbeheer wordt ook niet weergegeven omdat dit de gegevensstroom niet direct beïnvloedt. Het doel van dit diagram is om de processen te laten zien die betrokken zijn bij de verwerking van itemwaarden en de manier waarop ze met elkaar communiceren.
Een item kan tijdens het uitvoeren van voorverwerking van status veranderen naar NIET ONDERSTEUND als een van de voorverwerkingsstappen mislukt.
Een item kan van status veranderen naar NIET ONDERSTEUND als de normalisatie van gegevens mislukt (bijvoorbeeld wanneer een tekstuele waarde niet kan worden omgezet naar een getal).
Gegevensvoorverwerking wordt uitgevoerd in de volgende stappen:
Merk op dat in het diagram de voorverwerking van het hoofditem iets vereenvoudigd is door de voorverwerkingscaching over te slaan.
Het verwerken van itemwaarden wordt uitgevoerd in meerdere stappen (of fasen) door meerdere processen. Dit kan leiden tot:
UINT
(een trapper-item kan worden gebruikt), het afhankelijke item heeft het waarde-type TEXT
.Als resultaat ontvangt het afhankelijke item een waarde, terwijl het hoofditem van staat verandert en NIET ONDERSTEUND wordt.
CHAR
wordt gebruikt voor het hoofditem, dan zal de waarde van het hoofditem worden afgekapt in de fase van geschiedenissynchronisatie, terwijl afhankelijke items hun waarde ontvangen van de oorspronkelijke (niet afgekapte) waarde van het hoofditem.The preprocessing queue is organized as:
Voorverwerkingscaching is geïntroduceerd om de prestaties van de voorverwerking te verbeteren voor meerdere afhankelijke items met vergelijkbare voorverwerkingsstappen (wat vaak voorkomt bij LLD-resultaten).
Caching wordt gedaan door één afhankelijk item voor te verwerken en enkele van de interne voorverwerkingsgegevens opnieuw te gebruiken voor de rest van de afhankelijke items. De voorverwerkingscache wordt alleen ondersteund voor de eerste voorverwerkingsstap van de volgende typen:
[?(@.path == "value")]
)Het Zabbix-serverconfiguratiebestand stelt gebruikers in staat om het aantal voorverwerkingswerkersthreads in te stellen. De configuratieparameter StartPreprocessors moet worden gebruikt om het aantal vooraf gestarte instanties van voorverwerkingswerkers in te stellen. Het optimale aantal voorverwerkingswerkers kan worden bepaald door vele factoren, waaronder het aantal "voorverwerkbare" items (items die vereisen dat er enige voorverwerkingsstappen worden uitgevoerd), het aantal processen voor gegevensverzameling, het gemiddelde aantal stappen voor itemvoorverwerking, enzovoort.
Maar ervan uitgaande dat er geen zware voorverwerkingsbewerkingen zijn zoals het parsen van grote XML/JSON-chunks, kan het aantal voorverwerkingswerkers overeenkomen met het totale aantal gegevensverzamelaars. Op deze manier zal er meestal (behalve in gevallen waarin gegevens van de verzamelaar in bulk binnenkomen) ten minste één onbezette voorverwerkingswerker zijn voor verzamelde gegevens.
Te veel gegevensverzamelingsprocessen (pollers, niet-bereikbare pollers, ODBC-pollers, HTTP-pollers, Java-pollers, pingers, trappers, proxypollers), samen met de IPMI-beheerder, SNMP-trapper en voorverwerkingswerkers, kunnen het bestanddescriptorlimiet per proces voor de voorverwerkingsbeheerder uitputten. Dit zal ertoe leiden dat de Zabbix-server stopt (meestal kort na het opstarten, maar soms kan het langer duren). Het configuratiebestand moet worden herzien of het limiet moet worden verhoogd om deze situatie te voorkomen.