ProHoster > Блог > Whakahaerenga > Ka whakatauhia e matou nga raruraru whaitake i Zabbix ma te whakamahi i te JavaScript
Ka whakatauhia e matou nga raruraru whaitake i Zabbix ma te whakamahi i te JavaScript
Tikhon Uskov, Zabbix integration team engineer
Ko te Zabbix he papa taapiri e whakamahia ana hei aro turuki i nga momo raraunga. Mai i nga putanga tuatahi o Zabbix, kua whai mana nga kaiwhakahaere aroturuki ki te whakahaere i nga momo tuhinga ma te Hohenga mo nga arowhai i runga i nga pona whatunga kua whakaritea. I te wa ano, ko te whakarewatanga o nga tuhinga tuhi i arahi ki te maha o nga uaua, tae atu ki te hiahia ki te tautoko i nga tuhinga tuhi, i to raatau tuku ki nga waahanga korero me nga kaitautoko, me te tautoko mo nga momo putanga.
JavaScript mo Zabbix
I te Paenga-whāwhā 2019, i whakauruhia a Zabbix 4.2 me te tukatuka JavaScript. He maha nga tangata i harikoa ki te whakaaro ki te whakarere i nga tuhinga tuhi ka mau i nga raraunga ki tetahi waahi, ka keri me te whakarato i roto i te whakatakotoranga e marama ana a Zabbix, me te mahi i nga arowhai ngawari ka whiwhi raraunga kaore i te rite mo te rokiroki me te tukatuka e Zabbix, a ka tukatuka i tenei awa raraunga ma te whakamahi i nga taputapu Zabbix me JavaScript. I te taha o te kitenga taumata-iti me nga mea whakawhirinaki i puta mai i te Zabbix 3.4, i whiwhi tatou i tetahi ariā ngawari mo te tohatoha me te whakahaere i nga raraunga kua riro mai.
I roto i te Zabbix 4.4, hei mahinga arorau o mua i te tukatuka i roto i te JavaScript, kua puta he tikanga whakamohiotanga hou - Webhook, ka taea te whakamahi ki te whakauru ngawari i nga whakamohiotanga a Zabbix me nga tono tuatoru.
JavaScript me Duktapes
He aha i whiriwhiria ai a JavaScript me Duktape? He maha nga whiringa mo nga reo me nga miihini i whakaarohia:
Lua - Lua 5.1
Lua - LuaJIT
Javascript - Duktape
Javascript - JerryScript
Python tāmau
Perl tāmau
Ko nga paearu whiriwhiri matua ko te whanuitanga, te ngawari o te whakaurunga o te miihini ki roto i te hua, te iti o te kohi rauemi me te mahi katoa o te miihini, me te haumaru o te whakauru i te waehere i roto i tenei reo ki te aro turuki. I runga i te huinga o nga tohu, i toa a JavaScript i runga i te miihini Duktape.
Zabbix.log() - ka taea e koe te tuhi i nga karere me nga taumata rereke rereke ki roto i te raarangi a Zabbix Server, e taea ai te hono i nga hapa, hei tauira, i roto i te Webhook, me te ahua o te tūmau.
CurlHttpRequest() - ka taea e koe te tuku tono HTTP ki te whatunga, kei runga te whakamahi i te Webhook.
atob() me te btoa() - ka taea e koe te whakawaehere me te wetewete aho i te whakatakotoranga Base64.
FAKATOKANGA. Ka tutuki a Duktape ki nga paerewa ACME. Ka whakamahi a Zabbix i te putanga 2015 o te tuhinga. He iti noa nga huringa o muri mai, na reira ka kore e arohia..
JavaScript Magic
Ko nga mahi makutu katoa o JavaScript kei roto i te tuhi hihiri me te maka momo: aho, tau, me te boolean.
Ko te tikanga kaore e tika te whakaatu i mua he aha te momo me whakahoki mai e te taurangi he uara.
I roto i nga mahi pangarau, ko nga uara i whakahokia mai e nga kaiwhakahaere mahi ka huri ki nga tau. Ko te rereke ki enei mahi he taapiri, na te mea mena he aho tetahi o nga kupu, ka whakamahia te hurihanga aho ki nga kupu katoa.
FAKATOKANGA. Ko nga tikanga e tika ana mo enei huringa ka whakamahia i roto i nga tauira matua o te ahanoa, Tuhinga o mua и kiToko. Tuhinga o mua ka karangahia i roto i te hurihanga tau me nga wa katoa i mua i te tikanga kiToko. Tikanga Tuhinga o mua me whakahoki mai nga uara o mua, ki te kore e arohia ana hua.
Ka karangahia he tikanga i runga i tetahi mea uaraOF. Mena kaore i kitea, kaore ranei e hoki mai he uara taketake, ka kiia te tikanga kiToko. Mena ko te tikanga kiToko kahore i kitea, e rapu ana Tuhinga o mua i roto i te tauira o te ahanoa, ka hoki ano nga mea katoa kia oti ra ano te tukatuka o te uara me nga uara katoa i roto i te korero ka maka ki te momo kotahi. Mena ka whakatinanahia e te ahanoa tetahi tikanga kiToko, ka whakahoki mai i te uara tuatahi, katahi ka whakamahia mo te hurihanga aho.Heoi, ko te hua o te whakamahi i tenei tikanga ehara i te mea he aho.
Hei tauira, mena mo te ahanoa 'obj' kua tautuhia te tikanga kiToko,
`var obj = { toString() { return "200" }}`
Tikanga kiToko ka whakahoki mai i tetahi aho, a, ka taapirihia he aho ki te tau, ka whiwhi tatou i te aho kapia:
`obj + 1 // '2001'`
`obj + 'a' // ‘200a'`
Engari ki te tuhi ano koe kiToko, kia whakahokia mai he nama e te tikanga, ina tapirihia te ahanoa, ka mahia he mahi pangarau me te hurihanga tau, ka puta te hua o te taapiri pangarau.
I roto i tenei take, ki te mahia e tatou te taapiri me te aho, ka mahia he huringa aho, ka whiwhi tatou i te aho kapia.
`obj + 'a' // ‘200a'`
Koinei te take mo te maha o nga hapa a nga kaiwhakamahi JavaScript hou.
Ko te tikanga kiToko Ka taea e koe te tuhi i tetahi mahi hei whakanui ake i te uara o naianei o te ahanoa ma te 1.
Te whakatinanatanga o te tuhinga, mena he rite te taurangi ki te 3, me te rite ano ki te 4.
Ina whakaritea ki te maka (==), ka mahia te tikanga i ia wa kiToko me te mahi whakanui uara. Na reira, me ia whakataurite ka whai ake, ka piki te uara. Ka taea te karo i tenei ma te whakamahi i te whakataurite kore-maka (===).
Whakataurite kore momo makanga
FAKATOKANGA. Kaua e Whakamahia te Whakataurite Maka.
Mo nga tuhinga uaua, penei i te Webhooks me te arorau uaua, me whakataurite ki te momo makanga, e taunaki ana kia tuhi i mua i nga arowhai mo nga uara e whakahoki mai ana i nga taurangi me te hapai i nga rereketanga me nga hapa.
Tukutuku Media
I te mutunga o te tau 2019 me te timatanga o te tau 2020, kua kaha te mahi a te roopu whakauru Zabbix ki te whakawhanake i nga Webhooks me nga whakaurunga o waho o te pouaka ka haere mai me te tohatoha Zabbix.
Ko te taenga mai o te tukatuka i roto i te JavaScript ka taea te whakarere i te nuinga o nga tuhinga o waho, a i tenei wa kei Zabbix ka taea e koe te tiki uara me te huri ki tetahi uara rereke.
Ko te tukatuka i roto i te Zabbix ka whakatinanahia e te waehere JavaScript, ka whakahiatohia ki te bytecode, ka huri hei mahi e mau ana i te uara kotahi hei tawhā. uara hei aho (kei roto i te aho he mati me te tau).
I te mea he mahi te putanga, i te mutunga o te tuhinga ka hiahiatia hoki.
Ka taea te whakamahi tonotono ritenga i roto i te waehere.
Ka taea te whakawhäiti i ngä rauemi ehara i te taumata pünaha whakahaere anake, engari i runga i te hötaka. Ko te mahinga o mua ka tohatohahia te 10 megabytes o te RAM me te tepe o te wa oma mo te 10 hēkona.
FAKATOKANGA. He nui te uara o te 10 hēkona, na te mea ko te kohikohi i nga mano tini o nga taonga raraunga i roto i te 1 hēkona i runga i te ahua "taimaha" i mua i te tukatuka ka taea te whakaroa i a Zabbix. No reira, kaore i te tūtohutia kia whakamahi i te tukatuka o mua ki te whakahaere i nga tuhinga JavaScript katoa na roto i nga mea e kiia nei ko nga huānga raraunga atarangi (tuemi hangarua), ka whakahaerehia hei mahi i mua i te tukatuka..
Ka taea e koe te tirotiro i to waehere ma te whakamatautau i mua i te tukatuka, ma te whakamahi ranei i te taputapu zabbix_js:
Tikanga: Tikina te pāmahana i roto i te Fahrenheit mai i te pūoko ki te rokiroki i roto i te Celsius.
I mua, ka hangahia e matou he taonga hei kohi i te pāmahana ki nga nekehanga Fahrenheit. Whai muri i tera, ko tetahi atu mea raraunga (kua tatauhia) ka huri i te Fahrenheit ki te Celsius ma te whakamahi i tetahi tauira.
Nga raruraru:
He mea tika ki te taapiri i nga huānga raraunga me te penapena i nga uara katoa i roto i te papanga raraunga.
Me whakaae koe ki nga waahi mo te "maatua" tuemi raraunga e tatauhia ana, e whakamahia ana i roto i te tauira, me te taonga raraunga tatau. Ki te kore, ka uru pea te mea kua oti te tatau ki te ahua kore tautoko, ki te tatau ranei i tetahi uara o mua, ka pa ki te pono o nga hua o te aroturuki.
Ko tetahi otinga ko te neke atu i nga waahi arowhai ngawari ki te aro ki nga waahi kua whakaritea hei whakarite kia arotakehia te mea kua oti te tatau i muri i te taonga ka whiwhi raraunga (i a maatau, ko te pāmahana i nga nekehanga Fahrenheit).
Engari ki te mea, hei tauira, ka whakamahia e matou te tauira ki te tirotiro i te maha o nga taputapu, a ka mahia te haki i ia 30 hēkona, ka "hacks" a Zabbix mo te 29 hēkona, a i te tuarua whakamutunga ka timata te tirotiro me te tatau. Ka hangaia he rarangi ka pa ki te mahi. Na reira, e taunaki ana kia whakamahia nga waahi kua whakaritea mena he tino tika.
I roto i tenei raruraru, ko te otinga tino pai ko te raina-kotahi te tukatuka JavaScript e huri ana i nga nekehanga Fahrenheit ki nga nekehanga Celsius:
`return (value - 32) * 5 / 9;`
He tere me te ngawari, kaore koe e hiahia ki te hanga i nga taonga raraunga kore me te pupuri i tetahi hitori ki runga, ka taea hoki e koe te whakamahi i nga waahi ngawari mo nga arowhai.
Engari, ki te mea i roto i tetahi ahuatanga whakapae he mea tika ki te taapiri i te huānga raraunga kua riro mai, hei tauira, me te tautuhi tonu i roto i te tonotono, me whai whakaaro ko te tawhā. uara ka roha hei aho. I roto i te mahi taapiri aho, ka hono noa nga aho e rua ki te kotahi.
`return (value + "{$EXAMPLE.MACRO}");`
Ki te whiwhi i te hua o te mahi pangarau, me huri nga momo o nga uara kua riro ki te whakatakotoranga tau. Mo tenei ka taea e koe te whakamahi i te mahi parseInt(), ka puta he tauoti, he mahi parseFloat(), ka whakaputa i te ira, i te mahi ranei tau, ka whakahoki i te tauoti, ira-ira ranei.
Mahi 2
Tikina te wa i roto i nga hēkona tae noa ki te mutunga o te tiwhikete.
Tikanga: ka tukuna e te ratonga he ra paunga tiwhikete ki te whakatakotoranga "Feb 12 12:33:56 2022 GMT".
I roto i te ECMAScript5 date.parse() ka whakaaehia he ra i roto i te whakatakotoranga ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ). Me maka he aho ki roto i te whakatakotoranga MMM DD YYYY HH:mm:ss ZZ
raruraru: Ko te uara o te marama ka whakaatuhia hei kuputuhi, kaua hei tau. Ko nga raraunga kei tenei whakatakotoranga kaore e whakaaetia e Duktape.
Tauira Otinga:
Tuatahi, ka whakapuakihia he taurangi e mau ana i te uara (ko te tuhinga katoa he whakapuakanga o nga taurangi kua whakarārangihia kua wehea e te piko).
I te rarangi tuatahi ka whiwhi tatou i te ra i roto i te tawhā uara ka wehea ki nga waahi ma te whakamahi i te tikanga ritua. No reira, ka whiwhi tatou i te huānga, ko ia huānga o te huānga, timata mai i te taupū 0, e hāngai ana ki tetahi huānga rā i mua i muri i te mokowā. wehe(0) - marama, wehe(1) - tau, wehe(2) - he aho whai wa, me etahi atu. Whai muri i tera, ka taea te uru atu ki ia huānga o te ra ma te taurangi o te huinga.
`var split = value.split(' '),`
Ia marama (i roto i te raupapa o nga wa) e rite ana ki te taurangi o tona turanga i roto i te rarangi (mai i te 0 ki te 11). Hei huri i te uara kupu ki te uara tau, ka tapirihia tetahi ki te taurangi marama (na te mea ka tatauhia nga marama ka timata i te 1). I tenei keehi, ko te korero me te taapiri o te kotahi ka mau ki roto i nga taiapa, na te mea ka kore he aho ka whiwhi, ehara i te tau. I te mutunga ka mahi matou poro() - tapahia te huinga mai i te pito ka waiho kia rua noa nga tohu (he mea nui mo nga marama me te tau mati-rua).
Ko nga raraunga kei roto i te whakatakotoranga ka puta ko te maha o nga hēkona mai i te tau 1970 ki etahi wa kei te heke mai. Kaore e taea te whakamahi i nga raraunga i roto i te whakatakotoranga kua riro mai i roto i nga kaitao, na te mea ka taea e Zabbix te mahi me nga tonotono anake {Rangi} и {Wā}, e whakahoki ana i te ra me te wa i roto i te whakatakotoranga ratarata-kaiwhakamahi.
Ka taea e tatou te tiki i te ra o naianei i roto i te JavaScript i roto i te whakatakotoranga Unix Timestamp me te tango mai i te ra paunga o te tiwhikete kia whiwhi i te maha o nga manomano mai i naianei tae noa ki te paunga o te tiwhikete.
`now = Date.now();`
Ka wehea e matou te uara kua riro mai ma te kotahi mano ki te tiki hēkona i Zabbix.
I roto i te keu, ka taea e koe te whakapūtā te kīanga 'whakamutunga' ka whai i te huinga mati e rite ana ki te maha o nga hēkona i roto i te waa e hiahia ana koe ki te whakautu, hei tauira, i nga wiki. No reira, ka whakamohio atu te keu ka pau te tiwhikete i roto i te wiki.
FAKATOKANGA. Kia tupato ki te whakamahinga parseInt() i roto i te mahi hokiki te huri i te tau hautau ka puta mai i te wehenga o nga manomano ki te tauoti. Ka taea hoki e koe te whakamahi parseFloat() me te rokiroki raraunga hautau.