Ao amin'ny lahatsoratra teo aloha Nolazaiko anao ny fomba handraisana fivoriana fanomezan-dĂ lana ary hanolo azy ho macro mpampiantrano eo an-toerana. Amin'ity lahatsoratra ity dia hilaza aminao ny fomba hampifandray an'i Zabbix amin'ny Asterisk tsy misy script sy rindrambaiko ivelany.
Ny hevitra hoe "manao namana" amin'ireo rafitra roa ireo dia teraka hatry ny ela, tsy misy fametrahana rindrambaiko na script fanampiny. Ny googling haingana dia namoaka vahaolana maro azo atao, izany rehetra izany dia nipoitra tamin'ny fampidirana ireo script (amin'ny Pyha, Bash, Python, sns.) amin'ny mpizara, dia ho faly ianao. Te hampihatra ny fanaraha-maso "avy amin'ny boaty" aho - tsy misy script ivelany ary mametraka rindrambaiko fanampiny amin'ny server miaraka amin'ny fanaraha-maso sy PBX.
Nandany 4 andro fiasana aho tamin'ity, saingy mendrika ny vokatra. Ny fiasana amin'ny alĂ lan'ny interface AMI, ny fanaraha-maso ambany, ny trigger, ary ny tena zava-dehibe, ny fampifandraisana ny PBX sy ny toe-javatra hafa rehetra dia mitaky 15 minitra eo ho eo.
Zabbix 4.4 dia misy, 100 eo ho eo amin'ny Asterisk version 13. Ny PBX sasany dia tonga miaraka amin'ny tranonkala FreePBX, ny sasany miaraka amin'ny console miboridana, andian-tsarimihetsika ary fampidirana amin'ny alĂ lan'ny dialplan.
Mandray data avy amin'ny PBX
Ny hevi-dehibe voalohany sy lehibe tokony hovahana dia ny fahazoana angon-drakitra momba ny namany sy ny fisoratana anarana SIP. Ho an'ity tanjona ity, ny PBX dia manana fifandraisana console AGI, AMI, ARI ary SSH. Noho ny antony mazava dia tsy nandinika modules fanampiny aho.
Mila fantarina aloha hoe inona ireto agi, ami, ari ireto...
- AGI - mampiasa script ao amin'ny dialplan. Ampiasaina indrindra amin'ny fitantanana antso.
- AMI - afaka manome ny fampahalalana ilaina rehetra, miasa amin'ny port 5038, mitovy amin'ny Telnet. Mifanaraka aminay!
- ARI - maoderina, lamaody, JSON. Betsaka ny azo atao, azo takarina amin'ny Zabbix ny format data, fa amiko tsy misy zava-dehibe: tsy afaka mifehy ny fisoratana anarana sip ianao. Ny tsy fahampiana iray hafa dia ny hoe ho an'ny mpiara-mianatra dia tsy misy afa-tsy fanjakana roa an-tserasera / an-tserasera, na dia misy fanjakana maro kokoa aza ary ilaina ny mandinika azy ireo rehefa manao fitiliana.
- Ny SSH dia afaka manao ny zava-drehetra, fa indraindray dia tsy azo atao noho ny "antony fiarovana". Mety ho hafa ny fiheverana, tsy hiditra amin'izy ireo aho.
Na izany aza, miaraka amin'ny lesoka rehetra, ny ARI dia mandrakotra ny 90% amin'ny filĂ na fanaraha-maso rehetra.
Zabbix sy Telnet - ny fahadisoam-panantenako
Fantatro tsara ny AMI; nisy fotoana aho nampihatra ny fanaraha-maso ny fatiantoka tamin'ny resaka nifanaovana tamin'ny birao lavitra, ny fitantanana ny antso, sns. Miaraka amin'ny Telnet, mazava tsara ihany koa ny zava-drehetra: sokafy ny fifandraisana, alefaso ny baiko ary vakio ny valiny. Izany no nataoko, saingy nandiso fanantenana ahy ny vokany.
Tsy mitovy ny Telnet an'ny Zabbix sy ny an'ny console. LinuxSomary tsotra kokoa izy io ary natao ho an'ny fanamarinana fidirana/tenimiafina mahazatra. Raha tsy mitovy ny lojika fanamarinana ary tsy misy fangatahana fidirana/tenimiafina roa, dia misy hadisoana mitranga. Rehefa avy niezaka nandingana ny fepetra takiana amin'ny fanamarinana aho nefa tsy nahomby, dia nanomboka nijery ny kaody loharanon'ny mĂŽdioly Telnet.
Tsapako fa raha tsy misy ny fangatahana fidirana sy tenimiafina mahazatra dia tsy handroso aho. Mba hialana voly fotsiny dia nesoriko tao amin'ny kaody ny zavatra rehetra mifandraika amin'ny fanomezan-dĂ lana ary natambatra indray ny zava-drehetra. Asa! Saingy tsy mahafeno ny fepetra takiana izany. Ataovy tsy am-pihambahambanaâŠ
Andao hiverina amin'ny fikarohana
Namaky indray ny antontan-taratasy ARI aho, nanao fitsapana fanampiny - tsy misy fisoratana anarana sip eto. Misy ny fety, misy ny fifampiresahana, misy ny breeches, saingy tsy misy fisoratana anarana. Nisy fotoana aza nieritreritra aho hoe, tena mila fisoratana anarana amin'ny voromahery ve isika?
Amin'ny kisendrasendra mampihomehy, amin'izao fotoana izao dia misy fangatahana hafa tonga avy amin'ny mpampiasa, misy olana amin'ny antso mivoaka. Ny olana dia ny fisoratana anarana sip dia nangatsiaka ary voavaha tamin'ny alĂ lan'ny famerenana fotsiny ny module.
asterisk -rx "sip reload"Tena tsara ny miditra amin'ny AMI amin'ny Internet: hamaha ny olana rehetra izany, hoy aho. Manomboka mihady amin'io lalana io aho, ary ara-bakiteny ny tsipika fikarohana voalohany dia mitondra mankany amin'ny antontan-taratasy ofisialy Asterisk, izay milaza fa misy safidy ho an'ny asako. webenabled anaty rakitra /etc/asterisk/manager.conf, izay mila apetraka amin'ny ENY, ao amin'ny fizarana [ankapobeny]
Aorian'izany, amin'ny alĂ lan'ny fangatahana tranonkala tsy tapaka ny endrika mahazo ny vaovao ilaina rehetra izahay.
Rehefa mampiasa ny FreePBX interface tsara ianao dia tsy afaka mamela an'io safidy io amin'ny alĂ lan'ny tranonkala dia mila mamela azy amin'ny alĂ lan'ny console amin'ny fanovana ny rakitra manager.conf. Tsy mamafa azy ny FreePBX rehefa misy ny fanovana fanovana atao amin'ny alĂ lan'ny tranonkala.
Efa ela aho no niara-niasa tamina karazana fampidirana Asterisk, saingy tsy mbola nahita an'io endri-javatra voalaza io na taiza na taiza aho. Gaga aho fa tsy misy mamaritra ity fomba fifandraisana amin'ny PBX ity. Tena ilaina mihitsy aza ny fitadiavana fampahalalana momba ity lohahevitra ity: saika tsy misy na ampiasaina amin'ny asa hafa tanteraka.
WEB AMI - karazana biby inona?
Manampy safidy webenabled mametraka manager.conf nanome fidirana feno amin'ny fitantanana ATS amin'ny alĂ lan'ny tranonkala. Ny baiko rehetra azo alaina amin'ny alĂ lan'ny AMI mahazatra dia ao amin'ny tranonkala izao, azonao atao ny mihaino hetsika avy amin'ny PBX amin'ny alĂ lan'ny socket. Ny fitsipiky ny fandidiana dia tsy misy hafa amin'ny console AMI. Aorian'ny fampandehanana ity safidy ity dia afaka mifandray amin'ny PBX amin'ireto adiresy manaraka ireto ianao:
- pejin-tranonkala misy interface tsara ho an'ny fitiliana sy fandefasana fangatahana amin'ny tanana. Ny valinteny rehetra dia amboarina ho HTML azo vakina. Tsy dia mety amin'ny fanaraha-maso.
- lahatsoratra ihany no mivoaka, endrika mitovy amin'ny console AMI
- famoahana lahatsoratra ihany, amin'ny endrika XML. Mifanaraka aminay!

Dia nieritreritra aho hoe: âIo no vahaolana! Ankehitriny dia ho vonona ny zava-drehetra! Mora-peezy citron squeezeyâ, nefa aloha loatra vao hifaly. Mba hahazoana ny vaovao ilaintsika dia ampy ny mampiasa fangatahana GET miaraka amin'ny hetsika ilaina hetsika, izay mamaly ny xml miaraka amin'ny lisitry ny fisoratana anarana rehetra sy ny satany. Tsara izany rehetra izany, saingy mila fahazoan-dĂ lana ianao hahatsiarovana ny fivoriana avy amin'ny cookie. Rehefa manandrana amin'ny navigateur ianao dia tsy mieritreritra an'io dingana io.
Fomba fanomezan-dĂ lana
Alefaso aloha ny adiresy , ho setrin'izany dia mandefa cookie aminay ny mpizara miaraka amin'ny fivoriana fanomezan-dĂ lana. Toy izao ny endriky ny fangatahana 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: 1namaly:
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> Mila miasa any ianao mansession_id="6f5d42c", izany hoe ny cookie fanomezan-dĂ lana mihitsy.
Ny votoatiny dia mila manamarina ny valiny fotsiny ianao "Nekena ny fanamarinana" Manaraka, ho an'ny antso rehetra amin'ny mpizara PBX, dia mila manampy cookie fanomezan-dĂ lana amin'ny fangatahana.
https://ats:8089/mxml?action=SIPpeers
Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"Vakio eto ny fomba hahazoana cookie fanomezan-dà lana ary ampiasao izany amin'ny fangatahana hafa: "»
Mba hamoronana singa fanaraha-maso ao amin'ny Zabbix dia hampiasa auto detection aho.
Fikarohana fiara
Mba hamantarana ho azy ny fisoratana anarana sy hanaraha-maso ny fanjakana mitovy, dia mila mifandray amin'ity adiresy manaraka ity ianao: na
Ho setrin'izany dia mamerina valiny XML ho antsika ny PBX:
<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> Be dia be ny fako ao amin'ny valinteny, ka amin'ny fanomanana mialoha dia sivana amin'ny alĂ lan'ny mĂŽdely XPath: //valiny/generic[@host]
Dia manomboka ny fahafinaretana. Raha te hiasa amin'ny fitadiavana sy hamorona singa mavitrika dia tsy maintsy amin'ny endrika JSON ny valiny. XML dia tsy tohana amin'ny fitadiavana fiara.
Mba hamadihana XML ho JSON dia tsy maintsy nilalao kely tamin'ny fanoloana fiara aho, izay nanaovako script amin'ny JS.

Hevitra mahaliana: ao amin'ny valin'ny ATS, ny masontsivana rehetra dia voahodidin'ny teny tokana, ary aorian'ny fampiharana ny mĂŽdely //valiny/generic[@host] nosoloina roa sosona izy ireo.
Mba hamoronana singa dia mampiasa variables avy amin'ny valinteny XML (JSON ankehitriny) izahay.

Rejistra SIP
Ho an'ny fisoratana anarana sip dia mampiasa variables telo izahay: Anaran'ny mpampiasa, miaramila, seranan-tsambo. Faly aho tamin'ny anaran'ilay singa 111111@login.mtt.ru:5060, Tsy nahita toe-javatra tokony hampiasanao ireo fari-piainana dimy aho.
Ny singa fototra mandray vaovao momba ny fisoratana anarana rehetra, Asterisk - AMI SIPshowregistry. Indray mandeha isa-minitra dia manao fangatahana GET izy , aorian'izay dia alefa any amin'ny singa miankina rehetra ny angona XML valinteny ho an'ny fanapariahana. Ho an'ny fisoratana anarana tsirairay dia mamorona singa miankina aminy aho. Mety izany satria mahazo fampahalalana vaovao amin'ny fangatahana iray izahay, fa tsy amin'ny fangatahana tsirairay. Ity fampiharana ity dia manana lesoka lehibe - ny enta-mavesatra eo amin'ny processeur.
Rehefa nanandrana singa miankina 100 aho dia tsy nahatsikaritra ny entana, fa tamin'ny singa 1700, dia nanome entana 15 segondra miharihary amin'ny processeur izany. Ataovy ao an-tsaina izany raha manana singa miankina betsaka ianao.
Amin'ny maha-safidy "hanaparitaka" ny enta-mavesatra na hametraka matetika ny fandatsaham-bato ho an'ny singa iray, azonao atao ny mamindra ny lojika fanodinana amin'ny singa tsirairay.
Tsy mitahiry ny fampahalalana voaray ao amin'ny singa fototra aho. Voalohany, tsy hitako izay ilana izany, ary faharoa, raha mihoatra ny 64K ny valiny, dia tapahan'i Zabbix izany.
Koa satria mampiasa valinteny XML feno ho an'ny singa miankina isika dia mila mahazo ny sandan'ity singa ity amin'ny fanodinana mialoha. Amin'ny alalan'ny XPath dia natao toy izao:
string(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ fanjakana)
Ho an'ny sata fisoratana anarana dia tsy nampiasa sata lahatsoratra aho, fa nanova azy ireo ho endrika nomerika mampiasa JavaScript:
switch(value) {
case 'Registered':
return 1;
case 'Unregistered':
return 0;
default:
return -1;
}
SIP mpiara
Amin'ny analogy amin'ny fisoratana anarana SIP dia misy singa fototra amin'ny Asterisk - AMI SIPshowregistry, izay ampiana ireo miankina.
Izany dia miteraka singa roa miankina:
- Satan'ny namana amin'ny endrika lahatsoratra
- Fotoan'ny famalian'ny fitaovana - raha OK ny sata, dia soratana ny fotoana famalian'ny fitaovana, raha tsy izany dia "-1"
Ny lalana mankany amin'ilay singa dia tsotra kokoa XPath:
string(//valiny/generic[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)
Ho an'ny singa faharoa dia nampiasa JavaScript aho hanasaraka fotoana famaliana avy amin'ny satan'ny mpiara-mianatra, satria izy ireo dia voatahiry miaraka:
if(value.substring(0,2) == 'OK'){
return value.match(/(d+)/gm);
}
else {
return -1;
}famaranana
Ny vahaolana ivelan'ny boaty dia mety ho sarotra ary tsy mazava. Mampitombo ny flexibility sy ny portability eo amin'ny rafitra samihafa
Fampidirana sambatra sy mora ny rehetra! Modely sy torolalana amin'ny fametrahana .
Source: www.habr.com
