4 Webhook

Overzicht

De webhook media type is handig voor het maken van HTTP-oproepen met behulp van aangepaste JavaScript-code voor eenvoudige integratie met externe software zoals helpdesksystemen, chats of berichtendiensten. U kunt ervoor kiezen om een integratie die door Zabbix wordt aangeboden te importeren of een aangepaste integratie helemaal opnieuw te maken.

Integraties

De volgende integraties zijn beschikbaar, waardoor vooraf gedefinieerde webhook media types kunnen worden gebruikt om Zabbix-meldingen door te sturen naar:

Naast de hier vermelde services kan Zabbix worden geïntegreerd met Spiceworks (geen webhook vereist). Om Zabbix-meldingen om te zetten in Spiceworks-tickets, maak een e-mail media type aan en voer het helpdesk-e-mailadres van Spiceworks in (bijv. [email protected]) in de profielinstellingen van een aangewezen Zabbix-gebruiker.

Configuratie

Om een webhook-integratie te starten:

  1. Zoek het vereiste .xml-bestand in de templates/media map van de gedownloade Zabbix-versie of download het van de Zabbix git repository
  2. Importeer het bestand in je Zabbix-installatie. De webhook zal verschijnen in de lijst van media types.
  3. Configureer de webhook volgens de instructies in het Readme.md bestand (je kunt op de naam van een webhook hierboven klikken om snel toegang te krijgen tot Readme.md).

Om een aangepaste webhook vanaf het begin te maken:

  • Ga naar Beheer → Media types
  • Klik op Media type maken

Het tabblad Media type bevat verschillende attributen die specifiek zijn voor dit media type:

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

De volgende parameters zijn specifiek voor het webhook media type:

Parameter Omschrijving
Parameters Specificeer de webhook-variabelen als attribuut- en waardeparen.
Voor voorgeconfigureerde webhooks varieert de lijst met parameters, afhankelijk van de service. Bekijk het Readme.md bestand van de webhook voor een beschrijving van de parameters.
Voor nieuwe webhooks zijn standaard meerdere gemeenschappelijke variabelen opgenomen (URL:<leeg>, HTTPProxy:<leeg>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE}), je kunt ze behouden of verwijderen.
Alle macros die worden ondersteund in probleemmeldingen, worden ondersteund in de parameters.
Als je een HTTP-proxy opgeeft, ondersteunt het veld dezelfde functionaliteit als het veld voor configuratie van items HTTP-proxy. De proxyreeks kan worden voorafgegaan door [scheme]:// om aan te geven welk type proxy wordt gebruikt (bijv. https, socks4, socks5; zie documentatie).
Script Voer JavaScript-code in in het blok dat verschijnt wanneer je in het parameter veld klikt (of op de bekijken/bewerken knop ernaast). Deze code zal de webhook-operatie uitvoeren.
De script is een functiecode die parameter-waardeparen accepteert. De waarden moeten worden omgezet in JSON-objecten met behulp van de JSON.parse() methode, bijvoorbeeld: var params = JSON.parse(value);.

De code heeft toegang tot alle parameters, het kan HTTP GET-, POST-, PUT- en DELETE-verzoeken uitvoeren en heeft controle over HTTP-headers en verzoekbody.
De script moet een return operator bevatten, anders zal het niet geldig zijn. Het kan een OK-status retourneren samen met een optionele lijst met tags en tagwaarden (zie Process tags optie) of een foutreeks.

Merk op dat het script pas wordt uitgevoerd nadat een melding is gemaakt. Als het script is geconfigureerd om tags te retourneren en te verwerken, worden deze tags niet opgelost in de {EVENT.TAGS} en {EVENT.RECOVERY.TAGS} macro's in het initiële probleembericht en herstelberichten omdat het script nog niet heeft kunnen draaien.

Zie ook: Richtlijnen voor webhook-ontwikkeling, Voorbeelden van webhook-scripts, Aanvullende JavaScript-objecten.
Timeout JavaScript-uitvoeringstimeout (1-60s, standaard 30s).
Tijdsuffixen worden ondersteund, bijv. 30s, 1m.
Process tags Markeer het selectievakje om JSON-eigenschapswaarden die worden geretourneerd te verwerken als tags. Deze tags worden toegevoegd aan de al bestaande (indien aanwezig) probleemgebeurtenis-tags in Zabbix.
Als een webhook tags gebruikt (het selectievakje Process tags is gemarkeerd), moet de webhook altijd een JSON-object retourneren dat ten minste een leeg object voor tags bevat:var result = {tags: {}};.
Voorbeelden van tags die kunnen worden geretourneerd: Jira ID: PROD-1234, Verantwoordelijk: John Smith, Verwerkt:<geen waarde>, enz.
Menu-item externe ticket toevoegen Markeer het selectievakje om een item op te nemen in het gebeurtenismenu dat linkt naar het aangemaakte externe ticket.
Indien gemarkeerd, moet de webhook niet worden gebruikt om meldingen naar verschillende gebruikers te sturen (overweeg in plaats daarvan een toegewijde gebruiker te maken) of in verschillende meldingsacties gerelateerd aan een enkele probleemgebeurtenis.
Naam van menu-item Specificeer de naam van het menu-item.
{EVENT.TAGS.<tag name>} macro wordt ondersteund.
Dit veld is alleen verplicht als Menu-item externe ticket toevoegen is geselecteerd.
URL van menu-item Specificeer de onderliggende URL van het menu-item.
{EVENT.TAGS.<tag name>} macro wordt ondersteund.
Dit veld is alleen verplicht als Menu-item externe ticket toevoegen is geselecteerd.

Zie algemene parameters voor media type voor details over het configureren van standaard berichten en opties voor het verwerken van meldingen.

Zelfs als een webhook geen standaardberichten gebruikt, moeten berichtsjablonen voor operatietypen die door deze webhook worden gebruikt, nog steeds worden gedefinieerd.

Gebruikersmedia

Nadat het media type is geconfigureerd, ga je naar de Beheer → Gebruikers sectie en wijs je het webhook media toe aan een bestaande gebruiker of maak je een nieuwe gebruiker aan om het webhook te vertegenwoordigen. Stappen voor het instellen van gebruikersmedia voor een bestaande gebruiker, die gemeenschappelijk zijn voor alle media types, worden beschreven op de Media types pagina.

Als een webhook tags gebruikt om ticket\bericht ID op te slaan, vermijd dan om dezelfde webhook als media toe te wijzen aan verschillende gebruikers, omdat dit webhook fouten kan veroorzaken (dit geldt voor de meeste webhooks die de optie Menu-item externe ticket toevoegen gebruiken). In dit geval is de beste praktijk om een speciale gebruiker te maken om het webhook te vertegenwoordigen:

  1. Nadat je het media type voor de webhook hebt geconfigureerd, ga je naar de Beheer → Gebruikers sectie en maak je een toegewijde Zabbix-gebruiker om het webhook te vertegenwoordigen - bijvoorbeeld met de gebruikersnaam Slack voor de Slack webhook. Alle instellingen, behalve media, kunnen op hun standaardwaarden worden gelaten, omdat deze gebruiker niet zal inloggen op Zabbix.
  2. Ga in het gebruikersprofiel naar het tabblad Media en voeg een webhook toe met de vereiste contactinformatie. Als de webhook geen Send to veld gebruikt, voer dan een willekeurige combinatie van ondersteunde tekens in om aan de validatievereisten te voldoen.
  3. Verleen deze gebruiker ten minste lees rechten voor alle hosts waarvoor het meldingen moet verzenden.

Bij het configureren van een meldingsactie, voeg je deze gebruiker toe in het Aan gebruikers verzenden veld in Operation details - dit vertelt Zabbix om het webhook te gebruiken voor meldingen vanuit deze actie.

Meldingsacties configureren

Acties bepalen welke meldingen via het webhook moeten worden verzonden. De stappen voor het configureren van acties die webhooks betrekken, zijn hetzelfde als voor alle andere media types, met deze uitzonderingen:

  • Als een webhook tags gebruikt om ticket\bericht ID op te slaan en om op te volgen met update\oplossingsoperaties, moet deze webhook niet worden gebruikt in meerdere meldingsacties voor een enkel probleemgeval. Als {EVENT.TAGS.<naam>} al bestaat en wordt bijgewerkt in de webhook, is de resulterende waarde niet gedefinieerd. In dat geval moet een nieuwe tag-naam in de webhook worden gebruikt om bijgewerkte waarden op te slaan. Dit is van toepassing op Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad en Zendesk webhooks die worden geleverd door Zabbix, en op de meeste webhooks die de optie Menu-item externe ticket toevoegen gebruiken. Het is toegestaan om het webhook in meerdere operaties te gebruiken als die operaties of escalatiestappen behoren tot dezelfde actie. Het is ook goed om dit webhook in verschillende acties te gebruiken als de acties niet op hetzelfde probleemgeval worden toegepast vanwege verschillende filtercondities.
  • Bij het gebruik van een webhook in acties voor interne gebeurtenissen: in de configuratie van de actie-operatie, selecteer de optie Aangepast bericht en definieer het aangepaste bericht, anders wordt er geen melding verzonden.