ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript

ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript
ื˜ื™ื›ื•ืŸ ืื•ืกืงื•ื‘, ืžื”ื ื“ืก ืฆื•ื•ืช ื”ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ Zabbix

Zabbix ื”ื™ื ืคืœื˜ืคื•ืจืžื” ื”ื ื™ืชื ืช ืœื”ืชืืžื” ืื™ืฉื™ืช ื”ืžืฉืžืฉืช ืœื ื™ื˜ื•ืจ ื›ืœ ืกื•ื’ ืฉืœ ื ืชื•ื ื™ื. ืžืื– ื”ื’ืจืกืื•ืช ื”ืžื•ืงื“ืžื•ืช ื‘ื™ื•ืชืจ ืฉืœ Zabbix, ืœืžื ื”ืœื™ ื ื™ื˜ื•ืจ ื”ื™ื™ืชื” ืืช ื”ื™ื›ื•ืœืช ืœื”ืจื™ืฅ ืกืงืจื™ืคื˜ื™ื ืฉื•ื ื™ื ื‘ืืžืฆืขื•ืช ืคืขื•ืœื•ืช ืœื‘ื“ื™ืงื•ืช ืขืœ ืฆืžืชื™ ืจืฉืช ื™ืขื“. ื‘ืžืงื‘ื™ืœ, ื”ืฉืงืช ืกืงืจื™ืคื˜ื™ื ื”ื•ื‘ื™ืœื” ืœืžืกืคืจ ืงืฉื™ื™ื, ืœืจื‘ื•ืช ื›ืžื• ื”ืฆื•ืจืš ืœืชืžื•ืš ื‘ืกืงืจื™ืคื˜ื™ื, ืžืกื™ืจืชื ืœืฆืžืชื™ ืชืงืฉื•ืจืช ื•ืคืจื•ืงืกื™ ื•ื›ืŸ ืชืžื™ื›ื” ื‘ื’ืจืกืื•ืช ืฉื•ื ื•ืช.

JavaScript ืขื‘ื•ืจ Zabbix

ื‘ืืคืจื™ืœ 2019, Zabbix 4.2 ื”ื•ืฆื’ ืขื ืขื™ื‘ื•ื“ ืžืงื“ื™ื ืฉืœ JavaScript. ืื ืฉื™ื ืจื‘ื™ื ื”ืชืœื”ื‘ื• ืžื”ืจืขื™ื•ืŸ ืœื ื˜ื•ืฉ ืืช ื›ืชื™ื‘ืช ืกืงืจื™ืคื˜ื™ื ืฉืœื•ืงื—ื™ื ื ืชื•ื ื™ื ืœืื ืฉื”ื•, ืœืขื›ืœ ืื•ืชื ื•ืœืกืคืง ืื•ืชื ื‘ืคื•ืจืžื˜ ืฉ-Zabix ืžื‘ื™ืŸ, ื•ืœื‘ืฆืข ื‘ื“ื™ืงื•ืช ืคืฉื•ื˜ื•ืช ืฉื™ืงื‘ืœื• ื ืชื•ื ื™ื ืฉืื™ื ื ืžื•ื›ื ื™ื ืœืื—ืกื•ืŸ ื•ืขื™ื‘ื•ื“ ืขืœ-ื™ื“ื™ Zabbix, ื•ื›ืŸ ืœืื—ืจ ืžื›ืŸ ืขื‘ื“ื• ืืช ื–ืจื ื”ื ืชื•ื ื™ื ื”ื–ื” ื‘ืืžืฆืขื•ืช ื›ืœื™ Zabbix ื•-JavaScript. ื‘ืฉื™ืœื•ื‘ ืขื ื’ื™ืœื•ื™ ื‘ืจืžื” ื ืžื•ื›ื” ื•ืคืจื™ื˜ื™ื ืชืœื•ื™ื™ื ืฉื”ื•ืคื™ืขื• ื‘- Zabbix 3.4, ืงื™ื‘ืœื ื• ืงื•ื ืกืคื˜ ื’ืžื™ืฉ ืœืžื“ื™ ืœืžื™ื•ืŸ ื•ื ื™ื”ื•ืœ ื”ื ืชื•ื ื™ื ืฉื”ืชืงื‘ืœื•.

ื‘-Zabbix 4.4, ื›ื”ืžืฉืš ื”ื’ื™ื•ื ื™ ืœืขื™ื‘ื•ื“ ืžืงื“ื™ื ื‘-JavaScript, ื”ื•ืคื™ืขื” ืฉื™ื˜ืช ื”ื•ื“ืขื•ืช ื—ื“ืฉื” - Webhook, ืฉื‘ืืžืฆืขื•ืชื” ื ื™ืชืŸ ืœืฉืœื‘ ื”ื•ื“ืขื•ืช Zabbix ื‘ืงืœื•ืช ืขื ืืคืœื™ืงืฆื™ื•ืช ืฆื“ ืฉืœื™ืฉื™.

JavaScript ื•-Duktapes

ืžื“ื•ืข ื ื‘ื—ืจื• JavaScript ื•-Duktape? ืืคืฉืจื•ื™ื•ืช ืฉื•ื ื•ืช ืœืฉืคื•ืช ื•ืžื ื•ืขื™ื ื ืฉืงืœื•:

  • ืœื•ืื” - ืœื•ืื” 5.1
  • Lua - LuaJIT
  • Javascript - Duktape
  • Javascript - JerryScript
  • ืคื™ื™ืชื•ืŸ ืžื•ื˜ื‘ืข
  • ืคืจืœ ืžื•ื˜ื‘ืข

ืงืจื™ื˜ืจื™ื•ื ื™ ื”ื‘ื—ื™ืจื” ื”ืขื™ืงืจื™ื™ื ื”ื™ื• ืฉื›ื™ื—ื•ืช, ืงืœื•ืช ืฉื™ืœื•ื‘ ื”ืžื ื•ืข ื‘ืžื•ืฆืจ, ืฆืจื™ื›ืช ืžืฉืื‘ื™ื ื ืžื•ื›ื” ื•ื‘ื™ืฆื•ืขื™ื ื›ืœืœื™ื™ื ืฉืœ ื”ืžื ื•ืข, ื•ื‘ื˜ื™ื—ื•ืช ื”ื›ื ืกืช ืงื•ื“ ื‘ืฉืคื” ื–ื• ืœื ื™ื˜ื•ืจ. ื‘ื”ืชื‘ืกืก ืขืœ ืฉื™ืœื•ื‘ ื”ืื™ื ื“ื™ืงื˜ื•ืจื™ื, JavaScript ื–ื›ื” ื‘ืžื ื•ืข Duktape.

ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript

ืงืจื™ื˜ืจื™ื•ื ื™ ื‘ื—ื™ืจื” ื•ื‘ื“ื™ืงืช ื‘ื™ืฆื•ืขื™ื

ืชื›ื•ื ื•ืช ืฉืœ Duktape:

- ืกื˜ื ื“ืจื˜ื™ ECMAScript E5/E5.1
- ืžื•ื“ื•ืœื™ Zabbix ืขื‘ื•ืจ Duktape:

  • Zabbix.log() - ืžืืคืฉืจ ืœื›ืชื•ื‘ ื”ื•ื“ืขื•ืช ืขื ืจืžื•ืช ืคื™ืจื•ื˜ ืฉื•ื ื•ืช ื™ืฉื™ืจื•ืช ืœืชื•ืš ื™ื•ืžืŸ ื”ืฉืจืช ืฉืœ Zabbix, ืžื” ืฉืžืืคืฉืจ ืœืชืื ืฉื’ื™ืื•ืช, ืœืžืฉืœ, ื‘-Webhook, ืขื ืžืฆื‘ ื”ืฉืจืช.
  • CurlHttpRequest() - ืžืืคืฉืจ ืœื‘ืฆืข ื‘ืงืฉื•ืช HTTP ืœืจืฉืช, ืขืœื™ื”ืŸ ืžื‘ื•ืกืก ื”ืฉื™ืžื•ืฉ ื‘-Webhook.
  • atob() ื•-btoa() - ืžืืคืฉืจ ืœืš ืœืงื•ื“ื“ ื•ืœืคืขื ื— ืžื—ืจื•ื–ื•ืช ื‘ืคื•ืจืžื˜ Base64.

ื”ืขืจื”. Duktape ืขื•ืžื“ ื‘ืชืงื ื™ ACME. Zabbix ืžืฉืชืžืฉ ื‘ื’ืจืกืช 2015 ืฉืœ ื”ืชืกืจื™ื˜. ื”ืฉื™ื ื•ื™ื™ื ื”ื‘ืื™ื ื”ื ืžื™ื ื•ืจื™ื™ื, ื›ืš ืฉื ื™ืชืŸ ืœื”ืชืขืœื ืžื”ื..

ืงืกื ืฉืœ JavaScript

ื›ืœ ื”ืงืกื ืฉืœ JavaScript ื˜ืžื•ืŸ ื‘ื”ืงืœื“ื” ื“ื™ื ืžื™ืช ื•ื‘ืœื™ื”ื•ืง ืกื•ื’: ืžื—ืจื•ื–ืช, ืžืกืคืจื™ืช ื•ื‘ื•ืœื™ืื ื™ืช.

ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉืื™ืŸ ืฆื•ืจืš ืœื”ืฆื”ื™ืจ ืžืจืืฉ ืื™ื–ื” ืกื•ื’ ื”ืžืฉืชื ื” ืฆืจื™ืš ืœื”ื—ื–ื™ืจ ืขืจืš.

ื‘ืคืขื•ืœื•ืช ืžืชืžื˜ื™ื•ืช, ื”ืขืจื›ื™ื ื”ืžื•ื—ื–ืจื™ื ืขืœ ื™ื“ื™ ืื•ืคืจื˜ื•ืจื™ื ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืžื•ืžืจื™ื ืœืžืกืคืจื™ื. ื”ื—ืจื™ื’ ืœืคืขื•ืœื•ืช ื›ืืœื” ื”ื•ื ืชื•ืกืคืช, ืžื›ื™ื•ื•ืŸ ืฉืื ืœืคื—ื•ืช ืื—ื“ ืžื”ืžื•ื ื—ื™ื ื”ื•ื ืžื—ืจื•ื–ืช, ื”ืžืจืช ืžื—ืจื•ื–ืช ืžื•ื—ืœืช ืขืœ ื›ืœ ื”ืžื•ื ื—ื™ื.

ื”ืขืจื”. ื”ืฉื™ื˜ื•ืช ื”ืื—ืจืื™ื•ืช ืœื”ืžืจื•ืช ื›ืืœื” ืžื™ื•ืฉืžื•ืช ื‘ื“ืจืš ื›ืœืœ ื‘ืื‘ื•ืช ื˜ื™ืคื•ืก ื”ืื‘ ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜, ืขืจืš ืฉืœ ะธ toString. ืขืจืš ืฉืœ ื ืงืจื ื‘ืžื”ืœืš ื”ืžืจื” ืžืกืคืจื™ืช ื•ืชืžื™ื“ ืœืคื ื™ ื”ืฉื™ื˜ื” toString. ืฉื™ื˜ื” ืขืจืš ืฉืœ ื—ื™ื™ื‘ ืœื”ื—ื–ื™ืจ ืขืจื›ื™ื ืคืจื™ืžื™ื˜ื™ื‘ื™ื™ื, ืื—ืจืช ืžืชืขืœืžื™ื ืžื”ืชื•ืฆืื” ืฉืœื•.

ืฉื™ื˜ื” ื ืงืจืืช ืขืœ ืื•ื‘ื™ื™ืงื˜ ืขืจืš ืฉืœ. ืื ื”ื•ื ืœื ื ืžืฆื ืื• ืœื ืžื—ื–ื™ืจ ืขืจืš ืคืจื™ืžื™ื˜ื™ื‘ื™, ื”ืฉื™ื˜ื” ื ืงืจืืช toString. ืื ื”ืฉื™ื˜ื” toString ืœื ื ืžืฆื, ืžื—ืคืฉ ืขืจืš ืฉืœ ื‘ืื‘ ื”ื˜ื™ืคื•ืก ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜, ื•ื”ื›ืœ ื—ื•ื–ืจ ืขืœ ืขืฆืžื• ืขื“ ืœืกื™ื•ื ืขื™ื‘ื•ื“ ื”ืขืจืš ื•ื›ืœ ื”ืขืจื›ื™ื ื‘ื‘ื™ื˜ื•ื™ ื ื•ืฆืงื™ื ืœืื•ืชื• ืกื•ื’. ืื ื”ืื•ื‘ื™ื™ืงื˜ ืžื™ื™ืฉื ืฉื™ื˜ื” toString, ืฉืžื—ื–ื™ืจื” ืขืจืš ืคืจื™ืžื™ื˜ื™ื‘ื™, ืื– ื”ื•ื ืžืฉืžืฉ ืœื”ืžืจืช ืžื—ืจื•ื–ืช. ืขื ื–ืืช, ื”ืชื•ืฆืื” ืฉืœ ื™ื™ืฉื•ื ืฉื™ื˜ื” ื–ื• ืื™ื ื” ื‘ื”ื›ืจื— ืžื—ืจื•ื–ืช.

ืœื“ื•ื’ืžื”, ืื ืขื‘ื•ืจ ืขื‘ื•ืจ ืื•ื‘ื™ื™ืงื˜ 'objืžื•ื’ื“ืจืช ื”ืฉื™ื˜ื” toString,

`var obj = { toString() { return "200" }}` 

ะผะตั‚ะพะด toString ืžื—ื–ื™ืจื” ื‘ื“ื™ื•ืง ืžื—ืจื•ื–ืช, ื•ื›ืืฉืจ ืžื•ืกื™ืคื™ื ืžื—ืจื•ื–ืช ืขื ืžืกืคืจ, ื ืงื‘ืœ ืžื—ืจื•ื–ืช ืžื•ื“ื‘ืงืช:

`obj + 1 // '2001'` 

`obj + 'a' // โ€˜200a'`

ืื‘ืœ ืื ืชื›ืชื•ื‘ ืžื—ื“ืฉ toString, ื›ื“ื™ ืฉื”ืฉื™ื˜ื” ืžื—ื–ื™ืจื” ืžืกืคืจ, ื‘ื”ื•ืกืคืช ื”ืื•ื‘ื™ื™ืงื˜ ืชืชื‘ืฆืข ืคืขื•ืœื” ืžืชืžื˜ื™ืช ืขื ื”ืžืจื” ืžืกืคืจื™ืช ื•ืชืชืงื‘ืœ ืชื•ืฆืืช ื”ื—ื™ื‘ื•ืจ ื”ืžืชืžื˜ื™.

`var obj = { toString() { return 200 }}` 

`obj + 1 // '2001'`

ื‘ืžืงืจื” ื–ื”, ืื ื ื‘ืฆืข ื”ื•ืกืคื” ืขื ืžื—ืจื•ื–ืช, ืžืชื‘ืฆืขืช ื”ืžืจืช ืžื—ืจื•ื–ืช, ื•ื ืงื‘ืœ ืžื—ืจื•ื–ืช ืžื•ื“ื‘ืงืช.

`obj + 'a' // โ€˜200a'`

ื–ื• ื”ืกื™ื‘ื” ืœืžืกืคืจ ืจื‘ ืฉืœ ื˜ืขื•ื™ื•ืช ืฉืœ ืžืฉืชืžืฉื™ JavaScript ืžืชื—ื™ืœื™ื.

ื”ืฉื™ื˜ื” toString ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื” ืฉืชื’ื“ื™ืœ ืืช ื”ืขืจืš ื”ื ื•ื›ื—ื™ ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜ ื‘-1.

ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript
ื‘ื™ืฆื•ืข ื”ืกืงืจื™ืคื˜, ื‘ืชื ืื™ ืฉื”ืžืฉืชื ื” ืฉื•ื•ื” ืœ-3, ื•ื”ื•ื ื’ื ืฉื•ื•ื” ืœ-4.

ื‘ื”ืฉื•ื•ืื” ืœืงืืกื˜ (==), ื”ืฉื™ื˜ื” ืžื‘ื•ืฆืขืช ื‘ื›ืœ ืคืขื toString ืขื ืคื•ื ืงืฆื™ื™ืช ื”ืขืœืืช ืขืจืš. ื‘ื”ืชืื ืœื›ืš, ืขื ื›ืœ ื”ืฉื•ื•ืื” ืฉืœืื—ืจ ืžื›ืŸ, ื”ืขืจืš ืขื•ืœื”. ื ื™ืชืŸ ืœื”ื™ืžื ืข ืžื›ืš ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ื”ืฉื•ื•ืื” ืœืœื ื™ืฆื•ืง (===).

ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript
ื”ืฉื•ื•ืื” ืœืœื ื™ืฆื™ืงืช ืกื•ื’

ื”ืขืจื”. ืืœ ืชืฉืชืžืฉ ื‘ื”ืฉื•ื•ืืช ืฉื—ืงื ื™ื ืฉืœื ืœืฆื•ืจืš.

ืขื‘ื•ืจ ืกืงืจื™ืคื˜ื™ื ืžื•ืจื›ื‘ื™ื, ื›ืžื• Webhooks ืขื ืœื•ื’ื™ืงื” ืžื•ืจื›ื‘ืช, ื”ื“ื•ืจืฉื™ื ื”ืฉื•ื•ืื” ืขื ื™ืฆื™ืงืช ื˜ื™ืคื•ืกื™ื, ืžื•ืžืœืฅ ืœื›ืชื•ื‘ ืžืจืืฉ ื‘ื“ื™ืงื•ืช ืขื‘ื•ืจ ื”ืขืจื›ื™ื ื”ืžื—ื–ื™ืจื™ื ืžืฉืชื ื™ื ื•ืžื˜ืคืœื™ื ื‘ื—ื•ืกืจ ืขืงื‘ื™ื•ืช ื•ืฉื’ื™ืื•ืช.

Webhook Media

ื‘ืกื•ืฃ 2019 ื•ืชื—ื™ืœืช 2020, ืฆื•ื•ืช ื”ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ Zabbix ืคื™ืชื— ื‘ืื•ืคืŸ ืคืขื™ืœ ืืช Webhooks ื•ืื™ื ื˜ื’ืจืฆื™ื•ืช ืžื—ื•ืฅ ืœืงื•ืคืกื” ืฉืžื’ื™ืขื•ืช ืขื ื”ืคืฆืช Zabbix.

ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript
ืงื™ืฉื•ืจ ืืœ ืชื™ืขื•ื“

ืขื™ื‘ื•ื“ ืžื•ืงื“ื

  • ื”ื•ืคืขืช ื”ืขื™ื‘ื•ื“ ื”ืžืงื“ื™ื ื‘-JavaScript ืืคืฉืจื” ืœื ื˜ื•ืฉ ืืช ืจื•ื‘ ื”ืกืงืจื™ืคื˜ื™ื ื”ื—ื™ืฆื•ื ื™ื™ื, ื•ื›ื™ื•ื ื‘-Zabix ื ื™ืชืŸ ืœืงื‘ืœ ื›ืœ ืขืจืš ื•ืœื”ืžื™ืจ ืื•ืชื• ืœืขืจืš ืื—ืจ ืœื’ืžืจื™.
  • ืขื™ื‘ื•ื“ ืžืงื“ื™ื ื‘-Zabbix ืžื™ื•ืฉื ืขืœ ื™ื“ื™ ืงื•ื“ JavaScript, ืืฉืจ, ื›ืืฉืจ ื”ื•ื ืงื•ืžืคื™ืœื“ ืœืชื•ืš bytecode, ืžื•ืžืจ ืœืคื•ื ืงืฆื™ื” ืฉืœื•ืงื—ืช ืขืจืš ื‘ื•ื“ื“ ื›ืคืจืžื˜ืจ ืขืจืš ื›ืžื—ืจื•ื–ืช (ืžื—ืจื•ื–ืช ื™ื›ื•ืœื” ืœื”ื›ื™ืœ ื’ื ืกืคืจื” ื•ื’ื ืžืกืคืจ).
  • ืžื›ื™ื•ื•ืŸ ืฉื”ืคืœื˜ ื”ื•ื ืคื•ื ืงืฆื™ื”, ื‘ืกื•ืคื• ืฉืœ ื”ืกืงืจื™ืคื˜ ื ื“ืจืฉ ืœึทื—ึฒื–ื•ึนืจ.
  • ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื•ืช ืžืืงืจื• ืžื•ืชืืžื•ืช ืื™ืฉื™ืช ื‘ืงื•ื“.
  • ื ื™ืชืŸ ืœื”ื’ื‘ื™ืœ ืžืฉืื‘ื™ื ืœื ืจืง ื‘ืจืžืช ืžืขืจื›ืช ื”ื”ืคืขืœื”, ืืœื ื’ื ื‘ืื•ืคืŸ ืชื•ื›ื ื™ืชื™. ืฉืœื‘ ื”ืขื™ื‘ื•ื“ ื”ืžืงื“ื™ื ืžื•ืงืฆื” ืœื›ืœ ื”ื™ื•ืชืจ 10 ืžื’ื”-ื‘ื™ื™ื˜ ืฉืœ ื–ื™ื›ืจื•ืŸ RAM ื•ืžื’ื‘ืœืช ื–ืžืŸ ืจื™ืฆื” ืฉืœ 10 ืฉื ื™ื•ืช.

ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript

ื”ืขืจื”. ืขืจืš ื”ื–ืžืŸ ื”ืงืฆื•ื‘ ืฉืœ 10 ืฉื ื™ื•ืช ื”ื•ื ื“ื™ ื”ืจื‘ื”, ืžื›ื™ื•ื•ืŸ ืฉืื™ืกื•ืฃ ืžื•ืชื ื” ืฉืœ ืืœืคื™ ืคืจื™ื˜ื™ ื ืชื•ื ื™ื ื‘ืฉื ื™ื™ื” ืื—ืช ืœืคื™ ืชืจื—ื™ืฉ ืขื™ื‘ื•ื“ ืžื•ืงื“ื ืœืžื“ื™ "ื›ื‘ื“" ื™ื›ื•ืœ ืœื”ืื˜ ืืช Zabbix. ืœื›ืŸ, ืœื ืžื•ืžืœืฅ ืœื”ืฉืชืžืฉ ื‘ืขื™ื‘ื•ื“ ืžืงื“ื™ื ื›ื“ื™ ืœื‘ืฆืข ืกืงืจื™ืคื˜ื™ื ืžืœืื™ื ืฉืœ JavaScript ื“ืจืš ืžื” ืฉื ืงืจื ืจื›ื™ื‘ื™ ื ืชื•ื ื™ื ืฆืœืœื™ื (ืคืจื™ื˜ื™ ื“ืžื”), ื”ืžื•ืคืขืœื™ื ืจืง ื›ื“ื™ ืœื‘ืฆืข ืขื™ื‘ื•ื“ ืžืงื“ื™ื.

ืืชื” ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืืช ื”ืงื•ื“ ืฉืœืš ื‘ืืžืฆืขื•ืช ืžื‘ื—ืŸ ื”ืขื™ื‘ื•ื“ ื”ืžืงื“ื™ื ืื• ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช zabbix_js:

`zabbix_js -s *script-file -p *input-param* [-l log-level] [-t timeout]`

`zabbix_js -s script-file -i input-file [-l log-level] [-t timeout]`

`zabbix_js -h`

`zabbix_js -V`

ืžืฉื™ืžื•ืช ืžืขืฉื™ื•ืช

ืžืฉื™ืžื” 1

ื”ื—ืœืฃ ืคืจื™ื˜ ืžื—ื•ืฉื‘ ื‘ืขื™ื‘ื•ื“ ืžืงื“ื™ื.

ืžืฆื‘: ืงื‘ืœ ืืช ื”ื˜ืžืคืจื˜ื•ืจื” ื‘ืคืจื ื”ื™ื™ื˜ ืžื”ื—ื™ื™ืฉืŸ ืœืื—ืกื•ืŸ ื‘ืฆืœื–ื™ื•ืก.

ื‘ืขื‘ืจ ื”ื™ื™ื ื• ื™ื•ืฆืจื™ื ืคืจื™ื˜ ืฉืื•ืกืฃ ืืช ื”ื˜ืžืคืจื˜ื•ืจื” ื‘ืžืขืœื•ืช ืคืจื ื”ื™ื™ื˜. ืœืื—ืจ ืžื›ืŸ, ืคืจื™ื˜ ื ืชื•ื ื™ื ื ื•ืกืฃ (ืžื—ื•ืฉื‘) ืฉื™ืžื™ืจ ืคืจื ื”ื™ื™ื˜ ืœืฆืœื–ื™ื•ืก ื‘ืืžืฆืขื•ืช ื ื•ืกื—ื”.

ื‘ืขื™ื•ืช:

  • ื™ืฉ ืฆื•ืจืš ืœืฉื›ืคืœ ืจื›ื™ื‘ื™ ื ืชื•ื ื™ื ื•ืœืื—ืกืŸ ืืช ื›ืœ ื”ืขืจื›ื™ื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื.
  • ืขืœื™ืš ืœื”ืกื›ื™ื ืขืœ ื”ืžืจื•ื•ื—ื™ื ืขื‘ื•ืจ ืคืจื™ื˜ ื”ื ืชื•ื ื™ื "ื”ืื‘" ื”ืžื—ื•ืฉื‘ ื•ื”ืžืฉืžืฉ ื‘ื ื•ืกื—ื”, ื•ืขื‘ื•ืจ ืคืจื™ื˜ ื”ื ืชื•ื ื™ื ื”ืžื—ื•ืฉื‘ื™ื. ืื—ืจืช, ื”ืคืจื™ื˜ ื”ืžื—ื•ืฉื‘ ืขืœื•ืœ ืœื”ื™ื›ื ืก ืœืžืฆื‘ ืœื ื ืชืžืš ืื• ืœื—ืฉื‘ ืขืจืš ืงื•ื“ื, ืžื” ืฉื™ืฉืคื™ืข ืขืœ ืžื”ื™ืžื ื•ืช ืชื•ืฆืื•ืช ื”ื ื™ื˜ื•ืจ.

ืื—ื“ ื”ืคืชืจื•ื ื•ืช ื”ื™ื” ืœื”ืชืจื—ืง ืžืžืจื•ื•ื—ื™ ื‘ื“ื™ืงื” ื’ืžื™ืฉื™ื ืœื˜ื•ื‘ืช ืžืจื•ื•ื—ื™ื ืงื‘ื•ืขื™ื ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืฉื”ืคืจื™ื˜ ื”ืžื—ื•ืฉื‘ ื™ื•ืขืจืš ืื—ืจื™ ื”ืคืจื™ื˜ ืฉืžืงื‘ืœ ืืช ื”ื ืชื•ื ื™ื (ื‘ืžืงืจื” ืฉืœื ื•, ื”ื˜ืžืคืจื˜ื•ืจื” ื‘ืžืขืœื•ืช ืคืจื ื”ื™ื™ื˜).

ืื‘ืœ ืื ืœืžืฉืœ ื ืฉืชืžืฉ ื‘ืชื‘ื ื™ืช ื›ื“ื™ ืœื‘ื“ื•ืง ืžืกืคืจ ืจื‘ ืฉืœ ืžื›ืฉื™ืจื™ื, ื•ื”ื‘ื“ื™ืงื” ืžืชื‘ืฆืขืช ืื—ืช ืœ-30 ืฉื ื™ื•ืช, Zabbix "ืคื•ืจืฅ" ืœืžืฉืš 29 ืฉื ื™ื•ืช, ื•ื‘ืฉื ื™ื™ื” ื”ืื—ืจื•ื ื” ื”ื™ื ืžืชื—ื™ืœื” ืœื‘ื“ื•ืง ื•ืœื—ืฉื‘. ื–ื” ื™ื•ืฆืจ ืชื•ืจ ื•ืžืฉืคื™ืข ืขืœ ื”ื‘ื™ืฆื•ืขื™ื. ืœื›ืŸ, ืžื•ืžืœืฅ ืœื”ืฉืชืžืฉ ื‘ืžืจื•ื•ื—ื™ื ืงื‘ื•ืขื™ื ืจืง ืื ื–ื” ื‘ืืžืช ื ื—ื•ืฅ.

ื‘ื‘ืขื™ื” ื–ื•, ื”ืคืชืจื•ืŸ ื”ืื•ืคื˜ื™ืžืœื™ ื”ื•ื ืขื™ื‘ื•ื“ ืžืงื“ื™ื ืฉืœ JavaScript ื‘ืฉื•ืจื” ืื—ืช ื”ืžืžื™ืจ ืžืขืœื•ืช ืคืจื ื”ื™ื™ื˜ ืœืžืขืœื•ืช ืฆืœื–ื™ื•ืก:

`return (value - 32) * 5 / 9;`

ื–ื” ืžื”ื™ืจ ื•ืงืœ, ืืชื” ืœื ืฆืจื™ืš ืœื™ืฆื•ืจ ืคืจื™ื˜ื™ ื ืชื•ื ื™ื ืžื™ื•ืชืจื™ื ื•ืœืฉืžื•ืจ ืขืœื™ื”ื ื”ื™ืกื˜ื•ืจื™ื”, ื•ืชื•ื›ืœ ื’ื ืœื”ืฉืชืžืฉ ื‘ืžืจื•ื•ื—ื™ื ื’ืžื™ืฉื™ื ืœื‘ื“ื™ืงื•ืช.

ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript

`return (parseInt(value) + parseInt("{$EXAMPLE.MACRO}"));`

ืื‘ืœ, ืื ื‘ืžืฆื‘ ื”ื™ืคื•ืชื˜ื™ ื™ืฉ ืฆื•ืจืš ืœื”ื•ืกื™ืฃ ืืช ืจื›ื™ื‘ ื”ื ืชื•ื ื™ื ืฉื”ืชืงื‘ืœ, ืœืžืฉืœ, ืขื ื›ืœ ืงื‘ื•ืข ืžื•ื’ื“ืจ ื‘ืžืืงืจื•, ื™ืฉ ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืฉื”ืคืจืžื˜ืจ ืขืจืš ืžืชืจื—ื‘ ืœืžื—ืจื•ื–ืช. ื‘ืคืขื•ืœืช ื”ื•ืกืคืช ืžื—ืจื•ื–ืช, ืฉื ื™ ืžื—ืจื•ื–ื•ืช ืคืฉื•ื˜ ืžืฉื•ืœื‘ื•ืช ืœืื—ืช.

ืื ื• ืคื•ืชืจื™ื ื‘ืขื™ื•ืช ืžืขืฉื™ื•ืช ื‘-Zabix ื‘ืืžืฆืขื•ืช JavaScript

`return (value + "{$EXAMPLE.MACRO}");`

ื›ื“ื™ ืœืงื‘ืœ ืืช ื”ืชื•ืฆืื” ืฉืœ ืคืขื•ืœื” ืžืชืžื˜ื™ืช, ื™ืฉ ืฆื•ืจืš ืœื”ืžื™ืจ ืืช ืกื•ื’ื™ ื”ืขืจื›ื™ื ืฉื”ื•ืฉื’ื• ืœืคื•ืจืžื˜ ืžืกืคืจื™. ื‘ืฉื‘ื™ืœ ื–ื” ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” parseInt (), ืฉืžื™ื™ืฆืจ ืžืกืคืจ ืฉืœื, ืคื•ื ืงืฆื™ื” parseFloat (), ืฉืžื™ื™ืฆืจ ื ืงื•ื“ื” ืขืฉืจื•ื ื™ืช, ืื• ืคื•ื ืงืฆื™ื” ืžืกืคืจ, ื”ืžื—ื–ื™ืจ ืžืกืคืจ ืฉืœื ืื• ืขืฉืจื•ื ื™.

ืžืฉื™ืžื” 2

ืงื‘ืœ ืืช ื”ื–ืžืŸ ื‘ืฉื ื™ื•ืช ืขื“ ืœืกื™ื•ื ื”ืชืขื•ื“ื”.

ืžืฆื‘: ืฉื™ืจื•ืช ืžื ืคื™ืง ืชืืจื™ืš ืชืคื•ื’ื” ืฉืœ ืื™ืฉื•ืจ ื‘ืคื•ืจืžื˜ "12 ื‘ืคื‘ืจื•ืืจ 12:33:56 2022 GMT".

ื‘-ECMAScript5 ืชืืจื™ืš.parse () ืžืงื‘ืœ ืชืืจื™ืš ื‘ืคื•ืจืžื˜ ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ). ื™ืฉ ืฆื•ืจืš ืœื”ื˜ื™ืœ ืขืœื™ื• ืžื—ืจื•ื–ืช ื‘ืคื•ืจืžื˜ MMM DD YYYY HH:mm:ss ZZ

ื‘ืขื™ื”: ืขืจืš ื”ื—ื•ื“ืฉ ืžื‘ื•ื˜ื ื›ื˜ืงืกื˜, ืœื ื›ืžืกืคืจ. ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ื–ื” ืื™ื ื ืžืชืงื‘ืœื™ื ืขืœ ื™ื“ื™ Duktape.

ื“ื•ื’ืžื” ืœืคืชืจื•ืŸ:

  • ืงื•ื“ื ื›ืœ, ืžื›ืจื™ื–ื™ื ืขืœ ืžืฉืชื ื” ืฉืœื•ืงื— ืขืจืš (ื”ืกืงืจื™ืคื˜ ื›ื•ืœื• ื”ื•ื ื”ืฆื”ืจืช ืžืฉืชื ื™ื ื”ืžื•ืคืจื“ื™ื ื‘ืคืกื™ืงื™ื).

  • ื‘ืฉื•ืจื” ื”ืจืืฉื•ื ื” ื ืงื‘ืœ ืืช ื”ืชืืจื™ืš ื‘ืคืจืžื˜ืจ ืขืจืš ื•ืœื”ืคืจื™ื“ ืื•ืชื• ืขื ืจื•ื•ื—ื™ื ื‘ืฉื™ื˜ื” ืœืคืฆืœ. ืœืคื™ื›ืš, ืื ื• ืžืงื‘ืœื™ื ืžืขืจืš, ืฉื‘ื• ื›ืœ ืืœืžื ื˜ ืฉืœ ื”ืžืขืจืš, ื”ื—ืœ ื‘ืื™ื ื“ืงืก 0, ืžืชืื™ื ืœืจื›ื™ื‘ ืชืืจื™ืš ืื—ื“ ืœืคื ื™ ื•ืื—ืจื™ ืจื•ื•ื—. ืคื™ืฆื•ืœ (0) - ื—ื•ื“ืฉ, ืคื™ืฆื•ืœ (1) - ืžืกืคืจ, ืคื™ืฆื•ืœ (2) - ืžื—ืจื•ื–ืช ืขื ื–ืžืŸ ื•ื›ื•'. ืœืื—ืจ ืžื›ืŸ, ื ื™ืชืŸ ืœื’ืฉืช ืœื›ืœ ืจื›ื™ื‘ ืฉืœ ื”ืชืืจื™ืš ืขืœ ื™ื“ื™ ืื™ื ื“ืงืก ื‘ืžืขืจืš.

`var split = value.split(' '),`

  • ื›ืœ ื—ื•ื“ืฉ (ื‘ืกื“ืจ ื›ืจื•ื ื•ืœื•ื’ื™) ืžืชืื™ื ืœืื™ื ื“ืงืก ืžื™ืงื•ืžื• ื‘ืžืขืจืš (ืž-0 ืขื“ 11). ื›ื“ื™ ืœื”ืžื™ืจ ืขืจืš ื˜ืงืกื˜ ืœืขืจืš ืžืกืคืจื™, ืžืชื•ื•ืกืฃ ืื—ื“ ืœืื™ื ื“ืงืก ื”ื—ื•ื“ืฉ (ื›ื™ ื—ื•ื“ืฉื™ื ืžืžื•ืกืคืจื™ื ื”ื—ืœ ืž-1). ื‘ืžืงืจื” ื–ื”, ื”ื‘ื™ื˜ื•ื™ ื‘ืชื•ืกืคืช ืฉืœ ืื—ื“ ื ืœืงื— ื‘ืกื•ื’ืจื™ื™ื, ื›ื™ ืื—ืจืช ืชืชืงื‘ืœ ืžื—ืจื•ื–ืช, ืœื ืžืกืคืจ. ื‘ืกื•ืฃ ืื ื—ื ื• ืขื•ืฉื™ื ืคืจื•ืกื”() - ื—ื•ืชื›ื™ื ืืช ื”ืžืขืจืš ืžื”ืงืฆื” ื›ื“ื™ ืœื”ืฉืื™ืจ ืจืง ืฉื ื™ ืชื•ื•ื™ื (ืžื” ืฉื—ืฉื•ื‘ ืœื—ื•ื“ืฉื™ื ืขื ืžืกืคืจ ื“ื• ืกืคืจืชื™).

`MONTHS_LIST = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],`

`month_index = ('0' + (MONTHS_LIST.indexOf(split[0]) + 1)).slice(-2),`

  • ืื ื• ื™ื•ืฆืจื™ื ืžื—ืจื•ื–ืช ื‘ืคื•ืจืžื˜ ISO ืžื”ืขืจื›ื™ื ื”ืžืชืงื‘ืœื™ื ืขืœ ื™ื“ื™ ื”ื•ืกืคื” ืจื’ื™ืœื” ืฉืœ ืžื—ืจื•ื–ื•ืช ื‘ืกื“ืจ ื”ืžืชืื™ื.

`ISOdate = split[3] + '-' + month_index + '-' + split[1] + 'T' + split[2],`

ื”ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ื”ืžืชืงื‘ืœ ื”ื ืžืกืคืจ ื”ืฉื ื™ื•ืช ืžืฉื ืช 1970 ื•ืขื“ ืœื ืงื•ื“ื” ื›ืœืฉื”ื™ ื‘ืขืชื™ื“. ื–ื” ื›ืžืขื˜ ื‘ืœืชื™ ืืคืฉืจื™ ืœื”ืฉืชืžืฉ ื‘ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืฉื”ืชืงื‘ืœ ื‘ื˜ืจื™ื’ืจื™ื, ื›ื™ Zabbix ืžืืคืฉืจ ืœืš ืœืคืขื•ืœ ืจืง ืขื ืคืงื•ื“ื•ืช ืžืืงืจื• {ืชึทืึฒืจึดื™ืš} ะธ {ื–ึฐืžึทืŸ}, ื”ืžื—ื–ื™ืจื™ื ืืช ื”ืชืืจื™ืš ื•ื”ืฉืขื” ื‘ืคื•ืจืžื˜ ื™ื“ื™ื“ื•ืชื™ ืœืžืฉืชืžืฉ.

  • ืœืื—ืจ ืžื›ืŸ ื ื•ื›ืœ ืœืงื‘ืœ ืืช ื”ืชืืจื™ืš ื”ื ื•ื›ื—ื™ ื‘-JavaScript ื‘ืคื•ืจืžื˜ Unix Timestamp ื•ืœื”ื—ืกื™ืจ ืื•ืชื• ืžืชืืจื™ืš ื”ืชืคื•ื’ื” ืฉืœ ื”ืื™ืฉื•ืจ ื”ืžืชืงื‘ืœ ื›ื“ื™ ืœืงื‘ืœ ืืช ืžืกืคืจ ื”ืืœืคื™ื•ืช ื”ืฉื ื™ื•ืช ืžืขื›ืฉื™ื• ื•ืขื“ ืฉื”ืื™ืฉื•ืจ ื™ืคื•ื’.

`now = Date.now();`

  • ืื ื• ืžื—ืœืงื™ื ืืช ื”ืขืจืš ื”ืžืชืงื‘ืœ ื‘ืืœืฃ ื›ื“ื™ ืœืงื‘ืœ ืฉื ื™ื•ืช ื‘- Zabbix.

`return parseInt((Date.parse(ISOdate) - now) / 1000);`

ื‘ื˜ืจื™ื’ืจ, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืืช ื”ื‘ื™ื˜ื•ื™ 'ืื—ืจื•ืŸ' ื•ืื—ืจื™ื• ืงื‘ื•ืฆืช ืกืคืจื•ืช ื”ืชื•ืืžืช ืœืžืกืคืจ ื”ืฉื ื™ื•ืช ื‘ืชืงื•ืคื” ืฉืืœื™ื” ืชืจืฆื” ืœื”ื’ื™ื‘, ืœืžืฉืœ ื‘ืฉื‘ื•ืขื•ืช. ืœืคื™ื›ืš, ื”ื˜ืจื™ื’ืจ ื™ื•ื“ื™ืข ื›ื™ ืชื•ืงืฃ ื”ืื™ืฉื•ืจ ื™ืคื•ื’ ื‘ืขื•ื“ ืฉื‘ื•ืข.

ื”ืขืจื”. ืฉื™ืžื• ืœื‘ ืœืฉื™ืžื•ืฉ parseInt () ื‘ืชืคืงื•ื“ ืœึทื—ึฒื–ื•ึนืจืœื”ืžื™ืจ ืืช ื”ืžืกืคืจ ื”ืฉื‘ืจื™ ื”ื ื•ื‘ืข ืžื—ืœื•ืงืช ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื” ืœืžืกืคืจ ืฉืœื. ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืฉืชืžืฉ parseFloat () ื•ืœืื—ืกืŸ ื ืชื•ื ื™ื ื—ืœืงื™ื™ื.

ืฆืคื• ื‘ื“ื•ื—

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”