ProHoster > Blog > Pulega > Matou te foia faʻafitauli faʻapitoa i Zabbix e faʻaaoga ai le JavaScript
Matou te foia faʻafitauli faʻapitoa i Zabbix e faʻaaoga ai le JavaScript
Tikhon Uskov, Zabbix integration team engineer
Zabbix o se faʻasalalauga faʻapitoa e faʻaaogaina e mataʻituina soʻo se ituaiga faʻamatalaga. Talu mai le ulua'i fa'aliliuga o le Zabbix, ua i ai i le au pulega mata'ituina le tomai e fa'atautaia ai tusitusiga eseese e ala i gaoioiga mo su'esu'ega i nodes o feso'otaiga fa'atatau. I le taimi lava e tasi, o le faʻalauiloaina o tusitusiga na taʻitaʻia ai le tele o faʻafitauli, e aofia ai le manaʻomia o le lagolagoina o tusitusiga, o latou tuʻuina atu i nodes fesoʻotaʻiga ma sui, faʻapea foʻi ma le lagolago mo lomiga eseese.
JavaScript mo Zabbix
Ia Aperila 2019, na faʻaalia ai le Zabbix 4.2 ma le JavaScript preprocessing. O le toʻatele o tagata na fiafia i le manatu o le lafoaʻia o tusitusiga tusitusi e ave faʻamaumauga i se mea, eli ma tuʻuina atu i se faatulagaga e malamalama ai Zabbix, ma faia ni siaki faigofie o le a maua ai faʻamatalaga e le o saunia mo le teuina ma le gaosiga e Zabbix, ma ona fa'agasolo lea o fa'amaumauga fa'amaumauga e fa'aaoga ai meafaigaluega a le Zabbix ma le JavaScript. I le faʻatasi ai ma suʻesuʻega maualalo ma mea faʻalagolago na faʻaalia i le Zabbix 3.4, na matou maua ai se manatu faʻafetaui lelei mo le faʻavasegaina ma le puleaina o faʻamaumauga maua.
I le Zabbix 4.4, i le avea ai o se faʻaauau pea o le faʻagasologa muamua i le JavaScript, ua faʻaalia se auala faʻalauiloa fou - Webhook, lea e mafai ona faʻaaogaina e faigofie ai ona tuʻufaʻatasia faʻamatalaga a Zabbix ma faʻamatalaga lona tolu.
JavaScript ma Duktapes
Aisea na filifilia ai le JavaScript ma Duktape? O filifiliga eseese mo gagana ma afi na iloiloina:
Lua - Lua 5.1
Lua - LuaJIT
Javascript - Duktape
Javascript - JerryScript
Python fa'apipi'i
Fa'amauina Perl
O ta'iala autu o filifiliga o le fa'asalalauina, faigofie o le tu'ufa'atasia o le afi i totonu o le oloa, maualalo le fa'aogaina o punaoa ma le fa'atinoga atoa o le afi, ma le saogalemu o le fa'aofiina o code i lenei gagana i le mata'ituina. Faʻavae i luga o le tuʻufaʻatasia o faʻailoga, ua manumalo le JavaScript i luga o le masini Duktape.
Zabbix.log() - e mafai ai ona e tusia ni fe'au ma tulaga eseese o fa'amatalaga sa'o i totonu o le log o le Zabbix Server, lea e mafai ai ona fa'amaopoopo mea sese, mo se fa'ata'ita'iga, i totonu o le Webhook, fa'atasi ai ma le tulaga o le server.
CurlHttpRequest() - fa'atagaina oe e fai talosaga HTTP i le feso'ota'iga, lea e fa'avae ai le fa'aogaina o Webhook.
atob() ma le btoa() - fa'atagaina oe e fa'asolo ma fa'asolo laina i le Base64 format.
FAʻAALIGA. O le Duktape o loʻo tausisia tulaga ACME. Fa'aaoga e Zabbix le 2015 version of the script. O suiga mulimuli ane e laiti, o lea e mafai ona le amanaiaina..
JavaScript togafiti
O togafiti fa'amaneta uma o le JavaScript o lo'o taoto i le ta'i ma le fa'amomoli fa'aigoa: manoa, numera, ma le boolean.
O lona uiga e le mana'omia le fa'ailoa muamua po'o le a le ituaiga e tatau ona toe fa'afo'i ai e le fesuiaiga se tau.
I fa'agaioiga o le matematika, o tau na toe fa'afo'i mai e tagata fa'atino galuega e liua i numera. O le tuusaunoaga i ia gaioiga o le faʻaopoopoga, aua afai o se tasi o faʻamatalaga o se manoa, o le liua o manoa e faʻaoga i faaupuga uma.
FAʻAALIGA. O metotia e nafa ma ia suiga e masani ona faʻatinoina i faʻataʻitaʻiga matua o le mea, taua и toString. taua valaau i le taimi o le liua numera ma i taimi uma i luma o le metotia toString. Metotia taua e tatau ona toe fa'afo'i fa'atatau muamua, a leai e le amana'ia lona taunu'uga.
E ta'ua se metotia i luga o se mea tauaOF. Afai e le maua pe le toe faʻafoʻisia se tau muamua, e taʻua le metotia toString. Afai o le auala toString le maua, saili taua i le faʻataʻitaʻiga o le mea faitino, ma o mea uma e toe fai seʻia maeʻa le faʻagasologa o le tau ma o mea taua uma i le faʻamatalaga e lafo i le ituaiga tutusa. Afai o le mea faitino e faʻaaogaina se metotia toString, lea e toe faʻafoʻi mai ai se tau muamua, ona faʻaaogaina lea mo le liua o manoa.Ae ui i lea, o le taunuuga o le faʻaaogaina o lenei metotia e le o se manoa.
Mo se faʻataʻitaʻiga, afai mo le mea faitino 'mea faitino' auala ua faamatalaina toString,
`var obj = { toString() { return "200" }}`
metotia toString toe faafoi tonu se manoa, ma pe a faaopoopo se manoa ma se numera, matou te maua se manoa faʻapipiʻi:
`obj + 1 // '2001'`
`obj + 'a' // ‘200a'`
Ae afai e te toe tusi toString, ina ia toe faʻafoʻi mai e le metotia se numera, pe a faʻaopoopo le mea, o le a faia se faʻagaioiga faʻa-matematika ma se faʻaliliuga numera ma o le a maua ai le iʻuga o le faʻaopoopoga o le matematika.
I lenei tulaga, afai tatou te faia le faʻaopoopoga i se manoa, e faia se faʻaliliuga manoa, ma maua ai se manoa faʻapipiʻi.
`obj + 'a' // ‘200a'`
O le mafuaʻaga lea o le tele o mea sese a tagata faʻaoga JavaScript.
Le auala toString e mafai ona e tusia se galuega e faʻateleina ai le tau o loʻo iai nei i le 1.
Fa'atinoina o le tusitusiga, pe a fa'apea o le fesuiaiga e tutusa ma le 3, ma e tutusa fo'i ma le 4.
Pe a faʻatusatusa i se lafo (==), o le metotia e faʻatinoina i taimi taʻitasi toString fa'atasi ai ma galuega fa'atuputeleina tau. E tusa ai, ma faʻatusatusaga taʻitasi mulimuli ane, e faʻateleina le tau. E mafai ona aloese mai lenei mea e ala i le faʻaaogaina o faʻatusatusaga e le faʻasalalau (===).
Fa'atusatusaga e aunoa ma le fa'amomoli ituaiga
FAʻAALIGA. Aua le Fa'aaogaina Fa'atusa Fa'ata'ita'i.
Mo faʻamatalaga lavelave, e pei o Webhooks ma faʻalavelave faʻapitoa, e manaʻomia le faʻatusatusaina ma le tuʻuina o ituaiga, e fautuaina e muaʻi tusi siaki mo tau e toe faʻafoʻi ai fesuiaiga ma taulimaina mea le tutusa ma mea sese.
Webhook Media
I le faaiuga o le 2019 ma le amataga o le 2020, o le Zabbix integration team o loʻo faʻamalosia le atinaʻeina o Webhooks ma fafo atu o le pusa tuʻufaʻatasiga e sau ma le tufatufaina o Zabbix.
O le oʻo mai o le muaʻi faʻaogaina i le JavaScript na mafai ai ona lafoaʻia le tele o tusitusiga i fafo, ma i le taimi nei i Zabbix e mafai ona e mauaina soʻo se tau ma liliu i se tau e matua ese lava.
Preprocessing i Zabbix o loʻo faʻatinoina e le JavaScript code, lea, pe a tuʻufaʻatasia i le bytecode, ua liua i se galuega e manaʻomia ai se tau e tasi e fai ma parakalafa. tāua e pei o se manoa (o se manoa e mafai ona aofia uma ai se numera ma se numera).
Talu ai o le gaioiga o se galuega, i le pito o le tusitusiga e manaʻomia foʻi.
E mafai ona fa'aogaina macros masani i le code.
O punaoa e mafai ona faʻatapulaʻaina e le gata i le faʻaogaina o faiga faʻaoga, ae faʻapea foʻi i polokalame. O le la'asaga muamua e tu'uina atu i le maualuga o le 10 megabytes o le RAM ma le taimi fa'atapula'a o le 10 sekone.
FAʻAALIGA. Ole tau ole taimi ole 10 sekone e tele naua, aua o le aoina o le faitau afe o mea faʻamaumauga ile 1 sekone e tusa ai ma se faʻataʻitaʻiga "mamafa" muamua e mafai ona faʻagesegese ai Zabbix. O le mea lea, e le fautuaina le faʻaogaina o le muaʻi faʻaogaina e faʻatino ai faʻamaumauga JavaScript atoatoa e ala i mea e taʻua o elemene ata ata (mea dummy), ia e faʻatautaia naʻo le faʻatinoina o le faʻasologa..
E mafai ona e siaki lau code e ala i le suʻega muamua poʻo le faʻaaogaina o le aoga zabbix_js:
Tulaga: Maua le vevela ile Fahrenheit mai le masini e teu ile Celsius.
I le taimi muamua, matou te faia se mea e aoina ai le vevela i tikeri Fahrenheit. A maeʻa lena, o le isi mea faʻamaumauga (faʻatusatusaina) e faʻaliliu ai le Fahrenheit i le Celsius e faʻaaoga ai se fua faʻatatau.
Faʻafitauli:
E manaʻomia le faʻaluaina o elemene faʻamaumauga ma teu uma tulaga taua i totonu o faʻamaumauga.
E tatau ona e malilie i taimi mo le "matua" mea faʻamaumauga o loʻo faʻatatauina ma faʻaaogaina i le fua faʻatatau, ma mo le mea faʻamaumauga fuafuaina. A leai, e mafai ona alu le mea fa'akomepiuta i se tulaga e le'i lagolagoina pe fa'atatau se tau muamua, lea o le a a'afia ai le fa'amaoni o taunu'uga mata'ituina.
O le tasi fofo o le alu ese mai taimi siaki fetuutuunai e fiafia i taimi tumau ina ia mautinoa o le mea faʻatusatusa e iloilo pe a maeʻa le mea e maua ai faʻamatalaga (i le matou tulaga, o le vevela i tikeri Fahrenheit).
Ae afai, mo se faʻataʻitaʻiga, matou te faʻaogaina le faʻataʻitaʻiga e siaki ai se numera tele o masini, ma o le siaki e faia i le tasi taimi i le 30 sekone, Zabbix "hacks" mo le 29 sekone, ma i le lona lua mulimuli e amata siaki ma fuafua. Ole mea lea e tupu ai se laina ma afaina ai le faatinoga. O le mea lea, e fautuaina e faʻaaoga taimi tumau pe a manaʻomia.
I lenei faʻafitauli, o le fofo sili ona lelei o se laina muamua JavaScript e faʻaliliuina tikeri Fahrenheit i tikeri Celsius:
`return (value - 32) * 5 / 9;`
E vave ma faigofie, e te le manaʻomia le fatuina o mea faʻamaumauga e le manaʻomia ma teu ai se tala faʻasolopito i luga oi latou, ma e mafai foi ona e faʻaogaina taimi fetuutuunai mo siaki.
Ae, afai i se tulaga faʻapitoa e manaʻomia le faʻaopoopoina o le elemene faʻamaumauga na maua, mo se faʻataʻitaʻiga, faʻatasi ai ma soʻo se faʻamatalaga faifaipea i le macro, e tatau ona amanaia o le parakalafa. tāua fa'alautele i se manoa. I se fa'agaioiga fa'aopoopoina manoa, e lua lava manoa e tu'ufa'atasia i le tasi.
`return (value + "{$EXAMPLE.MACRO}");`
Ina ia maua le faʻaiʻuga o le faʻaogaina o le matematika, e manaʻomia le faʻaliliuina o ituaiga o tau maua i se numera numera. Mo lenei mea e mafai ona e faʻaogaina le gaioiga parseInt(), lea e maua ai se integer, se galuega parseFloat(), lea e maua ai se tesimale, po o se galuega nūmera, lea e toe fa'afo'i ai le numera atoa po'o le tesimale.
Galuega 2
Maua le taimi i sekone seia oo i le faaiuga o le tusi faamaonia.
Tulaga: o se auaunaga e tuʻuina atu se aso e muta ai tusi faamaonia i le faatulagaga "Feb 12 12:33:56 2022 GMT".
I le ECMAScript5 date.parse() talia se aso ile ISO 8601 faatulagaga (YYYY-MM-DDTHH:mm:ss.sssZ). E tatau ona lafo i ai se manoa i le faatulagaga MMM DD YYYY HH:mm:ss ZZ
faafitauli: O le tau o le masina o loʻo faʻaalia o se tusitusiga, ae le o se numera. O faʻamatalaga i lenei faatulagaga e le taliaina e Duktape.
Fa'ata'ita'iga fofo:
Muamua, o se fesuiaiga e faʻaalia e manaʻomia ai se tau (o le tusitusiga atoa o se taʻutinoga o fesuiaiga o loʻo lisiina e vavaeeseina e koma).
I le laina muamua tatou te maua le aso i le parakalafa tāua ma tuueseese i avanoa e faaaoga ai le auala vaelua. O le mea lea, matou te maua se laina, lea o elemene taʻitasi o le faʻasologa, amata i le index 0, e fetaui ma le tasi aso elemene i luma ma pe a uma se avanoa. vaelua(0) - masina, vaelua(1) - numera, vaelua(2) - o se manoa ma le taimi, ma isi. A maeʻa lena, o elemene taʻitasi o le aso e mafai ona faʻaogaina e ala i le faasino igoa i le laina.
`var split = value.split(' '),`
O masina taʻitasi (i le faʻasologa o taimi) e fetaui ma le faʻailoga o lona tulaga i le faʻasologa (mai le 0 i le 11). Ina ia faaliliu se tau o tusitusiga i se tau numera, e faaopoopo le tasi i le faasinoupu o le masina (ona o masina e faanumera amata i le 1). I lenei tulaga, o le faʻamatalaga ma le faʻaopoopoga o le tasi e ave i puipui, aua a leai o le a maua se manoa, ae le o se numera. I le faaiuga tatou te faia tipi() - tipi le laina mai le pito e tuʻu ai naʻo le lua mataitusi (lea e taua mo masina ma se numera lua-numera).
O faʻamaumauga i le faʻatulagaina o le numera o sekone mai le 1970 i se taimi i le lumanaʻi. E toetoe lava a le mafai ona faʻaogaina faʻamatalaga i le faʻatulagaina na maua i faʻaoso, aua o le Zabbix e faʻatagaina oe e faʻaogaina naʻo macros. {Aso} и {Taimi}, lea e toe fa'afo'i le aso ma le taimi i se faiga fa'aoga-fa'aoga.
Ona mafai lea ona tatou maua le aso nei i le JavaScript i le Unix Timestamp format ma toesea mai le aso e muta ai le tusi faamaonia e maua ai le numera o milliseconds mai le taimi nei seia maeʻa le tusi faamaonia.
`now = Date.now();`
Matou te vaevaeina le tau na maua i le afe e maua ai sekone i Zabbix.
I le faʻaoso, e mafai ona e faʻamaonia le faʻamatalaga 'mulimuli' sosoo ai ma se seti o numera e fetaui ma le numera o sekone i le vaitau e te manaʻo e tali atu ai, mo se faʻataʻitaʻiga, i vaiaso. O le mea lea, o le a logoina e le faʻaoso o le tusi faamaonia e muta i le vaiaso.
FAʻAALIGA. Faalogo ile faʻaaogaina parseInt() i galuega foʻie faaliliu ai le numera vaevaega e mafua mai i le vaevaeina o milliseconds i se numera atoa. E mafai foi ona e faʻaaogaina parseFloat() ma teu fa'amatalaga ninii.