๊ธฐ๋ณธ์ ์œผ๋กœ Zabbix๋ฅผ Asterisk์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด์ „ ๊ธฐ์‚ฌ์—์„œ "Zabbix - ๋งคํฌ๋กœ ๊ฒฝ๊ณ„ ํ™•์žฅ" ์ธ์ฆ ์„ธ์…˜์„ ๋ฐ›์•„ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๋งคํฌ๋กœ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์—†์ด Zabbix๋ฅผ Asterisk์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋‘ ์‹œ์Šคํ…œ์„ "์นœ๊ตฌ๋กœ ๋งŒ๋“ค"๋ ค๋Š” ์•„์ด๋””์–ด๋Š” ์ถ”๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด๋‚˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ž˜ ์ „์— ํƒ„์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ์†”๋ฃจ์…˜์ด ๋‚˜์™”๊ณ , ์ด๋Š” ๋ชจ๋‘ ์Šคํฌ๋ฆฝํŠธ(Pyha, Bash, Python ๋“ฑ)๋ฅผ ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•œ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋งŒ์กฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ ์—†์ด ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ PBX๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์ถ”๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  "์ฆ‰์‹œ" ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ์ด 4 ์˜์—…์ผ์„ ๋ณด๋ƒˆ์ง€ ๋งŒ ๊ฒฐ๊ณผ๋Š” ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. AMI ์ธํ„ฐํŽ˜์ด์Šค, ํ•˜์œ„ ์ˆ˜์ค€ ๊ฐ์ง€, ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ํ†ตํ•ด ์ž‘์—…ํ•˜๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ PBX ๋ฐ ๊ธฐํƒ€ ๋ชจ๋“  ์„ค์ •์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์ด์ œ ์•ฝ 15๋ถ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

Zabbix 4.4๋Š” Asterisk ๋ฒ„์ „ 100์˜ ์•ฝ 13๊ฐœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ PBX์—๋Š” FreePBX ์›น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๊ณ  ์ผ๋ถ€๋Š” ๊ธฐ๋ณธ ์ฝ˜์†”, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํŠธ๋ฆญ ๋ฐ ๋‹ค์ด์–ผ ํ”Œ๋žœ์„ ํ†ตํ•œ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

PBX์—์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 

ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ฒซ ๋ฒˆ์งธ์ด์ž ์ฃผ์š” ์‚ฌํ•ญ์€ ํ”ผ์–ด ๋ฐ SIP ๋“ฑ๋ก์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด PBX์—๋Š” AGI, AMI, ARI ๋ฐ SSH ์ฝ˜์†” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ฐฑํ•œ ์ด์œ ๋กœ ์ถ”๊ฐ€ ๋ชจ๋“ˆ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋จผ์ € agi, ami, ari๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • AGI - ๋‹ค์ด์–ผํ”Œ๋žœ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ํ†ตํ™” ๊ด€๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • AMI - ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Telnet๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ํฌํŠธ 5038์„ ํ†ตํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ์–ด์šธ๋ฆฐ๋‹ค!
  • ARI - ํ˜„๋Œ€์ ์ด๊ณ  ํŒจ์…”๋„ˆ๋ธ”ํ•œ JSON์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ Zabbix์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ €์—๊ฒŒ๋Š” ์ค‘์š”ํ•œ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. Sip ๋“ฑ๋ก์„ ์ œ์–ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋‹จ์ ์€ ๋™๋ฃŒ์˜ ๊ฒฝ์šฐ ์˜จ๋ผ์ธ/์˜คํ”„๋ผ์ธ ๋‘ ๊ฐ€์ง€ ์ƒํƒœ๋งŒ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋” ๋งŽ์€ ์ƒํƒœ๊ฐ€ ์žˆ์–ด ์ง„๋‹จ ์‹œ ์ด๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • SSH๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ "๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ" ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๋ ค ์‚ฌํ•ญ์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๋‹จ์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ARI๋Š” ๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง ์š”๊ตฌ ์‚ฌํ•ญ์˜ 90%๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

Zabbix์™€ Telnet - ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค

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

Zabbix์˜ Telnet์€ Linux ์ฝ˜์†”๊ณผ ๋™์ผํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋กœ๊ทธ์ธ/๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ํ‘œ์ค€ ์ธ์ฆ์— ๋งž๊ฒŒ ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ๋งž์ถคํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฆ ๋กœ์ง์ด ๋‹ค๋ฅด๊ณ  ๋กœ๊ทธ์ธ/๋น„๋ฐ€๋ฒˆํ˜ธ ์Œ์— ๋Œ€ํ•œ ์š”์ฒญ์ด ์—†์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์šฐํšŒํ•˜๋ ค๋Š” ํ—›๋œ ์‹œ๋„ ํ›„์— Telnet ๋ชจ๋“ˆ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๊ฒ€์ƒ‰์œผ๋กœ ๋Œ์•„๊ฐ€์ž

ARI ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ ์ฝ๊ณ  ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” SIP ๋“ฑ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค. ์ž”์น˜๊ฐ€ ์žˆ๊ณ , ๋Œ€ํ™”๊ฐ€ ์žˆ๊ณ , ๋ฐ˜๋ฐ”์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๋“ฑ๋ก์€ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ˆœ๊ฐ„ ๋…์ˆ˜๋ฆฌ ๋“ฑ๋ก์ด ๊ผญ ํ•„์š”ํ•œ๊ฐ€ ํ•˜๋Š” ์ƒ๊ฐ๊นŒ์ง€ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ์—ฐ์˜ ์ผ์น˜๋กœ ์ด ์ˆœ๊ฐ„ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฐœ์‹  ์ „ํ™”์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์š”์ฒญ์ด ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” SIP๋“ฑ๋ก์ด ๋ฉˆ์ท„๋Š”๋ฐ ๋ชจ๋“ˆ์„ ์žฌ๋ถ€ํŒ…๋งŒ ํ•˜๋ฉด ํ•ด๊ฒฐ์ด ๋˜์—ˆ๋‹ค๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

asterisk -rx "sip reload"

์›น์„ ํ†ตํ•ด AMI์— ์•ก์„ธ์Šคํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๋ฐฉํ–ฅ์œผ๋กœ ํŒŒํ—ค์น˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๋ง ๊ทธ๋Œ€๋กœ ์ฒซ ๋ฒˆ์งธ ๊ฒ€์ƒ‰ ์ค„์€ ๋‚ด ์ž‘์—…์— ๋Œ€ํ•œ ์˜ต์…˜์ด ์žˆ๋‹ค๋Š” ๊ณต์‹ Asterisk ๋ฌธ์„œ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์›น ์ง€์› ํŒŒ์ผ์— /etc/asterisk/manager.conf, ์„น์…˜์—์„œ YES๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [์ผ๋ฐ˜์ ์ธ]

์ดํ›„, ์ •๊ธฐ์ ์ธ ์›น ์š”์ฒญ ์–‘์‹์„ ํ†ตํ•ด http://ats:8089/mxml?action=SIPshowregistry ์šฐ๋ฆฌ๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

FreePBX ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์›น์„ ํ†ตํ•ด ์ด ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, Manager.conf ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ฝ˜์†”์„ ํ†ตํ•ด ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. FreePBX๋Š” ์›น์„ ํ†ตํ•ด ๊ตฌ์„ฑ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์ด๋ฅผ ์ง€์šฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์˜ค๋žซ๋™์•ˆ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ Asterisk ํ†ตํ•ฉ ์ž‘์—…์„ ํ•ด์™”์ง€๋งŒ ์ด ๊ธฐ๋Šฅ์ด ์–ด๋””์—์„œ๋„ ์–ธ๊ธ‰๋œ ๊ฒƒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. PBX์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ์•„๋ฌด๋„ ์„ค๋ช…ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ํŠนํžˆ ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์—†๊ฑฐ๋‚˜ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ž‘์—…์— ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

WEB AMI - ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ง์Šน์ธ๊ฐ€?

์˜ต์…˜ ์ถ”๊ฐ€ ์›น ์ง€์› ํŒŒ์ผ๋กœ Manager.conf ์›น์„ ํ†ตํ•ด ATS ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ AMI๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ช…๋ น์€ ์ด์ œ ์›น์— ์žˆ์œผ๋ฏ€๋กœ ์†Œ์ผ“์„ ํ†ตํ•ด PBX์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ ์›๋ฆฌ๋Š” ์ฝ˜์†” AMI์™€ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•œ ํ›„ ๋‹ค์Œ ์ฃผ์†Œ๋กœ PBX์— ์—ฐ๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://ats:8089/manager โ€” ์š”์ฒญ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ์›น ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์‘๋‹ต์€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” HTML๋กœ ํ˜•์‹ํ™”๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง์—๋Š” ๋ณ„๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
https://ats:8089/rawman โ€” ํ…์ŠคํŠธ ์ถœ๋ ฅ ์ „์šฉ, ์ฝ˜์†” AMI์™€ ์œ ์‚ฌํ•œ ํ˜•์‹
https://ats:8089/mxml - XML โ€‹โ€‹ํ˜•์‹์˜ ํ…์ŠคํŠธ ์ถœ๋ ฅ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ์–ด์šธ๋ฆฐ๋‹ค!

๊ธฐ๋ณธ์ ์œผ๋กœ Zabbix๋ฅผ Asterisk์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. โ€œ์ด๊ฒƒ์ด ํ•ด๊ฒฐ์ฑ…์ด๋‹ค! ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์‰ฝ๊ฒŒ ์˜ค์คŒ์„ ์‹ธ๋Š” ๋ ˆ๋ชฌ ์Šคํ€ด์ง€โ€๋ผ๊ณ  ๋งํ–ˆ์ง€๋งŒ ๊ธฐ๋ปํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ด๋ฅด๋‹ค. ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์–ป์œผ๋ ค๋ฉด ํ•„์š”ํ•œ ์กฐ์น˜์™€ ํ•จ๊ป˜ GET ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋™์ž‘, ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋ชจ๋“  ๋“ฑ๋ก ๋ฐ ํ•ด๋‹น ์ƒํƒœ ๋ชฉ๋ก์ด ํฌํ•จ๋œ xml์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ์ฟ ํ‚ค์˜ ์„ธ์…˜์„ ๊ธฐ์–ตํ•˜๋ ค๋ฉด ์Šน์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ…Œ์ŠคํŠธํ•  ๋•Œ๋Š” ์ด ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Šน์ธ ์ ˆ์ฐจ

๋จผ์ € ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์„œ๋ฒ„๋Š” ์ธ์ฆ ์„ธ์…˜๊ณผ ํ•จ๊ป˜ ์ฟ ํ‚ค๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. HTTP ์š”์ฒญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://ats:8089/mxml?action=login&username=zabbix&secret=zabbix

Host: ats:8089
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1

๋‹ต๋ณ€ :

GET: HTTP/1.1 200 OK
Server: Asterisk/13.29.2
Date: Thu, 18 Jun 2020 17:41:19 GMT
Cache-Control: no-cache, no-store
Content-type: text/xml
Set-Cookie: mansession_id="6f5de42c"; Version=1; Max-Age=600
Pragma: SuppressEvents
Content-Length: 146

<ajax-response>
<response type="object" id="unknown">
<generic response="Success" message="Authentication accepted"/>
</response>
</ajax-response>

๊ทธ๊ณณ์—์„œ ์ผํ•˜๋ ค๋ฉด ๋‹น์‹ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค mansession_id="6f5de42c", ์ฆ‰ ์ธ์ฆ ์ฟ ํ‚ค ์ž์ฒด์ž…๋‹ˆ๋‹ค.
๋‹ต๋ณ€์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ  "์ธ์ฆ์ด ์Šน์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค" ๋‹ค์Œ์œผ๋กœ, PBX ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ชจ๋“  ํ˜ธ์ถœ์— ๋Œ€ํ•ด ์š”์ฒญ์— ์ธ์ฆ ์ฟ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://ats:8089/mxml?action=SIPpeers

Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"

์—ฌ๊ธฐ์—์„œ ์ธ์ฆ ์ฟ ํ‚ค๋ฅผ ์–ป๊ณ  ๋‹ค๋ฅธ ์š”์ฒญ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฝ์–ด๋ณด์„ธ์š”.Zabbix - ๋งคํฌ๋กœ ๊ฒฝ๊ณ„ ํ™•์žฅยป

Zabbix์—์„œ ์ถ”์  ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์ž๋™ ๊ฐ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž๋™ ๊ฐ์ง€

๋“ฑ๋ก์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ํ”ผ์–ด ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ฃผ์†Œ๋กœ ๋ฌธ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. https://ats:8089/mxml?action=SIPshowregistry ๋˜๋Š” https://ats:8089/mxml?action=SIPpeers

์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ PBX๋Š” XML ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

<ajax-response>
<response type="object" id="unknown">
<generic response="Success" eventlist="start" message="Registrations will follow"/>
</response>
...
<response type="object" id="unknown">
<generic event="RegistryEntry" host="login.mtt.ru" port="5060" username="111111" domain="login.mtt.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
<response type="object" id="unknown">
<generic event="RegistryEntry" host="voip.uiscom.ru" port="5060" username="222222" domain="voip.uiscom.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
<response type="object" id="unknown">
<generic event="RegistryEntry" host="voip.uiscom.ru" port="5060" username="333333" domain="voip.uiscom.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
...
</ajax-response>

์‘๋‹ต์— ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒ˜๋ฆฌ์—์„œ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. xpath: //์‘๋‹ต/์ผ๋ฐ˜[@host]
๊ทธ๋Ÿฐ ๋‹ค์Œ ์žฌ๋ฏธ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๊ฐ์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์š”์†Œ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์‘๋‹ต์ด JSON ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ๊ฐ์ง€์—๋Š” XML์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

XML์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด JS์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“  ์ž๋™ ๊ต์ฒด๋ฅผ ์•ฝ๊ฐ„ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ Zabbix๋ฅผ Asterisk์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

ํฅ๋ฏธ๋กœ์šด ์ : ATS ์‘๋‹ต์—์„œ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์—ฌ ์žˆ์œผ๋ฉฐ ํ…œํ”Œ๋ฆฟ์„ ์ ์šฉํ•œ ํ›„์—๋Š” //์‘๋‹ต/์ผ๋ฐ˜[@host] ๊ทธ๋“ค์€ ์ด์ค‘์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด XML ์‘๋‹ต(ํ˜„์žฌ JSON)์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ Zabbix๋ฅผ Asterisk์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

SIP ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

Sip ๋“ฑ๋ก์—๋Š” ์„ธ ๊ฐ€์ง€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ด๋ฆ„, ์ฃผ์ธ, ํฌํŠธ. ์š”์†Œ ์ด๋ฆ„์ด ๋งˆ์Œ์— ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. [์ด๋ฉ”์ผ ๋ณดํ˜ธ]: 5060, ๋‹ค์„ฏ ๊ฐ€์ง€ ๋ณ€์ˆ˜๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์€ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๋“ฑ๋ก์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ›๋Š” ์ฃผ์š” ์š”์†Œ๋กœ, ๋ณ„ํ‘œ - AMI SIPshowregistry. XNUMX๋ถ„์— ํ•œ ๋ฒˆ์”ฉ GET ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. https://ats:8089/mxml?action=SIPshowregistry, ๊ทธ ํ›„์—๋Š” ์‘๋‹ต XML ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์œ„ํ•ด ๋ชจ๋“  ์ข…์† ์š”์†Œ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋“ฑ๋ก์— ๋Œ€ํ•ด ์ด์— ์ข…์†๋˜๋Š” ์š”์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•ด ๋ณ„๋„๋กœ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ์š”์ฒญ์œผ๋กœ ์ตœ์‹  ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๋ฏ€๋กœ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌํ˜„์—๋Š” ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ๋ถ€ํ•˜๋ผ๋Š” ์ค‘์š”ํ•œ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๋Œ€ 100๊ฐœ์˜ ์ข…์† ์š”์†Œ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๋กœ๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ 1700๊ฐœ์˜ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์„ธ์„œ์— ๋ˆˆ์— ๋„๋Š” 15์ดˆ ๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ข…์† ์š”์†Œ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์ด ์ ์„ ์—ผ๋‘์— ๋‘์‹ญ์‹œ์˜ค.

๋กœ๋“œ๋ฅผ "ํ™•์‚ฐ"ํ•˜๊ฑฐ๋‚˜ ์š”์†Œ์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ง ๋นˆ๋„๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์œผ๋กœ ์ฒ˜๋ฆฌ ๋…ผ๋ฆฌ๋ฅผ ๊ฐ ์š”์†Œ๋กœ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ›์€ ์ •๋ณด๋ฅผ ๊ธฐ๋ณธ ์š”์†Œ์— ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ์ด๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ , ๋‘˜์งธ, ์‘๋‹ต์ด 64K ์ด์ƒ์ด๋ฉด Zabbix๊ฐ€ ์ด๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ข…์† ์š”์†Œ์— ๋Œ€ํ•ด ์ „์ฒด XML ์‘๋‹ต์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ „์ฒ˜๋ฆฌ์—์„œ ์ด ์š”์†Œ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ ํ†ตํ•ด xpath ๊ทธ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค :
๋ฌธ์ž์—ด(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ ์ƒํƒœ)
๋“ฑ๋ก ์ƒํƒœ์˜ ๊ฒฝ์šฐ ํ…์ŠคํŠธ ์ƒํƒœ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

switch(value) {
  case 'Registered':
    return 1;
  case 'Unregistered':
    return 0;
  default:
    return -1;
}

SIP ํ”ผ์–ด

SIP ๋“ฑ๋ก๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ Asterisk์˜ ์ฃผ์š” ์š”์†Œ์ธ AMI SIPshowregistry๊ฐ€ ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์— ์ข…์† ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์ข…์† ์š”์†Œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ํ…์ŠคํŠธ ํ˜•์‹์˜ ํ”ผ์–ด ์ƒํƒœ
  • ์žฅ์น˜ ์‘๋‹ต ์‹œ๊ฐ„ - ์ƒํƒœ๊ฐ€ OK์ด๋ฉด ์žฅ์น˜ ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธฐ๋ก๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด โ€œ-1โ€์ž…๋‹ˆ๋‹ค.

์š”์†Œ ์ž์ฒด์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋Š” ์กฐ๊ธˆ ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. xpath:

๋ฌธ์ž์—ด(//response/generic[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)

๋‘ ๋ฒˆ์งธ ์š”์†Œ์˜ ๊ฒฝ์šฐ JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ต ์‹œ๊ฐ„ ํ•จ๊ป˜ ์ €์žฅ๋˜๋ฏ€๋กœ ํ”ผ์–ด ์ƒํƒœ์—์„œ:

if(value.substring(0,2) == 'OK'){
	return value.match(/(d+)/gm);
}
else {
	return -1;
}

๊ฒฐ๋ก 

๊ธฐ๋ณธ ์ œ๊ณต ์†”๋ฃจ์…˜์€ ๋ณต์žกํ•˜๊ณ  ์ฆ‰์‹œ ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„์˜ ์œ ์—ฐ์„ฑ๊ณผ ์ด์‹์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

๋ชจ๋‘๊ฐ€ ํ–‰๋ณตํ•˜๊ณ  ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์„ค์ •์„ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ๋ฐ ์ง€์นจ GitHub์˜.

์ถœ์ฒ˜ : habr.com

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