20 Extensies
Overzicht
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.
Gegevensverzameling met aangepaste opdrachten
Trapper-items
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.
Externe controles
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.
Gebruikersparameters
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 items
system.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.
HTTP-agentitems
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.
Script-items
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.
Geavanceerde extensies
Laadbare modules
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
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:
- Ingebouwde plugins (ondersteund sinds Zabbix 4.4.0)
- Laadbare plugins (ondersteund sinds Zabbix 6.0.0)
Zie de lijst van ingebouwde plugins.
Voor instructies en tutorials over het schrijven van je eigen plugins, zie het Ontwikkelaarscentrum.
Aanpassing van waarschuwingen
Webhooks
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.
Waarschuwingsscripts
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.
Frontend aanpassing
Custom themes
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
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.
Globale scripts
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.
Zabbix API
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:
- Programmatisch de configuratie van Zabbix ophalen en aanpassen.
- Zabbix-configuratie importeren en exporteren.
- Toegang krijgen tot Zabbix historische en trendgegevens.
- Applicaties configureren om met Zabbix te werken.
- Zabbix integreren met software van derden.
- Routinetaken automatiseren.
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.