Hoewel Zabbix een veelheid aan functies biedt, is er altijd ruimte voor aanvullende functionaliteit. Extensies zijn een handige manier om de bewakingsmogelijkheden van Zabbix te wijzigen en te verbeteren zonder de broncode te hoeven aanpassen.
U kunt de functionaliteit van Zabbix uitbreiden door ingebouwde uitbreidingsopties te gebruiken (trapper-items, gebruikersparameters, enz.) of door gebruik te maken van of aangepaste extensies te maken (laadmodules, plugins, enz.).
Deze sectie geeft een overzicht met verwijzingen naar alle opties om Zabbix uit te breiden.
Trapper-items zijn items die inkomende gegevens accepteren in plaats van ernaar te vragen. Trapper-items zijn handig voor het verzenden van specifieke gegevens naar de Zabbix-server, bijvoorbeeld periodieke beschikbaarheids- en prestatiegegevens in het geval van langdurige gebruikersscripts. Dit kan worden gedaan met behulp van het Zabbix-sender-commandoregelhulpprogramma of door zelf een JSON-gebaseerd communicatieprotocol (soortgelijk aan dat gebruikt in Zabbix-sender) te implementeren.
Een externe controle is een item om controles uit te voeren door een uitvoerbaar bestand uit te voeren, bijvoorbeeld een shellscript of een binair bestand.
Externe controles worden uitgevoerd door de Zabbix-server of proxy (wanneer de host wordt bewaakt door een proxy), en vereisen geen agent die op de bewaakte host wordt uitgevoerd.
Een gebruikersparameter is een door de gebruiker gedefinieerde opdracht (geassocieerd met een door de gebruiker gedefinieerde sleutel) die, wanneer uitgevoerd, de benodigde gegevens kan ophalen van de host waarop de Zabbix-agent wordt uitgevoerd. Gebruikersparameters zijn handig voor het configureren van agent- of agent 2-items die niet vooraf zijn gedefinieerd in Zabbix.
system.run[]
Zabbix agent itemssystem.run[]
is een Zabbix agent item dat een item is voor een door de gebruiker gedefinieerd commando (geassocieerd met een vooraf bepaalde sleutel system.run[]
, bijvoorbeeld, system.run[myscript.sh]
) dat uitgevoerd kan worden op de host waar de Zabbix agent actief is.
Opmerking: system.run[]
items zijn standaard uitgeschakeld en moeten, indien gebruikt, ingeschakeld worden (toegestaan) en gedefinieerd worden in het Zabbix agent of agent 2 configuratiebestand (configuratieparameter AllowKey
).
Gebruikersgedefinieerde commando's in items zoals externe controles, gebruikersparameters en system.run[]
Zabbix agent items worden uitgevoerd door de OS-gebruiker die wordt gebruikt om Zabbix-componenten te laten draaien. Om deze commando's uit te voeren, moet deze gebruiker over de benodigde rechten beschikken.
Een HTTP-agent item is een item om gegevensverzoeken via HTTP/HTTPS uit te voeren. HTTP-agentitems zijn handig om verzoeken naar HTTP-eindpunten te sturen om gegevens op te halen van diensten zoals Elasticsearch en OpenWeatherMap, voor het controleren van de status van de Zabbix API of de status van de Apache- of Nginx-webserver, enzovoort.
Een script-item is een item om door de gebruiker gedefinieerde JavaScript-code uit te voeren die gegevens ophaalt via HTTP/HTTPS. Script-items zijn handig wanneer de functionaliteit die wordt geboden door HTTP-agentitems niet voldoende is. Bijvoorbeeld, in veeleisende scenario's voor gegevensverzameling die meerdere stappen of complexe logica vereisen, kan een script-item geconfigureerd worden om een HTTP-oproep te doen, vervolgens de ontvangen gegevens te verwerken, en daarna de getransformeerde waarde door te geven aan een tweede HTTP-oproep.
HTTP-agentitems en script-items worden ondersteund door de Zabbix-server en -proxy, en vereisen geen agent die actief is op de te monitoren host.
Laadbare modules, geschreven in C, zijn een veelzijdige en prestatiegerichte optie om de functionaliteit van Zabbix-componenten (server, proxy, agent) uit te breiden op UNIX-platforms. Een laadbare module is in wezen een gedeelde bibliotheek die door de Zabbix-daemon wordt gebruikt en bij het opstarten wordt geladen. De bibliotheek moet bepaalde functies bevatten, zodat een Zabbix-proces kan detecteren dat het bestand daadwerkelijk een module is die het kan laden en waarmee het kan werken.
Laadbare modules hebben verschillende voordelen, waaronder de mogelijkheid om nieuwe metingen toe te voegen of andere logica te implementeren (bijvoorbeeld, Zabbix geschiedenis gegevens export), geweldige prestaties en de mogelijkheid om de functionaliteit die ze bieden te ontwikkelen, gebruiken en delen. Het draagt bij aan probleemloos onderhoud en helpt om nieuwe functionaliteit gemakkelijker en onafhankelijk van de Zabbix-kerncode te leveren.
Laadbare modules zijn vooral handig in een complexe monitoringopstelling. Bij het monitoren van ingebedde systemen, wanneer er een groot aantal gemonitorde parameters is of zware scripts met complexe logica of lange opstarttijd, zullen extensies zoals gebruikersparameters, system.run[]
Zabbix agent items en externe controles van invloed zijn op de prestaties. Laadbare modules bieden een manier om Zabbix-functionaliteit uit te breiden zonder prestaties op te offeren.
Plugins bieden een alternatief voor laadbare modules (geschreven in C). Echter, plugins zijn een manier om alleen de Zabbix agent 2 uit te breiden.
Een plugin is een Go-pakket dat de structuur definieert en één of meerdere plugininterfaces implementeert (Exporter, Collector, Configurator, Runner, Watcher). Er worden twee soorten Zabbix agent 2 plugins ondersteund:
Zie de lijst van ingebouwde plugins.
Voor instructies en tutorials over het schrijven van je eigen plugins, zie het Ontwikkelaarscentrum.
Een webhook is een Zabbix mediatype die de mogelijkheid biedt om Zabbix-waarschuwingsmogelijkheden uit te breiden naar externe software zoals helpdesksystemen, chats of berichtendiensten. Vergelijkbaar met script-items zijn webhooks handig om HTTP-oproepen te doen met aangepaste JavaScript-code, bijvoorbeeld om meldingen naar verschillende platforms zoals Microsoft Teams, Discord en Jira te sturen. Het is ook mogelijk om bepaalde gegevens terug te geven (bijvoorbeeld over aangemaakte helpdesktickets) die vervolgens in Zabbix worden weergegeven.
Bestaande webhooks zijn beschikbaar in het Zabbix Git-repository. Voor aangepaste webhook-ontwikkeling, zie Richtlijnen voor webhook-ontwikkeling.
Een waarschuwingsscript is een Zabbix mediatype die de mogelijkheid biedt om een alternatieve manier (script) te creëren om Zabbix-waarschuwingen te verwerken. Waarschuwingsscripts zijn handig als je niet tevreden bent met de bestaande mediatypes om waarschuwingen te versturen in Zabbix.
It is possible to change Zabbix frontend visual appearance by using custom themes. See the instructions on creating and applying your own themes.
Frontend-modules bieden de mogelijkheid om Zabbix frontend-functionaliteit uit te breiden door derden modules toe te voegen of door je eigen modules te ontwikkelen. Met frontend-modules kun je nieuwe menupunten toevoegen, bijbehorende weergaven, acties, enzovoort.
Een globaal script is een door de gebruiker gedefinieerde reeks commando's die uitgevoerd kunnen worden op een te monitoren doelwit (door een shell (/bin/sh) interpreter), afhankelijk van de geconfigureerde reikwijdte en gebruikersrechten. Globale scripts kunnen geconfigureerd worden voor de volgende acties:
Globale scripts zijn nuttig in veel gevallen. Bijvoorbeeld, als ze geconfigureerd zijn voor actiebewerkingen of handmatige hostacties, kun je globale scripts gebruiken om automatisch of handmatig externe opdrachten uit te voeren, zoals het herstarten van een toepassing (webserver, middleware, CRM, enz.) of het vrijmaken van schijfruimte (oudere bestanden verwijderen, /tmp
opruimen, enzovoort). Een ander voorbeeld is als ze geconfigureerd zijn voor handmatige gebeurtenisacties, waarmee je globale scripts kunt gebruiken om probleemtickets in externe systemen te beheren.
Globale scripts kunnen worden uitgevoerd door de Zabbix-server, proxy of agent.
Door de gebruiker gedefinieerde commando's worden uitgevoerd door de OS-gebruiker die wordt gebruikt om Zabbix-componenten te laten draaien. Om deze commando's uit te voeren, moet deze gebruiker over de benodigde rechten beschikken.
De Zabbix API is een op HTTP gebaseerde API die deel uitmaakt van de Zabbix frontend. Met de Zabbix API kun je een van de volgende operaties uitvoeren:
De Zabbix API bestaat uit een veelvoud aan methoden die nominaal gegroepeerd zijn in afzonderlijke API's. Elke methode voert een specifieke taak uit. Voor de beschikbare methoden, evenals een overzicht van de functies die door de Zabbix API worden geboden, zie de Zabbix API Methodereferentie.