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:
- brevis.one
- Discord
- Event-Driven Ansible
- Express.ms messenger
- GitHub
- GLPI
- IBM Maximo Service Request
- iLert
- iTop
- Jira
- Jira Service Management
- ManageEngine ServiceDesk
- Mantis Bug Tracker
- Mattermost
- MS Teams
- MS Teams Workflows
- LINE
- Opsgenie
- OTRS CE
- Pagerduty
- Pushover
- Redmine
- Rocket.Chat
- ServiceNow
- SIGNL4
- Slack
- SolarWinds
- SysAid
- Telegram
- TOPdesk
- VictorOps
- Zammad
- Zendesk
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:
- Atrodiet nepieciešamo .yaml failu lejupielādētās Zabbix versijas direktorijā
templates/mediavai lejupielādējiet to no Zabbix git repozitorija. - Importējiet failu savā Zabbix instalācijā. Webhook parādīsies mediju tipu sarakstā.
- Konfigurējiet webhook saskaņā ar norādījumiem failā Readme.md (varat noklikšķināt uz webhook nosaukuma augstāk, lai ātri atvērtu Readme.md).
Lai izveidotu pielāgotu webhook no nulles:
- Dodieties uz Alerts > Media types.
- Noklikšķiniet Create media type.
Cilnē Media type ir dažādi šim mediju tipam specifiski atribūti:

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.
Tālāk norādītie parametri ir specifiski webhook mediju tipam:
| Parameter | Description |
|---|---|
| Parameters | Norādiet webhook mainīgos kā atribūtu un vērtību pārus. Iepriekš konfigurētiem webhook parametru saraksts atšķiras atkarībā no pakalpojuma. Parametru aprakstu skatiet webhook failā Readme.md. Jauniem webhook pēc noklusējuma ir iekļauti vairāki kopīgi mainīgie (URL:<empty>, HTTPProxy:<empty>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE}); tos varat paturēt vai noņemt. Webhook parametri atbalsta lietotāja makro, visus makro, kas tiek atbalstīti problēmu paziņojumos, kā arī {ALERT.SENDTO}, {ALERT.SUBJECT} un {ALERT.MESSAGE} makro. Ja norādāt HTTP starpniekserveri, lauks atbalsta tādu 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 atveras, noklikšķinot parametru laukā vai uz zīmuļa ikonas blakus tam. Šis kods veiks webhook darbību. Skripts ir funkcijas kods, kas pieņem parametra - vērtības pārus. Vērtības jākonvertē JSON objektos, izmantojot JSON.parse() metodi, piemēram: var params = JSON.parse(value);.Kodam ir piekļuve visiem parametriem, tas var veikt HTTP GET, POST, PUT un DELETE pieprasījumus, atbalstīt papildu metodes, piemēram, CONNECT, PATCH, HEAD, OPTIONS un TRACE, kā arī kontrolēt HTTP galvenes 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 tagu un tagu vērtību sarakstu (skatiet opciju Process tags) vai kļūdas virkni. Atjaunošanas notikumus (neatkarīgi no tā, vai tie tiek ģenerēti automātiski vai manuālas aizvēršanas rezultātā) izveido serveris, un tie ietver atrisinātā notikuma tagus (tostarp tagus, kas mantoti no veidnēm, hostiem un trigeriem). Webhook skripti tiek izpildīti pēc brīdinājuma izveides; tādēļ webhook skripta atgrieztie tagi tiek pievienoti tikai pēc sākotnējā brīdinājuma izveides un nebūs pieejami sākotnējā problēmas ziņojuma vai tūlītējā atjaunošanas ziņojuma makros {EVENT.TAGS} un {EVENT.RECOVERY.TAGS}.Piezīme: Ieteicams izmantot lokālos mainīgos (piem., var local = 1) globālo mainīgo (piem., global = 1) vietā, lai nodrošinātu, ka katrs skripts darbojas ar saviem datiem, un izvairītos no konfliktēšanas starp vienlaicīgiem izsaukumiem (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-60 s, noklusējums 30 s). Tiek atbalstīti laika sufiksi, piemēram, 30s, 1m. |
| Process tags | Atzīmējiet izvēles rūtiņu, lai apstrādātu atgrieztās JSON īpašību vērtības kā tagus. Šie tagi tiek pievienoti jebkuriem esošajiem problēmas tagiem. Ņemiet vērā, ka, izmantojot webhook tagus, webhook ir jāatgriež JSON objekts, kurā ir vismaz tukšs tags objekts: var result = {tags: {}};Tagu piemēri, ko var atgriezt: 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 izveidotu ārējo biļeti. Ieraksts tiks iekļauts katram iespējotajam webhook, kuram ir atzīmēta šī izvēles rūtiņa. Ņemiet vērā, ka, ja parametros Menu entry name un Menu entry URL ir kādi {EVENT.TAGS.<tag name>} makro, ieraksts tiks iekļauts tikai tad, ja šos makro varēs atrisināt (tas ir, ja notikumam ir definēti šie tagi). Ja ir atzīmēts, webhook nevajadzētu izmantot paziņojumu sūtīšanai dažādiem lietotājiem (tā vietā 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 {EVENT.TAGS.<tag name>} makro. Šis lauks ir obligāts tikai tad, ja ir atzīmēts Include event menu entry. |
| Menu entry URL | Norādiet izvēlnes ieraksta pamatā esošo URL. Tiek atbalstīts {EVENT.TAGS.<tag name>} makro. Šis lauks ir obligāts tikai tad, ja ir atzīmēts Include event menu entry. |
Skatiet kopīgos mediju tipa parametrus, lai iegūtu informāciju par noklusējuma ziņojumu un brīdinājumu apstrādes opciju konfigurēšanu.
Pat ja webhook neizmanto noklusējuma ziņojumus, šim webhook izmantoto darbību tipu ziņojumu veidnēm joprojām jābūt definētām.
Testēšana
Lai pārbaudītu konfigurētu webhook mediju tipu:
- Atrodiet attiecīgo webhook sarakstā ar mediju tipiem.
- Noklikšķiniet uz Test saraksta pēdējā kolonnā (tiks atvērts testēšanas logs).
- Pēc vajadzības rediģējiet webhook parametru vērtības. Aizstājiet makro ar piemēra vērtībām; pretējā gadījumā makro netiks atrisināti, un tests neizdosies.
- 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īgas.

Lai skatītu mediju 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, kā iestatīt lietotāja mediju esošam lietotājam, kas ir kopīgas visiem mediju tipiem, ir aprakstītas lapā Mediju tipi.
Ja webhook izmanto birkas, lai glabātu pieteikuma\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:
- 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.
- Lietotāja profilā atveriet cilni Media un pievienojiet webhook, norādot nepieciešamo kontaktinformāciju. Ja webhook neizmanto lauku Send to, ievadiet jebkādu atbalstīto rakstzīmju kombināciju, lai apietu validācijas prasības.
- 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.