4 Webhook

Pārskats

Webhook medija tips ir noderīgs HTTP izsaukumu veikšanai, izmantojot pielāgotu JavaScript kodu, lai nodrošinātu vienkāršu integrāciju ar ārēju programmatūru, piemēram, palīdzības dienesta sistēmām, tērzēšanas risinājumiem vai ziņapmaiņas lietotnēm. Jūs varat izvēlēties importēt Zabbix nodrošinātu integrāciju vai izveidot pielāgotu integrāciju no nulles.

Integrācijas

Ir pieejamas šādas integrācijas, kas ļauj izmantot iepriekš definētus webhook mediju tipus, lai nosūtītu Zabbix paziņojumus uz:

Papildus šeit uzskaitītajiem pakalpojumiem Zabbix var integrēt ar Spiceworks (webhook nav nepieciešams). Lai pārveidotu Zabbix paziņojumus par Spiceworks biļetēm, izveidojiet e-pasta mediju tipu un norādītā Zabbix lietotāja profila iestatījumos ievadiet Spiceworks palīdzības dienesta e-pasta adresi (piemēram, help\@zabbix.on.spiceworks.com).

Konfigurācija

Lai sāktu izmantot webhook integrāciju:

  1. Atrodiet nepieciešamo .yaml failu lejupielādētās Zabbix versijas templates/media direktorijā vai lejupielādējiet to no Zabbix git repozitorija.
  2. Importējiet failu savā Zabbix instalācijā. Webhook parādīsies mediju tipu sarakstā.
  3. Konfigurējiet webhook atbilstoši norādījumiem Readme.md failā (varat noklikšķināt uz webhook nosaukuma augstāk, lai ātri piekļūtu Readme.md).

Lai izveidotu pielāgotu webhook no nulles:

  1. Dodieties uz Brīdinājumi > Mediju tipi.
  2. Noklikšķiniet uz Izveidot mediju tipu.

Cilnē Mediju tips ir dažādi šim mediju tipam specifiski atribūti:

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.

Webhook mediju tipam ir specifiski šādi parametri:

Parametrs Apraksts
Parameters Norādiet webhook mainīgos kā atribūta un vērtības pārus.
Iepriekš konfigurētiem webhook parametru saraksts atšķiras atkarībā no pakalpojuma. Parametru aprakstu skatiet webhook Readme.md failā.
Jauniem webhook pēc noklusējuma ir iekļauti vairāki bieži izmantoti mainīgie (URL:<empty>, HTTPProxy:<empty>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE}); varat tos paturēt vai noņemt.

Webhook parametri atbalsta lietotāja makrosus, visus makrosus, kas tiek atbalstīti problēmu paziņojumos, kā arī papildus makrosus {ALERT.SENDTO}, {ALERT.SUBJECT} un {ALERT.MESSAGE}.

Ja norādāt HTTP starpniekserveri, lauks atbalsta to pašu funkcionalitāti kā vienuma konfigurācijas laukā HTTP proxy. Starpniekservera virknei var pievienot prefiksu [scheme]://, lai norādītu, kāda veida starpniekserveris tiek izmantots (piemēram, https, socks4, socks5; skatiet dokumentāciju).
Script Ievadiet JavaScript kodu modālajā redaktorā, kas tiek atvērts, noklikšķinot parametra laukā vai uz zīmuļa ikonas blakus tam. Šis kods izpildīs webhook darbību.
Skripts ir funkcijas kods, kas pieņem parametru-vērtību pārus. Vērtības jāpārveido par JSON objektiem, izmantojot JSON.parse() metodi, piemēram: var params = JSON.parse(value);.

Kodam ir piekļuve visiem parametriem; tas var izpildīt HTTP GET, POST, PUT un DELETE pieprasījumus, atbalsta arī papildu metodes, piemēram, CONNECT, PATCH, HEAD, OPTIONS un TRACE, un nodrošina kontroli pār HTTP galvenēm un pieprasījuma pamattekstu.
Skriptā obligāti jābūt return operatoram, pretējā gadījumā tas nebūs derīgs. Tas var atgriezt OK statusu kopā ar neobligātu birku un birku vērtību sarakstu (skatiet opciju Process tags) vai kļūdas virkni.

Atjaunošanas notikumus (neatkarīgi no tā, vai tie ģenerēti automātiski vai manuālas aizvēršanas rezultātā) izveido serveris, un tie ietver atrisinātās notikumu birkas (tostarp no veidnēm, hostiem un trigeriem mantotās birkas). Webhook skripti tiek izpildīti pēc brīdinājuma izveides; tādēļ webhook skripta atgrieztās birkas tiek pievienotas tikai pēc sākotnējās brīdinājuma izveides un nebūs pieejamas sākotnējā problēmas ziņojuma vai tūlītējā atjaunošanas ziņojuma makrosos {EVENT.TAGS} un {EVENT.RECOVERY.TAGS}.
Piezīme: Ieteicams izmantot lokālos mainīgos (piemēram, var local = 1) globālo vietā (piemēram, global = 1), lai nodrošinātu, ka katrs skripts darbojas ar saviem datiem, un izvairītos no kolīzijām vienlaicīgu izsaukumu laikā (skatiet zināmās problēmas).

Skatiet arī: Webhook izstrādes vadlīnijas, Webhook skriptu piemēri, Papildu JavaScript objekti.
Timeout JavaScript izpildes noildze (1-60s, noklusējums 30s).
Tiek atbalstīti laika sufiksi, piemēram, 30s, 1m.
Process tags Atzīmējiet izvēles rūtiņu, lai apstrādātu atgriezto JSON īpašību vērtības kā birkas. Šīs birkas tiek pievienotas visām esošajām problēmu birkām.
Ņemiet vērā, ka, izmantojot webhook birkas, webhook jāatgriež JSON objekts, kurā ir vismaz tukšs tags objekts: var result = {tags: {}};
Atgriežamo birku piemēri: jira-id:prod-1234, responsible:John Smith, processed:<no value>
Include event menu entry Atzīmējiet izvēles rūtiņu, lai notikuma izvēlnē iekļautu ierakstu ar saiti uz izveidoto ārējo biļeti.
Ieraksts tiks iekļauts katram webhook, kas ir iespējots un kam šī izvēles rūtiņa ir atzīmēta. Ņemiet vērā, ka, ja parametros Menu entry name un Menu entry URL ir ietverti makrosi {EVENT.TAGS.<tag name>}, ieraksts tiks iekļauts tikai tad, ja šos makrosus varēs atrisināt (tas ir, notikumam šīs birkas būs definētas).
Ja šī opcija ir atzīmēta, webhook nevajadzētu izmantot paziņojumu sūtīšanai dažādiem lietotājiem (apsveriet iespēju izveidot atsevišķu lietotāju) un to nevajadzētu izmantot vairākās brīdinājumu darbībās vienam problēmas notikumam.
Menu entry name Norādiet izvēlnes ieraksta nosaukumu.
Tiek atbalstīts makross {EVENT.TAGS.<tag name>}.
Šis lauks ir obligāts tikai tad, ja ir atzīmēta opcija Include event menu entry.
Menu entry URL Norādiet izvēlnes ieraksta pamatā esošo URL.
Tiek atbalstīts makross {EVENT.TAGS.<tag name>}.
Šis lauks ir obligāts tikai tad, ja ir atzīmēta opcija Include event menu entry.

Sīkāku informāciju par noklusējuma ziņojumu un brīdinājumu apstrādes opciju konfigurēšanu skatiet sadaļā kopīgie mediju tipu parametri.

Pat ja webhook neizmanto noklusējuma ziņojumus, šī webhook izmantotajiem darbību tipiem ziņojumu veidnēm joprojām jābūt definētām.

Testēšana

Lai pārbaudītu konfigurētu webhook medija tipu:

  1. Atrodiet attiecīgo webhook medija tipu sarakstā.
  2. Saraksta pēdējā kolonnā noklikšķiniet uz Test (tiks atvērts testēšanas logs).
  3. Pēc nepieciešamības rediģējiet webhook parametru vērtības. Aizstājiet makrosus ar piemēra vērtībām; pretējā gadījumā makrosi netiks atrisināti, un tests neizdosies.
  4. Noklikšķiniet uz Test.

Vērtību aizstāšana vai dzēšana testēšanas logā ietekmē tikai testēšanas procedūru; faktiskās webhook atribūtu vērtības paliks nemainītas.

Lai skatītu medija tipa testa žurnāla ierakstus, neatstājot testēšanas logu, noklikšķiniet uz Open log (tiks atvērts jauns uznirstošais logs).

Ja webhook tests ir veiksmīgs:

  • tiek parādīts ziņojums "Media type test successful.".
  • servera atbilde tiek parādīta pelēkajā laukā Response.
  • zem lauka Response tiek norādīts atbildes tips (JSON vai String).

Ja webhook tests neizdodas:

  • tiek parādīts ziņojums "Media type test failed.", kam seko papildu informācija par kļūmi.

Lietotāja medijs

Kad medija tips ir konfigurēts, dodieties uz sadaļu Users > Users un piešķiriet webhook mediju esošam lietotājam vai izveidojiet jaunu lietotāju, kas pārstāvēs webhook. Darbības lietotāja medija iestatīšanai esošam lietotājam, kas ir kopīgas visiem mediju tipiem, ir aprakstītas lapā Media types.

Ja webhook izmanto birkas, lai saglabātu biļetes\ziņojuma ID, nepiešķiriet vienu un to pašu webhook kā mediju dažādiem lietotājiem, jo tas var izraisīt webhook kļūdas (attiecas uz lielāko daļu webhook, kas izmanto opciju Include event menu entry). Šādā gadījumā ieteicamā prakse ir izveidot atsevišķu lietotāju, kas pārstāvēs webhook:

  1. Pēc webhook medija tipa konfigurēšanas dodieties uz sadaļu Users > Users un izveidojiet atsevišķu Zabbix lietotāju, kas pārstāvēs webhook — piemēram, ar lietotājvārdu Slack Slack webhook vajadzībām. Visus iestatījumus, izņemot mediju, var atstāt pēc noklusējuma, jo šis lietotājs nepieslēgsies Zabbix.
  2. Lietotāja profilā atveriet cilni Media un pievienojiet webhook, norādot nepieciešamo kontaktinformāciju. Ja webhook neizmanto lauku Send to, ievadiet jebkuru atbalstīto rakstzīmju kombināciju, lai apietu validācijas prasības.
  3. Piešķiriet šim lietotājam vismaz lasīšanas atļaujas visiem hostiem, kuriem tam jānosūta brīdinājumi.

Konfigurējot brīdinājumu darbību, laukā Send to users sadaļā Operation details pievienojiet šo lietotāju — tas norādīs Zabbix izmantot webhook paziņojumiem no šīs darbības.

Brīdinājumu darbību konfigurēšana

Darbības nosaka, kuri paziņojumi jānosūta, izmantojot webhook. Darbību konfigurēšanas soļi, kuros tiek izmantoti webhook, ir tādi paši kā visiem citiem mediju tipiem, izņemot šādus gadījumus:

  • Ja webhook izmanto webhook tagus, lai saglabātu biļetes\ziņojuma ID un apstrādātu atjaunināšanas\atrisināšanas darbības, izvairieties no viena un tā paša webhook izmantošanas vairākās brīdinājumu darbībās vienam problēmas notikumam. Ja {EVENT.TAGS.<tag name>} pastāv un tiek atjaunināts webhook, tā iegūtā vērtība būs nedefinēta. Lai no tā izvairītos, izmantojiet webhook jaunu taga nosaukumu atjaunināto vērtību glabāšanai. Tas attiecas uz Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad un Zendesk webhook, ko nodrošina Zabbix, kā arī uz lielāko daļu webhook, kas izmanto opciju Include event menu entry. Tomēr ņemiet vērā, ka vienu webhook var izmantot vairākās vienas un tās pašas darbības operācijās vai eskalācijas soļos, kā arī dažādās darbībās, kuras netiks aktivizētas ar vienu un to pašu problēmas notikumu atšķirīgu nosacījumu dēļ.
  • Izmantojot webhook darbībās iekšējiem notikumiem, noteikti atzīmējiet izvēles rūtiņu Custom message un definējiet pielāgotu ziņojumu darbības operācijas konfigurācijā. Pretējā gadījumā paziņojums netiks nosūtīts.