рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ

рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ
рдЯрд┐рдЦреЙрди рдЙрд╕рдХреЛрд╡реНрд╣, Zabbix рдПрдХрддреНрд░реАрдХрд░рдг рд╕рдВрдШ рдЕрднрд┐рдпрдВрддрд╛

Zabbix рдПрдХ рд╕рд╛рдиреБрдХреВрд▓ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрд╣реЗ рдЬреЛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдбреЗрдЯрд╛рдЪреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. Zabbix рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдкрд╛рд╕реВрди, рджреЗрдЦрд░реЗрдЦ рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрдирд╛ рд╡рд┐рд╡рд┐рдз рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рджреНрд╡рд╛рд░реЗ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЖрд╣реЗ рдХреНрд░рд┐рдпрд╛ рд▓рдХреНрд╖реНрдп рдиреЗрдЯрд╡рд░реНрдХ рдиреЛрдбреНрд╕рдЪреНрдпрд╛ рддрдкрд╛рд╕рдгреАрд╕рд╛рдареА. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдБрдЪ рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ, рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди рдиреЛрдбреНрд╕ рдЖрдгрд┐ рдкреНрд░реЙрдХреНрд╕реАрдВрдирд╛ рддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рддрд░рдг, рддрд╕реЗрдЪ рд╡рд┐рд╡рд┐рдз рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдпрд╛рд╕рд╣ рдЕрдиреЗрдХ рдЕрдбрдЪрдгреА рдирд┐рд░реНрдорд╛рдг рдЭрд╛рд▓реНрдпрд╛.

Zabbix рд╕рд╛рдареА JavaScript

рдПрдкреНрд░рд┐рд▓ 2019 рдордзреНрдпреЗ, Zabbix 4.2 JavaScript рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧрд╕рд╣ рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ. рдХреЛрдареЗрддрд░реА рдбреЗрдЯрд╛ рдШреЗрдКрди рдЬрд╛рдгрд╛рд▒реНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рдгреЗ рд╕реЛрдбреВрди рджреЗрдгреЗ, рддреЗ рдкрдЪрд╡рдгреЗ рдЖрдгрд┐ Zabbix рд▓рд╛ рд╕рдордЬреЗрд▓ рдЕрд╢рд╛ рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ, рдЖрдгрд┐ Zabbix рджреНрд╡рд╛рд░реЗ рд╕реНрдЯреЛрд░реЗрдЬ рдЖрдгрд┐ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧрд╕рд╛рдареА рддрдпрд╛рд░ рдирд╕рд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрд▓ рдЕрд╢рд╛ рд╕реЛрдкреНрдпрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛ рдХрд░рд╛рдпрдЪреНрдпрд╛ рдХрд▓реНрдкрдиреЗрдиреЗ рдмрд░реЗрдЪ рд▓реЛрдХ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдЭрд╛рд▓реЗ. рдирдВрддрд░ Zabbix рдЖрдгрд┐ JavaScript рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдпрд╛ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдорд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рд╛. Zabbix 3.4 рдордзреНрдпреЗ рджрд┐рд╕рдгрд╛рд░реНтАНрдпрд╛ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╢реЛрдз рдЖрдгрд┐ рдЖрд╢реНрд░рд┐рдд рд╡рд╕реНрддреВрдВрдЪреНрдпрд╛ рд╕рдВрдпреЛрдЧрд╛рдиреЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪреА рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд░реНтАНрдпрд╛рдкреИрдХреА рд▓рд╡рдЪрд┐рдХ рд╕рдВрдХрд▓реНрдкрдирд╛ рдорд┐рд│рд╛рд▓реА.

Zabbix 4.4 рдордзреНрдпреЗ, JavaScript рдордзреНрдпреЗ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧрдЪреА рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░рдВрддрд░рддрд╛ рдореНрд╣рдгреВрди, рдПрдХ рдирд╡реАрди рд╕реВрдЪрдирд╛ рдкрджреНрдзрдд рдЖрд▓реА рдЖрд╣реЗ - Webhook, рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╣ Zabbix рд╕реВрдЪрдирд╛ рд╕рд╣рдЬрдкрдгреЗ рдПрдХрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

JavaScript рдЖрдгрд┐ Duktapes

JavaScript рдЖрдгрд┐ Duktape рдХрд╛ рдирд┐рд╡рдбрд▓реЗ рдЧреЗрд▓реЗ? рднрд╛рд╖рд╛ рдЖрдгрд┐ рдЗрдВрдЬрд┐рдирд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рдкрд░реНрдпрд╛рдпрд╛рдВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛:

  • рд▓реБрдЖ - рд▓реБрдЖ 5.1
  • рд▓реБрдЖ - LuaJIT
  • Javascript - Duktape
  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ - рдЬреЗрд░реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ
  • рдПрдореНрдмреЗрдбреЗрдб рдкрд╛рдпрдерди
  • рдПрдореНрдмреЗрдбреЗрдб рдкрд░реНрд▓

рдореБрдЦреНрдп рдирд┐рд╡рдб рдирд┐рдХрд╖ рдореНрд╣рдгрдЬреЗ рдкреНрд░рдЪрд▓рд┐рддрддрд╛, рдЙрддреНрдкрд╛рджрдирд╛рдордзреНрдпреЗ рдЗрдВрдЬрд┐рдирдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг рд╕реБрд▓рдн рдХрд░рдгреЗ, рдХрдореА рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдЖрдгрд┐ рдЗрдВрдЬрд┐рдирдЪреА рдПрдХреВрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдгрд┐ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧрдордзреНрдпреЗ рдпрд╛ рднрд╛рд╖реЗрдд рдХреЛрдб рд╕рд╛рджрд░ рдХрд░рдгреНрдпрд╛рдЪреА рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛. рдирд┐рд░реНрджреЗрд╢рдХрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдпреЛрдЬрдирд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд, JavaScript рдиреЗ рдбрдХреНрдЯреЕрдк рдЗрдВрдЬрд┐рдирд╡рд░ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓рд╛.

рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ

рдирд┐рд╡рдб рдирд┐рдХрд╖ рдЖрдгрд┐ рдХрд╛рдордЧрд┐рд░реА рдЪрд╛рдЪрдгреА

Duktap рдЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ:

- рдорд╛рдирдХ ECMAScript E5/E5.1
- рдбрдХреНрдЯреЕрдкрд╕рд╛рдареА рдЭрдмреНрдмреАрдХреНрд╕ рдореЙрдбреНрдпреВрд▓реНрд╕:

  • Zabbix.log() - рддреБрдореНрд╣рд╛рд▓рд╛ рдереЗрдЯ Zabbix рд╕рд░реНрд╡реНрд╣рд░ рд▓реЙрдЧрдордзреНрдпреЗ рддрдкрд╢реАрд▓рд╛рдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рд╕реНрддрд░рд╛рдВрд╕рд╣ рд╕рдВрджреЗрд╢ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рддреНрд░реБрдЯреАрдВрд╢реА рд╕рдВрдмрдВрдз рдЬреЛрдбрдгреЗ рд╢рдХреНрдп рд╣реЛрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡реЗрдмрд╣реБрдХрдордзреНрдпреЗ, рд╕рд░реНрд╡реНрд╣рд░ рд╕реНрдерд┐рддреАрд╕рд╣.
  • CurlHttpRequest() - рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ HTTP рд╡рд┐рдирдВрддреНрдпрд╛ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ, рдЬреНрдпрд╛рд╡рд░ Webhook рдЪрд╛ рд╡рд╛рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ.
  • atob() рдЖрдгрд┐ btoa() - рддреБрдореНрд╣рд╛рд▓рд╛ рдмреЗрд╕64 рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдПрдиреНрдХреЛрдб рдЖрдгрд┐ рдбреАрдХреЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.

рдЯреАрдк. Duktape ACME рдорд╛рдирдХрд╛рдВрдЪреЗ рдкрд╛рд▓рди рдХрд░рддреЗ. Zabbix рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреА 2015 рдЖрд╡реГрддреНрддреА рд╡рд╛рдкрд░рддреЗ. рддреНрдпрд╛рдирдВрддрд░рдЪреЗ рдмрджрд▓ рдХрд┐рд░рдХреЛрд│ рдЖрд╣реЗрдд, рддреНрдпрд╛рдореБрд│реЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ..

JavaScript рдЬрд╛рджреВ

JavaScript рдЪреА рд╕рд░реНрд╡ рдЬрд╛рджреВ рдбрд╛рдпрдиреЕрдорд┐рдХ рдЯрд╛рдпрдкрд┐рдВрдЧ рдЖрдгрд┐ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧрдордзреНрдпреЗ рдЖрд╣реЗ: рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЖрдгрд┐ рдмреБрд▓рд┐рдпрди.

рдпрд╛рдЪрд╛ рдЕрд░реНрде рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдиреЗ рдХреЛрдгрддреНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреА рд╡реНрд╣реЕрд▓реНрдпреВ рдкрд░рдд рдХрд░рд╛рд╡реА рд╣реЗ рдЖрдзреАрдЪ рдШреЛрд╖рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА.

рдЧрдгрд┐рддреАрдп рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ, рдлрдВрдХреНрд╢рди рдСрдкрд░реЗрдЯрд░рджреНрд╡рд╛рд░реЗ рдкрд░рдд рдХреЗрд▓реЗрд▓реА рдореВрд▓реНрдпреЗ рд╕рдВрдЦреНрдпрд╛рдВрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рддрд╛рдд. рдЕрд╢рд╛ рдСрдкрд░реЗрд╢рдиреНрд╕рдирд╛ рдЕрдкрд╡рд╛рдж рдЬреЛрдбрдгреЗ рдЖрд╣реЗ, рдХрд╛рд░рдг рдХрд┐рдорд╛рди рдПрдХ рдЕрдЯреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рд╕рд░реНрд╡ рдЕрдЯреАрдВрд╡рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

рдЯреАрдк. рдЕрд╢рд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╛рдВрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкрджреНрдзрддреА рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рдореВрд│ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкрдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЪреА рдХрд┐рдВрдордд ╨╕ toString. рдЪреА рдХрд┐рдВрдордд рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд░реВрдкрд╛рдВрддрд░рдг рджрд░рдореНрдпрд╛рди рдЖрдгрд┐ рдиреЗрд╣рдореА рдкрджреНрдзрддреАрдЪреНрдпрд╛ рдЖрдзреА рдХреЙрд▓ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ toString. рдкрджреНрдзрдд рдЪреА рдХрд┐рдВрдордд рдЖрджрд┐рдо рдореВрд▓реНрдпреЗ рдкрд░рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЕрдиреНрдпрдерд╛ рддреНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рджреБрд░реНрд▓рдХреНрд╖рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓.

рдСрдмреНрдЬреЗрдХреНрдЯрд╡рд░ рдкрджреНрдзрдд рдореНрд╣рдгрддрд╛рдд рдЪреА рдХрд┐рдВрдордд. рдЬрд░ рддреЗ рд╕рд╛рдкрдбрд▓реЗ рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ рдЖрджрд┐рдо рдореВрд▓реНрдп рдкрд░рдд рдХреЗрд▓реЗ рдирд╛рд╣реА рддрд░, рдкрджреНрдзрдд рдореНрд╣рдгрддрд╛рдд toString. рдЬрд░ рдкрджреНрдзрдд toString рд╕рд╛рдкрдбрд▓реЗ рдирд╛рд╣реА, рд╢реЛрдзрдд рдЖрд╣реЗ рдЪреА рдХрд┐рдВрдордд рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкрдордзреНрдпреЗ, рдЖрдгрд┐ рдореВрд▓реНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реНрдг рд╣реЛрдИрдкрд░реНрдпрдВрдд рдЖрдгрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдордзреАрд▓ рд╕рд░реНрд╡ рдореВрд▓реНрдпреЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░рд╛рдд рдЯрд╛рдХрд▓реНрдпрд╛ рдЬрд╛рдИрдкрд░реНрдпрдВрдд рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд╣реЛрддреЗ. рдЬрд░ рдСрдмреНрдЬреЗрдХреНрдЯрдиреЗ рдкрджреНрдзрдд рд▓рд╛рдЧреВ рдХреЗрд▓реА toString, рдЬреЗ рдПрдХ рдЖрджрд┐рдо рдореВрд▓реНрдп рджреЗрддреЗ, рдирдВрддрд░ рддреЗрдЪ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдгрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рддрдерд╛рдкрд┐, рд╣реА рдкрджреНрдзрдд рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд╕рд╛рдареА 'рд╣рд░рдХрдд' рдкрджреНрдзрдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ 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 рдиреЗ рд╡рд╛рдврд╡реЗрд▓.

рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ
рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдЬрд░ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ 3 рдЪреНрдпрд╛ рд╕рдорд╛рди рдЕрд╕реЗрд▓ рдЖрдгрд┐ рддреЗ 4 рдЪреНрдпрд╛ рд╕рдорд╛рди рдЕрд╕реЗрд▓.

рдХрд╛рд╕реНрдЯ (==) рд╢реА рддреБрд▓рдирд╛ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдкрджреНрдзрдд рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реА рдЬрд╛рддреЗ toString рдореВрд▓реНрдп рд╡рд╛рдв рдХрд╛рд░реНрдпрд╛рд╕рд╣. рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рддреБрд▓рдиреЗрд╕рд╣, рдореВрд▓реНрдп рд╡рд╛рдврддреЗ. рдиреЙрди-рдХрд╛рд╕реНрдЯ рддреБрд▓рдирд╛ (===) рд╡рд╛рдкрд░реВрди рд╣реЗ рдЯрд╛рд│рддрд╛ рдпреЗрддреЗ.

рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ
рдкреНрд░рдХрд╛рд░ рдХрд╛рд╕реНрдЯрд┐рдВрдЧрд╢рд┐рд╡рд╛рдп рддреБрд▓рдирд╛

рдЯреАрдк. рдХрд╛рд╕реНрдЯ рддреБрд▓рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХрдкрдгреЗ рд╡рд╛рдкрд░реВ рдирдХрд╛.

рдХреНрд▓рд┐рд╖реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рд╕рд╛рдареА, рдЬрд╕реЗ рдХреА рдХреНрд▓рд┐рд╖реНрдЯ рд▓реЙрдЬрд┐рдХрд╕рд╣ рд╡реЗрдмрд╣реВрдХреНрд╕, рдЬреНрдпрд╛рдВрдирд╛ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧрд╢реА рддреБрд▓рдирд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдкрд░рдд рдХрд░рдгрд╛рд▒реНрдпрд╛ рдЖрдгрд┐ рд╡рд┐рд╕рдВрдЧрддреА рдЖрдгрд┐ рддреНрд░реБрдЯреА рд╣рд╛рддрд╛рд│рдгрд╛рд▒реНрдпрд╛ рдореВрд▓реНрдпрд╛рдВрд╕рд╛рдареА рдкреВрд░реНрд╡-рд▓реЗрдЦрди рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реА рдЬрд╛рддреЗ.

рд╡реЗрдмрд╣реБрдХ рдореАрдбрд┐рдпрд╛

2019 рдЪреНрдпрд╛ рдЙрддреНрддрд░рд╛рд░реНрдзрд╛рдд рдЖрдгрд┐ 2020 рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд╕, Zabbix рдЗрдВрдЯрд┐рдЧреНрд░реЗрд╢рди рдЯреАрдо рд╕рдХреНрд░рд┐рдпрдкрдгреЗ Webhooks рдЖрдгрд┐ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдПрдХреАрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ рдЬреЗ Zabbix рд╡рд┐рддрд░рдгрд╛рд╕рд╣ рдпреЗрддрд╛рдд.

рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ
рдЪрд╛ рджреБрд╡рд╛ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг

рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рд┐рдпрд╛

  • JavaScript рдордзреНрдпреЗ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧрдЪреНрдпрд╛ рдЖрдЧрдордирд╛рдиреЗ рдмрд╣реБрддреЗрдХ рдмрд╛рд╣реНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЛрдбрдгреЗ рд╢рдХреНрдп рдЭрд╛рд▓реЗ рдЖрдгрд┐ рд╕рдзреНрдпрд╛ Zabbix рдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдгрддреЗрд╣реА рдореВрд▓реНрдп рдорд┐рд│реВ рд╢рдХрддреЗ рдЖрдгрд┐ рддреЗ рдкреВрд░реНрдгрдкрдгреЗ рднрд┐рдиреНрди рдореВрд▓реНрдпрд╛рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.
  • Zabbix рдордзреНрдпреЗ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдбрджреНрд╡рд╛рд░реЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдЬреЗ, рдЬреЗрд╡реНрд╣рд╛ рдмрд╛рдпрдХреЛрдбрдордзреНрдпреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рддреЗрд╡реНрд╣рд╛ рдПрдХрд╛ рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЬреЗ рдкреЕрд░рд╛рдореАрдЯрд░ рдореНрд╣рдгреВрди рдПрдХрд▓ рдореВрд▓реНрдп рдШреЗрддреЗ. рдореВрд▓реНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореНрд╣рдгреВрди (рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рдЕрдВрдХ рдЖрдгрд┐ рд╕рдВрдЦреНрдпрд╛ рджреЛрдиреНрд╣реА рдЕрд╕реВ рд╢рдХрддрд╛рдд).
  • рдЖрдЙрдЯрдкреБрдЯ рд╣реЗ рдлрдВрдХреНрд╢рди рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдкрд░рдд.
  • рдХреЛрдбрдордзреНрдпреЗ рд╕рд╛рдиреБрдХреВрд▓ рдореЕрдХреНрд░реЛ рд╡рд╛рдкрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ.
  • рд╕рдВрд╕рд╛рдзрдиреЗ рдХреЗрд╡рд│ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯреАрдо рд╕реНрддрд░рд╛рд╡рд░рдЪ рдирд╡реНрд╣реЗ рддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЕрдЯрд┐рдХрд░рд┐рддреНрдпрд╛ рджреЗрдЦреАрд▓ рдорд░реНрдпрд╛рджрд┐рдд рдЕрд╕реВ рд╢рдХрддрд╛рдд. рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдЯреЗрдкрдордзреНрдпреЗ рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд 10 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ RAM рдЖрдгрд┐ 10 рд╕реЗрдХрдВрджрд╛рдВрдЪреА рд░рди рдЯрд╛рдИрдо рдорд░реНрдпрд╛рджрд╛ рджрд┐рд▓реА рдЬрд╛рддреЗ.

рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ

рдЯреАрдк. 10 рд╕реЗрдХрдВрджрд╛рдВрдЪреЗ рдХрд╛рд▓рдмрд╛рд╣реНрдп рдореВрд▓реНрдп рдмрд░реЗрдЪ рдЖрд╣реЗ, рдХрд╛рд░рдг рдРрд╡рдЬреА "рдЬрдб" рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкрд░рд┐рд╕реНрдерд┐рддреАрдиреБрд╕рд╛рд░ 1 рд╕реЗрдХрдВрджрд╛рдд рд╕рд╢рд░реНрдд рд╣рдЬрд╛рд░реЛ рдбреЗрдЯрд╛ рдЖрдпрдЯрдордЪреЗ рд╕рдВрдХрд▓рди рдЭрдмреНрдмреАрдХреНрд╕рдЪреА рдЧрддреА рдХрдореА рдХрд░реВ рд╢рдХрддреЗ. рдореНрд╣рдгреВрдирдЪ, рддрдерд╛рдХрдерд┐рдд рд╢реЕрдбреЛ рдбреЗрдЯрд╛ рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ (рдбрдореА рдЖрдпрдЯрдо) рджреНрд╡рд╛рд░реЗ рдкреВрд░реНрдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реА, рдЬреА рдХреЗрд╡рд│ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЪрд╛рд▓рд╡рд┐рд▓реА рдЬрд╛рддреЗ..

рддреБрдореНрд╣реА рддреБрдордЪрд╛ рдХреЛрдб рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪрд╛рдЪрдгреАрджреНрд╡рд╛рд░реЗ рдХрд┐рдВрд╡рд╛ рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡рд╛рдкрд░реВрди рддрдкрд╛рд╕реВ рд╢рдХрддрд╛ 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;`

рд╣реЗ рдЬрд▓рдж рдЖрдгрд┐ рд╕реЛрдкреЗ рдЖрд╣реЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдЖрдпрдЯрдо рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рдЗрддрд┐рд╣рд╛рд╕ рдареЗрд╡рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА рдЖрдгрд┐ рддреБрдореНрд╣реА рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рд▓рд╡рдЪрд┐рдХ рдЕрдВрддрд░рд╛рд▓ рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛.

рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ

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

рдкрд░рдВрддреБ, рдЬрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдШрдЯрдХ рдЬреЛрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдореЕрдХреНрд░реЛрдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕реНрдерд┐рд░рддреЗрд╕рд╣, рд╣реЗ рдкреЕрд░рд╛рдореАрдЯрд░ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдореВрд▓реНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рд╡рд┐рд╕реНрддрд╛рд░рддреЗ. рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕреЕрдбрд┐рд╢рди рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ, рджреЛрди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдлрдХреНрдд рдПрдХрд╛рдордзреНрдпреЗ рдПрдХрддреНрд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд.

рдЖрдореНрд╣реА JavaScript рд╡рд╛рдкрд░реВрди Zabbix рдордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ

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

рдЧрдгрд┐рддреАрдп рдСрдкрд░реЗрд╢рдирдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпрд╛рдВрдЪреЗ рдкреНрд░рдХрд╛рд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕реНрд╡рд░реВрдкрд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдлрдВрдХреНрд╢рди рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ parseInt(), рдЬреЗ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ, рдПрдХ рдХрд╛рд░реНрдп рддрдпрд╛рд░ рдХрд░рддреЗ рдкрд╛рд░реНрд╕рдлреНрд▓реЛрдЯ(), рдЬреЗ рджрд╢рд╛рдВрд╢ рдХрд┐рдВрд╡рд╛ рдХрд╛рд░реНрдп рддрдпрд╛рд░ рдХрд░рддреЗ рд╕рдВрдЦреНрдпрд╛, рдЬреЗ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд┐рдВрд╡рд╛ рджрд╢рд╛рдВрд╢ рдорд┐рд│рд╡рддреЗ.

рдХрд╛рд░реНрдп реи

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рдВрдкреЗрдкрд░реНрдпрдВрдд рдХрд╛рд╣реА рд╕реЗрдХрдВрджрд╛рдд рд╡реЗрд│ рдорд┐рд│рд╡рд╛.

рдЕрдЯ: рд╕реЗрд╡рд╛ "рдлреЗрдмреНрд░реБрд╡рд╛рд░реА 12 12:33:56 2022 GMT" рд╕реНрд╡рд░реВрдкрд╛рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛рд▓рдмрд╛рд╣реНрдпрддрд╛ рддрд╛рд░реАрдЦ рдЬрд╛рд░реА рдХрд░рддреЗ.

ECMAScript5 рдордзреНрдпреЗ date.parse() ISO 8601 рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рддрд╛рд░реАрдЦ рд╕реНрд╡реАрдХрд╛рд░рддреЗ (YYYY-MM-DDTHH:mm:ss.sssZ). рддреНрдпрд╛рд╡рд░ MMM DD YYYY HH:mm:ss ZZ рдпрд╛ рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯрд╛рдХрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╕рдорд╕реНрдпрд╛: рдорд╣рд┐рдиреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рдордЬрдХреВрд░ рдореНрд╣рдгреВрди рд╡реНрдпрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рд╕рдВрдЦреНрдпрд╛ рдореНрд╣рдгреВрди рдирд╛рд╣реА. рдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рддреАрд▓ рдбреЗрдЯрд╛ Duktap рджреНрд╡рд╛рд░реЗ рд╕реНрд╡реАрдХрд╛рд░рд▓рд╛ рдЬрд╛рдд рдирд╛рд╣реА.

рдЙрдкрд╛рдп рдЙрджрд╛рд╣рд░рдг:

  • рд╕рд░реНрд╡ рдкреНрд░рдердо, рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЬреЗ рдореВрд▓реНрдп рдШреЗрддреЗ (рд╕рдВрдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реА рд╕реНрд╡рд▓реНрдкрд╡рд┐рд░рд╛рдорд╛рдиреЗ рд╡рд┐рднрдХреНрдд рдХреЗрд▓реЗрд▓реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреА рдШреЛрд╖рдгрд╛ рдЕрд╕рддреЗ).

  • рдкрд╣рд┐рд▓реНрдпрд╛ рдУрд│реАрдд рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдордзреНрдпреЗ рддрд╛рд░реАрдЦ рдорд┐рд│рддреЗ рдореВрд▓реНрдп рдЖрдгрд┐ рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди рд╕реНрдкреЗрд╕рд╕рд╣ рд╡реЗрдЧрд│реЗ рдХрд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рд╛. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдЕреЕрд░реЗ рдорд┐рд│рддреЛ, рдЬрд┐рдереЗ рдЕреЕрд░реЗрдЪрд╛ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ, рдЗрдВрдбреЗрдХреНрд╕ 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 рдордзреАрд▓ рд╡рд░реНрддрдорд╛рди рддрд╛рд░реАрдЦ рдорд┐рд│рд╡реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛рд▓рдмрд╛рд╣реНрдп рд╣реЛрдИрдкрд░реНрдпрдВрдд рдЖрддрд╛рдкрд╛рд╕реВрди рдорд┐рд▓реАрд╕реЗрдХрдВрджрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдкрд░рд┐рдгрд╛рдореА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛рд▓рдмрд╛рд╣реНрдпрддрд╛ рддрд╛рд░рдЦреЗрдкрд╛рд╕реВрди рд╡рдЬрд╛ рдХрд░реВ рд╢рдХрддреЛ.

`now = Date.now();`

  • Zabbix рдордзреНрдпреЗ рд╕реЗрдХрдВрдж рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпрд╛рд╕ рд╣рдЬрд╛рд░рд╛рдиреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЛ.

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

рдЯреНрд░рд┐рдЧрд░рдордзреНрдпреЗ, рдЖрдкрдг рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛ 'рд╢реЗрд╡рдЯрдЪреЗ' рддреНрдпрд╛рдирдВрддрд░ рдЕрдВрдХрд╛рдВрдЪрд╛ рд╕рдВрдЪ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдК рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХрд╛рд▓рд╛рд╡рдзреАрддреАрд▓ рд╕реЗрдХрдВрджрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдард╡рдбреНрдпрд╛рдд. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдЯреНрд░рд┐рдЧрд░ рд╕реВрдЪрд┐рдд рдХрд░реЗрд▓ рдХреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдПрдХрд╛ рдЖрдард╡рдбреНрдпрд╛рдд рд╕рдВрдкрдд рдЖрд╣реЗ.

рдЯреАрдк. рд╡рд╛рдкрд░рд╛рдХрдбреЗ рд▓рдХреНрд╖ рджреНрдпрд╛ parseInt() рдХрд╛рд░реНрдпрд╛рдд рдкрд░рддрдорд┐рд▓рд┐рд╕реЗрдХрдВрджрд╛рдВрдЪреНрдпрд╛ рднрд╛рдЧрд╛рдХрд╛рд░рд╛рдореБрд│реЗ рдирд┐рд░реНрдорд╛рдг рд╣реЛрдгрд╛рд░реА рдЕрдкреВрд░реНрдгрд╛рдВрдХ рд╕рдВрдЦреНрдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХрд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рдЖрдкрдг рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ рдкрд╛рд░реНрд╕рдлреНрд▓реЛрдЯ() рдЖрдгрд┐ рдлреНрд░реЕрдХреНрд╢рдирд▓ рдбреЗрдЯрд╛ рд╕рд╛рдард╡рд╛.

рдЕрд╣рд╡рд╛рд▓ рдкрд╣рд╛

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛