αα αααα»αα’ααααααα»α αααα»αααΆαααααΆααα’αααααΈααααααΎααααΈααα½αααΆαααααα’αα»ααααΆα αα·ααααα½αααΆαα ααΆαααΆααααΌαααΆαααΈααααα»ααααα»αα αα αααα»αα’αααααααααααα»αααΉαααααΆααα’αααααΈααααααααΆαα Zabbix ααΆαα½α Asterisk αααααααΆαααααααΈα αα·ααααααα·ααΈααΆααααα α
αααα·α "αααααΎααα·ααα" ααααααααααααΆααααΈααααααΆαααΎαααΆααααΈααΌαααΆαααΆααααα αΎα ααααα·αααΆαααα‘αΎααααααα·ααΈ α¬ααααααΈαααααααα ααΆαα αααΌα ααααα αααααααααΌααααααααααΆααααα’αΆα ααΎαααΆαααΆα αααΎα ααΆααΆααα’ααααΆαααααΆααα ααΆααΆααα·αααααααα ααααααααΈα (αα αααα»α Pyha, Bash, Python ααα) αα ααΆαααααΆαααΈααα α αΎαα’αααααΉααααααΆαα α·αααα αααα»αα ααα’αα»ααααααΆααααα½ααα·αα·ααα "α ααααΈαααα’αα" - αααααααΆαααααααΈαααΆααααα αα·αααα‘αΎααααααα·ααΈαααααααα ααΎαααΆαααΈαααααΆαα½αααΉαααΆααααα½ααα·αα·ααα αα·α PBX α
αααα»αααΆαα αααΆααααααα»α 4 ααααααααΎααΆαααΆαα½αααα ααα»ααααααααααααΊααΆααααααααΆα ααααΎααΆαααΆααααα ααα»α αααααΆαα AMI ααΆαααααΎαααααα·αααΆα ααΆαααα αα·αααααΆαααααα»α ααΆαααααΆαα PBX αα·αααΆααααααααααααααααΆααα’ααα₯α‘αΌααααα αααΆαααααααα αα 15 ααΆααΈα
Zabbix 4.4 α’αΆα
ααααΎααΆααααα αα 100 ααααααα Asterisk αααα 13 α PBX αα½αα
ααα½αααΆαααααΆααααααΆαα½αα
ααα»α
αααααΆαααααααΆα FreePBX ααααααΆααα»αααΌαααα αααα·α
ααΆα
αααΎα αα·αααΆααα½ααααα
αΌαααΆαααα dialplan α
ααΆαααα½ααα·ααααααααΈ PBX
α ααα»α ααααΌα αα·αααααΆαααααααααΌααααααααΆαααΊααΆαααα½αααΆααα·ααααααα’αααΈααΆαα α»αααααααα·ααααααααα· αα·αααΆαα α»αααααα SIP α α αααααααααααααα PBX ααΆαα ααα»α αααααΆαα AGI, AMI, ARI αα·α SSH α αααααΆααα ααα»ααααΆααααααα αααα»ααα·αααΆααα·α αΆαααΆαααΌαα»αααααααααα
ααααΌαααΎαααααΌαααααααααααΆααΎα’αΆααΈ, α’αΆααΈ, α’αΆααΈ ααΆαααααααΆα’αααΈ...
- AGI - αααααααΎααααααΈααααα»ααααα’αααααα ααααΎααΆα αααααααααΆααααΆααααααααααααΆαα α ααΌαααααα
- AMI - α’αΆα αααααααααααΆαα αΆαααΆα αααΆααα’αα ααααΎαααΆαααΆααααα ααα 5038 αααααααα ααΉα Telnet α ααΆαααααΉαααΎα!
- ARI - ααααΎα ααΆαααααα JSON α ααΆαααααααΆαααΆα αααΎα αααααααααΆααα·ααααααα’αΆα αααααΆααααααΆαα Zabbix ααα»αααααααααΆαααααα»ααα·αααΆαααΏαααααΆααααα α’ααααα·αα’αΆα αααααααααααΆαα α»αααααααααΈαααΆαααα αα»ααα·ααααα·αα½ααααααΊααΆ αααααΆαααα·ααααααααα·ααΆαααααααααΈαααΎα’ααΈαααΊαα·α/αααα αααααΆα αααααΈααΆααΆαααααα αααΎαααααα α αΎαααΆααΆααααααααααααα»αααΆαααααΆαα αααα»αααααΈαα αααααααΎααααα·αα·α ααααα
- SSH α’αΆα ααααΎα’αααΈαααααααααΆα ααα»αααααααααααααΆαα·αααααΌαααΆαα’αα»ααααΆααα αααααΆα "α ααα»αααα»ααααα·ααΆα"α ααΆααα·α αΆαααΆα’αΆα αα»αααααΆ αααα»αααΉααα·αα αΌααα αααα»ααα½αααααα
ααααααΆαααΆααααα ααΆαα½αααΉαα ααα»α ααααααΆαααΆααα’αα ARI αααααααααα 90% αααααααΌαααΆααααα½ααα·αα·αααααΆααα’ααα
Zabbix αα·α Telnet - ααΆαααα α·ααααααααααα»α
αααα»αααααΆαα AMI ααΆααααΆαααα’ αα ααααα½ααααα»αααΆαα’αα»ααααααΆαααΆαααΆαααΆαααΆααααααα αααα»αααΆαααααααΆααΆαα½αααΆααααα ααααΆαααΆαα·ααΆαααααΈα ααααΆα ααΆααααααααααααΆαα α ααΌαααααααα ααΆαα½α Telnet α’αααΈααααααααΆαααα αααΆαααααα ααΎαααΆααααααΆαα ααααΎααΆααααααααΆ αα·αα’αΆαααΆαααααΎαααα αααααΆα’αααΈααααααα»αααΆαααααΎ ααα»ααααααααααααΆαααααΎα±αααααα»αααα α·αααα
Telnet αααα Zabbix αα·αααΌα ααααΆααΉααα»αααΌαααα 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 ααΆαα’αΆααααααΆαααΆααααααα
β ααααααααααΆααααααΆαα
ααα»α
αααααΆααααΆαααααααααΆααααΆααααα αα·αααααΎααααΎαααααα ααΆαααααΎαααααΆααα’ααααααΌαααΆαααααΎαααααααααΆααα
ααΆ HTML αααα’αΆα
α’αΆαααΆαα αα·ααααααα·αααααα»ααααααΆααααΆααααα½ααα·αα·αααα
- ααααααα’αααααααααα»ααααα ααααΎαααααααααΆααααααααα
ααΉααα»αααΌα AMI
- ααααααα’αααααααααα»ααααα αααα»ααααααα XML α ααΆαααααΉαααΎα!

αααααΆαααααααα»αααΆααα·αααΆα Β«αααααΆαααααααααΆα! α₯α‘αΌααααα’αααΈαααΉααα½α
ααΆαα! α
ααααΆα
αααααΌα
ααααΆαααΆααααα½αβ ααα»ααααααΆααΏαααααααα»αααΆαααΈαααΆαα ααΎααααΈααα½αααΆαααααααΆααααααΎαααααΌαααΆα ααΆαααααααααΆαααααα»αααΆαααααΎααααΎ GET ααΆαα½αααΉααααααααΆαα
αΆαααΆα
α αααααααΆαααααα
αααα»αααΆαααααΎαααααΉααααα‘αα xml ααΆαα½αααΉααααααΈααααΆαα
α»ααααααααΆααα’αα αα·αααααΆαααΆαααααααΆα ααΆααα’αααααααα’ααΆαα ααα»ααααα’αααααααΌαααΆαααΆαα’αα»ααααΆαααΎααααΈα
αα
αΆαααααααΈααΌααΈα αα
αααα’αααααΆααααααα
αααα»ααααααα·ααΈαα»ααα α’ααααα·ααα·αααΈααααΎαααΆααααααα
ααααΎαααΆαα’αα»ααααΆα
ααααΌαααΎααααααα’αΆααααααΆα ααΆααΆαααααΎααα αααΆαααΈαααααααΎααααΎαααΌαααΌααΈααΆαα½αααΉαααααα’αα»ααααΆαα αααααΆα’αααΈαααααααΎ 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", i.e. ααΌααΈα’αα»ααααΆααααα½αα―αα
ααΆαα·ααΆαααα’αααααααΆααααααααΌαααΆαααΎααααΈαα·αα·αααααΎαα
ααααΎα "ααΆααααααααααΆααααααΌαααΆαααα½ααα" αααααΆαααα αααααΆααααΆαα α
ααΌαααααααΆααα’αααα
ααΆαααααΆαααΈααα 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 ααΎαααααΎα’αααα ααα½αααΈα username, αααΆαααΈα, ααααααα. αααα»ααααααΆαα α·αααααΉααααααααΆαα» 111111@login.mtt.ru:5060αααα»ααα·αααΆαααααΎαααααΆαααΆαααΆαα½ααααα’αααααααΌαααΆαααααΎα’αααααΆααααααΆαα
ααΆαα»ααααΆαααααααα½αααααααΆαα’αααΈααΆαα α»ααααααααΆααα’αα, αααααΆααααΆα - AMI SIPshowregistry. αααααααα»ααα½αααΆααΈααΆααααΎααΆαααααΎαα»α GET αα αααααΆααααΈααααα·αααααα XML ααααΎαααααααΌαααΆααααααΌααα ααΆαα»α’αΆαααααααΆααα’αααααααΆααααΆααααα αααααΆααααΆαα α»ααααααααΈαα½αα αααα»ααααααΎαααΆαα»αα½αα’αΆαααααααΎααΆα ααΆααΆααααα½α αααααΆαααΎαααα½αααΆαααααααΆαααααΈααα αααα»αααααΎαα½α α αΎααα·αααααααααΆααααααΎααΈαα½ααααΆα ααααα‘αααααααα ααΆαα’αα»αααααααααΆααα»ααα·ααααα·αααΆαααααΆαα - ααΆααααα»ααα ααΎαα½αααααΆαα
αα αααααααΎααααααα αΌαααα 100 ααΆαα»αααααΉαααα’αα αααα»ααα·αααΆαααααααααΆααααΈααααα»αααααα ααα»ααααααΆαα½αααΉαααΆαα» 1700 ααααααααααΌαααααα»α 15 αα·ααΆααΈαα½αα±ααααααααααΆαααα ααΎαα½αααααΆαα α αα αΆαααΏααααααααα·αααΎα’αααααΆαααΆαα»αααααΉαααα’ααα αααΎαα
ααΆαααααΎααα½αααΎααααΈ "ααΈαααΆαααΆα" ααααα»α α¬αααααααααααααααααααααα»ααααααΆαααααΆααααΆαα»αα½α α’αααα’αΆα ααααΆααααΈαααααα·ααααΆααααΎαααΆααα ααΆαα»ααΈαα½αααααα‘ααααΈααααΆα
αααα»ααα·ααααααΆαα»αααααααΆααααααΆαααα½ααα αααα»αααΆαα»ααααΆααααα ααΈαα½α αααα»ααα·αααΎααααααΌαααΆααααααΆααααΏαααααα α αΎαααΈααΈα ααααα·αααΎααΆαααααΎαααααΎαααΈ 64K ααα Zabbix ααΆααααΆα ααα
αααααΆαααΎαααααΎααΆαααααΎααα XML αααααααααααΆααααΆαα»α’αΆααααα ααΎαααααΌαααα½αααΆααααααααααΆαα»ααααααα»αααααΎαααΆααα»αα ααΆαααα XPath ααΆααααΌαααΆαααααΎααΌα
ααα:
string(//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 Peers
αααααΆαααααααααααΆααΆαα½αααΉαααΆαα α»αααααα SIP ααΆαααΆαα»ααααΆαααααααααΆααααΆα - AMI SIPshowregistry αααα’αααα’αΆαααααααααΌαααΆαααααααα
ααααααααΎαααΆαα»ααΉαααα’ααααΈαα
- ααααΆαααΆααα·ααααααααα·αααα»αααααααα’ααααα
- αααααααΆααααΎαααα§ααααα - ααααα·αααΎααααΆαααΆααα·αα’αΈαα αααααααΆααααΎαααα§αααααααααΌαααΆαααααα ααΎαα·αααΌα αααααα β-1β
ααααΌααα ααΆααααΆαα»αααα½αα―αααΊααΆααααααΆαααααα·α XPath:
string(//response/generic[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)
αααααΆααααΆαα»ααΈααΈα αααα»αααΆαααααΎ JavaScript ααΎααααΈααααα αααααααΆααααΎααα ααΈααααΆαααΆααα·ααααααααα· α αΆααααΆααααΈαα½αααΆααααΌαααΆααααααΆαα»αααΆαα½αααααΆα
if(value.substring(0,2) == 'OK'){
return value.match(/(d+)/gm);
}
else {
return -1;
}ααα ααααΈααααα·ααααΆα
αααααααααΆααααα αααα’ααα’αΆα αααα»αααααΆα α αΎααα·αα αααΆααααααΆααααα αααααΎαααΆααααααα αα·αα ααααααΆααααααααααααααα
ααΆααα½ααααα
αΌαααααΈαααΆα αα·αααΆααααα½αααΆααα’ααααααΆ! ααααΌ αα·αααΆαααααΆααααααΆααααα‘αΎα .
ααααα: www.habr.com
