์ด์ ๊ธฐ์ฌ์์
์ด ๋ ์์คํ ์ "์น๊ตฌ๋ก ๋ง๋ค"๋ ค๋ ์์ด๋์ด๋ ์ถ๊ฐ ์ํํธ์จ์ด๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์นํ์ง ์๊ณ ์ค๋ ์ ์ ํ์ํ์ต๋๋ค. ๋น ๋ฅธ ์ธํฐ๋ท ๊ฒ์์ ํตํด ๊ฐ๋ฅํ ๋ง์ ์๋ฃจ์ ์ด ๋์๊ณ , ์ด๋ ๋ชจ๋ ์คํฌ๋ฆฝํธ(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๋ก ์ค์ ํด์ผ ํฉ๋๋ค. [์ผ๋ฐ์ ์ธ]
์ดํ, ์ ๊ธฐ์ ์ธ ์น ์์ฒญ ์์์ ํตํด
FreePBX ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์น์ ํตํด ์ด ์ต์ ์ ํ์ฑํํ ์ ์์ผ๋ฉฐ, Manager.conf ํ์ผ์ ๋ณ๊ฒฝํ์ฌ ์ฝ์์ ํตํด ํ์ฑํํด์ผ ํฉ๋๋ค. FreePBX๋ ์น์ ํตํด ๊ตฌ์ฑ์ด ๋ณ๊ฒฝ๋ ๋ ์ด๋ฅผ ์ง์ฐ์ง ์์ต๋๋ค.
์ ๋ ์ค๋ซ๋์ ๋ค์ํ ์ข ๋ฅ์ Asterisk ํตํฉ ์์ ์ ํด์์ง๋ง ์ด ๊ธฐ๋ฅ์ด ์ด๋์์๋ ์ธ๊ธ๋ ๊ฒ์ ๋ณธ ์ ์ด ์์ต๋๋ค. PBX์ ์ํธ ์์ฉํ๋ ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์๋ฌด๋ ์ค๋ช ํ์ง ์๋๋ค๋ ์ฌ์ค์ ๋๋์ต๋๋ค. ์ด ์ฃผ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ๋ ๊ฒ์ด ํนํ ์ ์ฉํ์ต๋๋ค. ์ค์ ๋ก ์๋ฌด๊ฒ๋ ์๊ฑฐ๋ ์์ ํ ๋ค๋ฅธ ์์ ์ ์ฌ์ฉ๋์์ต๋๋ค.
WEB AMI - ์ด๋ค ์ข ๋ฅ์ ์ง์น์ธ๊ฐ?
์ต์ ์ถ๊ฐ ์น ์ง์ ํ์ผ๋ก Manager.conf ์น์ ํตํด ATS ๊ด๋ฆฌ์ ๋ํ ์ ์ฒด ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ผ๋ฐ AMI๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๋ช ๋ น์ ์ด์ ์น์ ์์ผ๋ฏ๋ก ์์ผ์ ํตํด PBX์์ ์ด๋ฒคํธ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ์๋ ์๋ฆฌ๋ ์ฝ์ AMI์ ๋ค๋ฅด์ง ์์ต๋๋ค. ์ด ์ต์ ์ ํ์ฑํํ ํ ๋ค์ ์ฃผ์๋ก PBX์ ์ฐ๋ฝํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ค๊ฐ ๋๋ ์ด๋ ๊ฒ ์๊ฐํ์ต๋๋ค. โ์ด๊ฒ์ด ํด๊ฒฐ์ฑ
์ด๋ค! ์ด์ ๋ชจ๋ ๊ฒ์ด ์ค๋น๋์์ต๋๋ค! ์ฝ๊ฒ ์ค์ค์ ์ธ๋ ๋ ๋ชฌ ์คํด์งโ๋ผ๊ณ ๋งํ์ง๋ง ๊ธฐ๋ปํ๊ธฐ์๋ ๋๋ฌด ์ด๋ฅด๋ค. ํ์ํ ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ฉด ํ์ํ ์กฐ์น์ ํจ๊ป GET ์์ฒญ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ๋์, ์ด์ ๋ํ ์๋ต์ผ๋ก ๋ชจ๋ ๋ฑ๋ก ๋ฐ ํด๋น ์ํ ๋ชฉ๋ก์ด ํฌํจ๋ xml์ ๋ฐํํฉ๋๋ค. ๋ชจ๋ ํ๋ฅญํ์ง๋ง ์ฟ ํค์ ์ธ์
์ ๊ธฐ์ตํ๋ ค๋ฉด ์น์ธ์ด ํ์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ํ
์คํธํ ๋๋ ์ด ํ๋ก์ธ์ค์ ๋ํด ์๊ฐํ์ง ์์ต๋๋ค.
์น์ธ ์ ์ฐจ
๋จผ์ ์ฃผ์๋ฅผ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค
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์์ ์ถ์ ์์๋ฅผ ์์ฑํ๋ ค๋ฉด ์๋ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
์๋ ๊ฐ์ง
๋ฑ๋ก์ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ํผ์ด ์ํ๋ฅผ ์ถ์ ํ๋ ค๋ฉด ๋ค์ ์ฃผ์๋ก ๋ฌธ์ํด์ผ ํฉ๋๋ค.
์ด์ ๋ํ ์๋ต์ผ๋ก 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์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ ์๋ ๊ต์ฒด๋ฅผ ์ฝ๊ฐ ์ฌ์ฉํด์ผ ํ์ต๋๋ค.
ํฅ๋ฏธ๋ก์ด ์ : ATS ์๋ต์์ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ ์์๋ฐ์ดํ๋ก ๋ฌถ์ฌ ์์ผ๋ฉฐ ํ
ํ๋ฆฟ์ ์ ์ฉํ ํ์๋ //์๋ต/์ผ๋ฐ[@host] ๊ทธ๋ค์ ์ด์ค์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
์์๋ฅผ ์์ฑํ๊ธฐ ์ํด XML ์๋ต(ํ์ฌ JSON)์ ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
SIP ๋ ์ง์คํธ๋ฆฌ
Sip ๋ฑ๋ก์๋ ์ธ ๊ฐ์ง ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ฉ์ ์ด๋ฆ, ์ฃผ์ธ, ํฌํธ. ์์ ์ด๋ฆ์ด ๋ง์์ ๋ค์์ต๋๋ค. [์ด๋ฉ์ผ ๋ณดํธ]: 5060, ๋ค์ฏ ๊ฐ์ง ๋ณ์๋ฅผ ๋ชจ๋ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
๋ชจ๋ ๋ฑ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ๋ ์ฃผ์ ์์๋ก, ๋ณํ - AMI SIPshowregistry. XNUMX๋ถ์ ํ ๋ฒ์ฉ GET ์์ฒญ์ ๋ณด๋
๋๋ค.
์ต๋ 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;
}
๊ฒฐ๋ก
๊ธฐ๋ณธ ์ ๊ณต ์๋ฃจ์ ์ ๋ณต์กํ๊ณ ์ฆ์ ๋ช ํํ์ง ์์ ์ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์์คํ ๊ฐ์ ์ ์ฐ์ฑ๊ณผ ์ด์์ฑ์ ๋์ ๋๋ค.
๋ชจ๋๊ฐ ํ๋ณตํ๊ณ ์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค! ์ค์ ์ ์ํ ํ
ํ๋ฆฟ ๋ฐ ์ง์นจ
์ถ์ฒ : habr.com