JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
ํ‹ฐ์ฝ˜ ์šฐ์Šค์ฝ”ํ”„, Zabbix ํ†ตํ•ฉ ํŒ€ ์—”์ง€๋‹ˆ์–ด

Zabbix๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋งž์ถคํ˜• ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. Zabbix ์ดˆ๊ธฐ ๋ฒ„์ „๋ถ€ํ„ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ด€๋ฆฌ์ž๋Š” ๋‹ค์Œ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ–‰์œ„ ๋Œ€์ƒ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ์Šคํฌ๋ฆฝํŠธ ์ถœ์‹œ๋กœ ์ธํ•ด ์Šคํฌ๋ฆฝํŠธ ์ง€์› ํ•„์š”์„ฑ, ํ†ต์‹  ๋…ธ๋“œ ๋ฐ ํ”„๋ก์‹œ๋กœ์˜ ์ „๋‹ฌ, ๋‹ค์–‘ํ•œ ๋ฒ„์ „ ์ง€์› ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž๋น…์Šค์šฉ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

2019๋…„ 4.2์›”, JavaScript ์ „์ฒ˜๋ฆฌ์™€ ํ•จ๊ป˜ Zabbix 3.4๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋”˜๊ฐ€๋กœ ๊ฐ€์ ธ์™€ ์†Œํ™”ํ•˜๊ณ  Zabbix๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  Zabbix์—์„œ ์ €์žฅ ๋ฐ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์„ ํฌ๊ธฐํ•˜๊ณ  ๊ทธ๋Ÿฐ ๋‹ค์Œ Zabbix ๋ฐ JavaScript ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Zabbix XNUMX์— ๋“ฑ์žฅํ•œ ํ•˜์œ„ ์ˆ˜์ค€ ๊ฒ€์ƒ‰ ๋ฐ ์ข…์† ํ•ญ๋ชฉ๊ณผ ํ•จ๊ป˜ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ƒ๋‹นํžˆ ์œ ์—ฐํ•œ ๊ฐœ๋…์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

Zabbix 4.4์—์„œ๋Š” JavaScript ์‚ฌ์ „ ์ฒ˜๋ฆฌ์˜ ๋…ผ๋ฆฌ์  ์—ฐ์†์œผ๋กœ Zabbix ์•Œ๋ฆผ์„ ํƒ€์‚ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Webhook์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์•Œ๋ฆผ ๋ฐฉ๋ฒ•์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋•ํ…Œ์ดํ”„

JavaScript์™€ Duktape์„ ์„ ํƒํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์–ธ์–ด ๋ฐ ์—”์ง„์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์˜ต์…˜์ด ๊ณ ๋ ค๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฃจ์•„ - ๋ฃจ์•„ 5.1
  • ๋ฃจ์•„ - LuaJIT
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - ๋•ํ…Œ์ดํ”„
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - ์ œ๋ฆฌ์Šคํฌ๋ฆฝํŠธ
  • ์ž„๋ฒ ๋””๋“œ ํŒŒ์ด์ฌ
  • ์ž„๋ฒ ๋””๋“œ ํŽ„

์ฃผ์š” ์„ ํƒ ๊ธฐ์ค€์€ ๋ณด๊ธ‰, ์ œํ’ˆ์— ์—”์ง„ ํ†ตํ•ฉ์˜ ์šฉ์ด์„ฑ, ์—”์ง„์˜ ๋‚ฎ์€ ๋ฆฌ์†Œ์Šค ์†Œ๋น„ ๋ฐ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ, ์ด ์–ธ์–ด๋กœ ๋œ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง์— ๋„์ž…ํ•˜๋Š” ์•ˆ์ „์„ฑ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€ํ‘œ์˜ ์กฐํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ JavaScript๊ฐ€ Duktape ์—”์ง„์—์„œ ์Šน๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ ๊ธฐ์ค€ ๋ฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

๋•ํ…Œ์ดํ”„์˜ ํŠน์ง•:

- ๊ธฐ์ค€ ECMA์Šคํฌ๋ฆฝํŠธ E5/E5.1
โ€” Duktape์šฉ Zabbix ๋ชจ๋“ˆ:

  • Zabbix.log() - ๋‹ค์–‘ํ•œ ์„ธ๋ถ€ ์ˆ˜์ค€์˜ ๋ฉ”์‹œ์ง€๋ฅผ Zabbix ์„œ๋ฒ„ ๋กœ๊ทธ์— ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Webhook์˜ ์˜ค๋ฅ˜๋ฅผ ์„œ๋ฒ„ ์ƒํƒœ์™€ ์—ฐ๊ด€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CurlHttpRequest() - Webhook ์‚ฌ์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋„คํŠธ์›Œํฌ์— HTTP ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • atob() ๋ฐ btoa() - Base64 ํ˜•์‹์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ . Duktape๋Š” ACME ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. Zabbix๋Š” ์Šคํฌ๋ฆฝํŠธ์˜ 2015 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ›„์† ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์‚ฌ์†Œํ•˜๋ฏ€๋กœ ๋ฌด์‹œํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋งˆ๋ฒ•

JavaScript์˜ ๋ชจ๋“  ๋งˆ๋ฒ•์€ ๋ฌธ์ž์—ด, ์ˆซ์ž ๋ฐ ๋ถ€์šธ๊ณผ ๊ฐ™์€ ๋™์  ํƒ€์ดํ•‘ ๋ฐ ์œ ํ˜• ์บ์ŠคํŒ…์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋ณ€์ˆ˜๊ฐ€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋Š” ์œ ํ˜•์„ ๋ฏธ๋ฆฌ ์„ ์–ธํ•  ํ•„์š”๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜ํ•™ ์—ฐ์‚ฐ์—์„œ ํ•จ์ˆ˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์€ ์ˆซ์ž๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์˜ ์˜ˆ์™ธ๋Š” ๋ง์…ˆ์ž…๋‹ˆ๋‹ค. ์šฉ์–ด ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ด๋ฉด ๋ฌธ์ž์—ด ๋ณ€ํ™˜์ด ๋ชจ๋“  ์šฉ์–ด์— ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ . ์ด๋Ÿฌํ•œ ๋ณ€ํ™˜์„ ๋‹ด๋‹นํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด์˜ ์ƒ์œ„ ํ”„๋กœํ† ํƒ€์ž…์—์„œ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์น˜์˜ ะธ toString. ๊ฐ€์น˜์˜ ์ˆซ์ž ๋ณ€ํ™˜ ์ค‘์— ํ˜ธ์ถœ๋˜๋ฉฐ ํ•ญ์ƒ ๋ฉ”์†Œ๋“œ ์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. toString. ๋ฐฉ๋ฒ• ๊ฐ€์น˜์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”์†Œ๋“œ๊ฐ€ ๊ฐ์ฒด์—์„œ ํ˜ธ์ถœ๋จ ๊ฐ’์˜. ์ฐพ์„ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๊ธฐ๋ณธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. toString. ๋งŒ์•ฝ ๋ฐฉ๋ฒ•์ด toString ์ฐพ์„ ์ˆ˜ ์—†์Œ, ๊ฒ€์ƒ‰ ์ค‘ ๊ฐ€์น˜์˜ ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž…์—์„œ ๊ฐ’์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๊ณ  ํ‘œํ˜„์‹์˜ ๋ชจ๋“  ๊ฐ’์ด ๋™์ผํ•œ ์œ ํ˜•์œผ๋กœ ์บ์ŠคํŠธ๋  ๋•Œ๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์ด ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.. ๊ฐ์ฒด๊ฐ€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ toString, ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฌธ์ž์—ด ๋ณ€ํ™˜์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, for for object '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์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
๋ณ€์ˆ˜๊ฐ€ 3์ด๊ณ  4์ธ ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰.

์บ์ŠคํŠธ(==)์™€ ๋น„๊ตํ•  ๋•Œ ๋ฉ”์„œ๋“œ๋Š” ๋งค๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. toString ๊ฐ€์น˜ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ. ๋”ฐ๋ผ์„œ ๊ฐ ํ›„์† ๋น„๊ต์—์„œ ๊ฐ’์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋น„์บ์ŠคํŠธ ๋น„๊ต(===)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
ํƒ€์ž… ์บ์ŠคํŒ… ์—†์ด ๋น„๊ต

์ฐธ๊ณ . ์บ์ŠคํŠธ ๋น„๊ต๋ฅผ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋ณต์žกํ•œ ๋กœ์ง์„ ๊ฐ€์ง„ Webhook๊ณผ ๊ฐ™์ด ํƒ€์ž… ์บ์ŠคํŒ…๊ณผ์˜ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•œ ๋ณต์žกํ•œ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ถˆ์ผ์น˜ ๋ฐ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์›นํ›… ๋ฏธ๋””์–ด

2019๋…„ ๋ง๊ณผ 2020๋…„ ์ดˆ์— Zabbix ํ†ตํ•ฉ ํŒ€์€ Zabbix ๋ฐฐํฌํŒ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” Webhook ๋ฐ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ†ตํ•ฉ์„ ์ ๊ทน์ ์œผ๋กœ ๊ฐœ๋ฐœํ•ด ์™”์Šต๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
์— ๋งํฌ ๋ฌธ์„œ

์ „์ฒ˜๋ฆฌ

  • JavaScript์—์„œ ์ „์ฒ˜๋ฆฌ์˜ ์ถœํ˜„์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํฌ๊ธฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ ํ˜„์žฌ Zabbix์—์„œ๋Š” ๋ชจ๋“  ๊ฐ’์„ ๊ฐ€์ ธ์™€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Zabbix์˜ ์ „์ฒ˜๋ฆฌ๋Š” JavaScript ์ฝ”๋“œ์— ์˜ํ•ด ๊ตฌํ˜„๋˜๋ฉฐ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋˜๋ฉด ๋‹จ์ผ ๊ฐ’์„ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์น˜ ๋ฌธ์ž์—ด๋กœ(๋ฌธ์ž์—ด์—๋Š” ์ˆซ์ž์™€ ์ˆซ์ž๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ).
  • ์ถœ๋ ฅ์€ ํ•จ์ˆ˜์ด๋ฏ€๋กœ ์Šคํฌ๋ฆฝํŠธ ๋์—๋Š” ํ•„์ˆ˜ return.
  • ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฆฌ์†Œ์Šค๋Š” ์šด์˜ ์ฒด์ œ ์ˆ˜์ค€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ๋„ ์ œํ•œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„์—๋Š” ์ตœ๋Œ€ 10MB์˜ RAM๊ณผ 10์ดˆ์˜ ์‹คํ–‰ ์‹œ๊ฐ„ ์ œํ•œ์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ . ๋‹ค์†Œ "๋ฌด๊ฑฐ์šด" ์ „์ฒ˜๋ฆฌ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋”ฐ๋ผ ์กฐ๊ฑด๋ถ€๋กœ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์„ 10์ดˆ์— ์ˆ˜์ง‘ํ•˜๋ฉด Zabbix์˜ ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 1์ดˆ์˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ฐ’์€ ์ƒ๋‹นํžˆ ํฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ „์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋งŒ ์‹คํ–‰๋˜๋Š” ์†Œ์œ„ ์„€๋„์šฐ ๋ฐ์ดํ„ฐ ์š”์†Œ(๋”๋ฏธ ํ•ญ๋ชฉ)๋ฅผ ํ†ตํ•ด ๋ณธ๊ฒฉ์ ์ธ 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;`

๋น ๋ฅด๊ณ  ์‰ฌ์šฐ๋ฉฐ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ๋ก์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด ์œ ์—ฐํ•œ ๊ฐ„๊ฒฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์ƒ ์ƒํ™ฉ์—์„œ ์˜ˆ๋ฅผ ๋“ค์–ด ๋งคํฌ๋กœ์— ์ •์˜๋œ ์ƒ์ˆ˜์™€ ํ•จ๊ป˜ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์น˜ ๋ฌธ์ž์—ด๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ์ถ”๊ฐ€ ์ž‘์—…์—์„œ ๋‘ โ€‹โ€‹๋ฌธ์ž์—ด์€ ๋‹จ์ˆœํžˆ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Zabbix์˜ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

์ˆ˜ํ•™ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด ์–ป์€ ๊ฐ’์˜ ์œ ํ˜•์„ ์ˆซ์ž ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๋ถ„์„(), ์ •์ˆ˜, ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๋ถ„์„ ํ”Œ๋กœํŠธ(), ์‹ญ์ง„์ˆ˜ ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฒˆํ˜ธ, ์ •์ˆ˜ ๋˜๋Š” ์†Œ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2 ์ž‘์—…

์ธ์ฆ์„œ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„์„ ์ดˆ ๋‹จ์œ„๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์กฐ๊ฑด: ์„œ๋น„์Šค๋Š” "Feb 12 12:33:56 2022 GMT" ํ˜•์‹์œผ๋กœ ์ธ์ฆ์„œ ๋งŒ๋ฃŒ ๋‚ ์งœ๋ฅผ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

ECMAScript5์—์„œ Date.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์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค(์›”์€ XNUMX๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ฒˆํ˜ธ๊ฐ€ ์ง€์ •๋˜๊ธฐ ๋•Œ๋ฌธ). ์ด ๊ฒฝ์šฐ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•œ ํ‘œํ˜„์‹์€ ๊ด„ํ˜ธ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์„ ์–ป๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ์ผ๋ถ€๋ถ„() - ๋ฐฐ์—ด์„ ๋์—์„œ ์ž˜๋ผ ๋‘ ๊ธ€์ž๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค(๋‘ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์žˆ๋Š” ๋‹ฌ์˜ ๊ฒฝ์šฐ ์ค‘์š”ํ•จ).

`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๋Š” ๋งคํฌ๋กœ์—์„œ๋งŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. {๋ฐ์ดํŠธ} ะธ {์‹œ๊ฐ„}, ์‚ฌ์šฉ์ž์—๊ฒŒ ์นœ์ˆ™ํ•œ ํ˜•์‹์œผ๋กœ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ทธ๋Ÿฐ ๋‹ค์Œ Unix ํƒ€์ž„์Šคํƒฌํ”„ ํ˜•์‹์˜ JavaScript์—์„œ ํ˜„์žฌ ๋‚ ์งœ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ฒฐ๊ณผ ์ธ์ฆ์„œ ๋งŒ๋ฃŒ ๋‚ ์งœ์—์„œ ๋นผ์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ ์ธ์ฆ์„œ๊ฐ€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€์˜ ๋ฐ€๋ฆฌ์ดˆ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

`now = Date.now();`

  • ๋ฐ›์€ ๊ฐ’์„ ์ฒœ์œผ๋กœ ๋‚˜๋ˆ„์–ด Zabbix์—์„œ ์ดˆ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

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

ํŠธ๋ฆฌ๊ฑฐ์—์„œ ' ์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋งˆ์ง€๋ง‰' ๋ฐ ์‘๋‹ตํ•˜๋ ค๋Š” ๊ธฐ๊ฐ„(์˜ˆ: ์ฃผ)์˜ ์ดˆ ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ผ๋ จ์˜ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠธ๋ฆฌ๊ฑฐ๋Š” ์ธ์ฆ์„œ๊ฐ€ ์ผ์ฃผ์ผ ํ›„์— ๋งŒ๋ฃŒ๋จ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

์ฐธ๊ณ . ์‚ฌ์šฉ์— ์ฃผ์˜ ๊ตฌ๋ฌธ ๋ถ„์„() ๊ธฐ๋Šฅ์—์„œ return๋ฐ€๋ฆฌ์ดˆ๋ฅผ ์ •์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ์˜ ๋ถ„์ˆ˜๋ฅผ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋˜ํ•œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๊ตฌ๋ฌธ ๋ถ„์„ ํ”Œ๋กœํŠธ() ์†Œ์ˆ˜ ๋ฐ์ดํ„ฐ ์ €์žฅ.

๋ณด๊ณ ์„œ ๋ณด๊ธฐ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€