Anns an artaigil roimhe Dh'innis mi dhut mar a gheibh thu seisean ceadachaidh agus cuir a-steach e ann am macro aoigheachd ionadail. San artaigil seo innsidh mi dhut mar a cheanglas tu Zabbix le Asterisk Ă s aonais sgriobtaichean agus bathar-bog taobh a-muigh.
Rugadh am beachd âcaraidean a dhèanamhâ den dĂ shiostam seo o chionn fhada, gun a bhith aâ stĂ ladh bathar-bog no sgriobtaichean a bharrachd. Thug googling sgiobalta mòran fhuasglaidhean a-mach, chaidh a h-uile cĂ il sĂŹos chun fhĂŹrinn gun luchdaich suas na sgriobtaichean (ann am Pyha, Bash, Python, msaa) chun t-seirbheisiche, agus bidh thu toilichte. Bha mi airson sgrĂšdadh âa-mach Ă s aâ bhogsa âa chuir an gnĂŹomh - Ă s aonais sgriobtaichean taobh a-muigh agus aâ stĂ ladh bathar-bog a bharrachd air an fhrithealaiche le sgrĂšdadh agus PBX.
Chuir mi seachad 4 latha obrach gu h-iomlan le seo, ach bâ fhiach an toradh e. Ag obair tro eadar-aghaidh AMI, lorg ĂŹre ĂŹosal, brosnachaidhean, agus nas cudromaiche, bheir e timcheall air 15 mionaidean ceangal am PBX agus a h-uile suidheachadh eile.
Tha Zabbix 4.4 ri fhaighinn, timcheall air 100 pĂŹos de dhreach Asterisk 13. Bidh cuid de PBXn aâ tighinn leis an eadar-aghaidh lĂŹn FreePBX, cuid le consol lom, dòrlach de chleasan agus aonachadh tro phlana dial.
Aâ faighinn dĂ ta bhon PBX
Is e aâ chiad agus aâ phrĂŹomh phuing a dhâ fheumar fhuasgladh a bhith aâ faighinn dĂ ta mu cho-aoisean agus clĂ raidhean SIP. Airson an adhbhair seo, tha eadar-aghaidh tòcan AGI, AMI, ARI agus SSH aig aâ PBX. Airson adhbharan follaiseach, cha do bheachdaich mi air modalan a bharrachd.
An toiseach feumaidh sinn faighinn a-mach dè a tha iad sin agi, ami, ari...
- AGI - a 'cleachdadh sgriobtaichean anns a' phlana dial. Sa mhòr-chuid air a chleachdadh airson riaghladh gairmean.
- AMI - is urrainn dhaibh am fiosrachadh riatanach uile a thoirt seachad, ag obair tro phort 5038, coltach ri Telnet. Tha e freagarrach dhuinn!
- ARI - nuadh-aimsireil, fasanta, JSON. Tha mòran chothroman ann, tha an cruth dĂ ta furasta a thuigsinn airson Zabbix, ach dhòmhsa chan eil prĂŹomh rud ann: chan urrainn dhut smachd a chumail air clĂ radh sip. Is e ana-cothrom eile a thâ ann nach eil ann airson co-aoisean ach dĂ stĂ it air-loidhne / far-loidhne, ged a tha barrachd stĂ itean ann agus tha e feumail aire a thoirt dhaibh nuair a thathar aâ breithneachadh.
- Faodaidh SSH a h-uile cĂ il a dhèanamh, ach uaireannan chan eil e ceadaichte air sgĂ th âadhbharan tèarainteachdâ. Faodaidh beachdachaidhean a bhith eadar-dhealaichte, cha tèid mi a-steach annta.
Ach, leis na h-uireasbhaidhean aige, tha ARI aâ còmhdach 90% de na feumalachdan sgrĂšdaidh air fad.
Zabbix agus Telnet - mo bhriseadh-dĂšil
Tha eòlas math agam air AMI; aig aon à m chuir mi an gnÏomh tracadh call ann an còmhraidhean le roinneadh le oifisean iomallach, riaghladh fiosan, msaa. Le Telnet, tha a h-uile dad gu math soilleir cuideachd: fosgail an ceangal, cuir na h-òrdughan agus leugh am freagairt. Sin a rinn mi, ach chuir an toradh briseadh dÚil orm.
Chan eil Telnet Zabbix mar an ceudna ri Telnet aâ chonsail. LinuxTha e beagan nas sĂŹmplidh agus air a dhealbhadh airson dearbhadh Ă bhaisteach logadh a-steach/facal-faire. Ma tha an loidsig dearbhaidh eadar-dhealaichte agus mura h-eil paidhir logadh a-steach/facal-faire air iarraidh, tachraidh mearachd. Ăs dèidh dhomh feuchainn gun soirbheachas ri riatanas an dearbhaidh a sheachnadh, thòisich mi aâ coimhead air còd tĂšsail modĂşl Telnet.
Thuig mi gus am bi iarrtas traidiseanta airson logadh a-steach agus facal-faire, nach gluais mi air adhart. DĂŹreach airson spòrs, thug mi air falbh a h-uile cĂ il co-cheangailte ri cead bhon chòd agus chruinnich mi a h-uile cĂ il. Ag obair! Ach chan eil e a 'coinneachadh ri riatanasan. SiuthadâŚ
Tillidh sinn chun an rannsachaidh
Leugh mi na sgrĂŹobhainnean ARI a-rithist, ruith mi deuchainnean a bharrachd - chan eil clĂ raidhean sip an seo. Tha fèistean ann, tha còmhraidhean ann, tha breeches ann, ach chan eil clĂ raidhean ann. Aig Ă m air choreigin bha mi eadhon aâ smaoineachadh, a bheil fĂŹor fheum againn air clĂ radh vulture?
Le co-thuiteamas èibhinn, aig an à m seo thig iarrtas eile bhon neach-cleachdaidh, le duilgheadas le fiosan a-muigh. B 'e an duilgheadas a bh' ann gun robh an clà radh sip a 'reothadh agus chaidh a rèiteachadh le bhith dÏreach ag ath-thòiseachadh a' mhodail.
asterisk -rx "sip reload"Bhiodh e math faighinn gu AMI thairis air an lĂŹon: bhiodh sin aâ fuasgladh na duilgheadasan gu lèir, shaoil ââââmi. Bidh mi a 'tòiseachadh a' cladhach an taobh seo, agus gu litearra tha a 'chiad loidhne sgrĂšdaidh a' leantainn gu na sgrĂŹobhainnean oifigeil Asterisk, a tha ag rĂ dh gu bheil roghainn ann airson mo ghnĂŹomhan lĂŹn-lĂŹn ann am faidhle /etc/asterisk/manager.conf, a dh'fheumas a bhith air a shuidheachadh gu THA, anns an earrann [coitcheann]
Ăs deidh seo, tro iarrtas lĂŹn cunbhalach den fhoirm gheibh sinn am fiosrachadh riatanach uile.
Nuair a chleachdas tu an eadar-aghaidh FreePBX, chan urrainn dhut an roghainn seo a chomasachadh tron ââââlĂŹon; feumaidh tu a chomasachadh tron ââââchonsĂłl le bhith ag atharrachadh am faidhle manager.conf. Cha bhith FreePBX ga dhubhadh Ă s nuair a thèid atharrachaidhean rèiteachaidh a dhèanamh tron ââââlĂŹon.
Tha mi air a bhith ag obair le diofar sheòrsaichean de aonachadh Asterisk airson Ăšine mhòr, ach chan fhaca mi a-riamh am feart seo air ainmeachadh an Ă ite sam bith. Chuir e iongnadh orm nach eil duine aâ toirt cunntas air an dòigh seo air eadar-obrachadh leis aâ PBX. Bha e eadhon gu sònraichte feumail a bhith aâ coimhead airson fiosrachadh air aâ chuspair seo: cha mhòr nach eil dad ann no chaidh a chleachdadh airson gnĂŹomhan gu tur eadar-dhealaichte.
WEB AMI - dè an seòrsa beathach?
A 'cur ri roghainn lĂŹn-lĂŹn a fhaidhleadh manaidsear.conf thug e lĂ n chothrom air stiĂšireadh ATS tron ââââlĂŹon. Tha a h-uile Ă ithne a tha ri fhaighinn tro AMI cunbhalach a-nis air an lĂŹon, faodaidh tu èisteachd ri tachartasan bhon PBX tro socaid. Chan eil am prionnsapal obrachaidh eadar-dhealaichte bhon consol AMI. Ăs deidh dhut an roghainn seo a chuir an gnĂŹomh, faodaidh tu fios a chuir chun PBX aig na seòlaidhean a leanas:
- duilleag-lĂŹn le eadar-aghaidh sĂŹmplidh airson a bhith aâ dèanamh deuchainn agus aâ cur iarrtasan le lĂ imh. Tha na freagairtean uile air an cruth ann an HTML a ghabhas leughadh. Chan eil e gu math freagarrach airson sgrĂšdadh.
- toradh teacsa a-mhĂ in, cruth coltach ri consol AMI
- toradh teacsa a-mhĂ in, ann an cruth XML. Tha e freagarrach dhuinn!

An uairsin smaoinich mi: âIs e seo am fuasgladh! A-nis bidh a h-uile dad deiseil! Leòmain furasta-peezy squeezey, âach bha e ro thrĂ th airson gĂ irdeachas a dhèanamh. Gus am fiosrachadh a tha a dhĂŹth oirnn fhaighinn, tha e gu leòr iarrtas GET a chleachdadh leis aâ ghnĂŹomh riatanach gnĂŹomha, a tha mar fhreagairt aâ tilleadh xml le liosta de gach clĂ radh agus an inbhe. Tha seo uile math, ach feumaidh tu cead airson cuimhne a chumail air an t-seisean bhon bhriosgaid. Nuair a nĂŹ thu deuchainn sa bhrobhsair, cha bhith thu aâ smaoineachadh mun phròiseas seo.
Pròiseas ceadachaidh
An toiseach bheir sinn aghaidh air an t-seòladh , mar fhreagairt, bidh am frithealaiche aâ cur briosgaid thugainn leis an t-seisean Ăšghdarrais. Seo mar a tha iarrtas HTTP coltach:
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: 1Freagairt:
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> Gus obair an sin feumaidh tu mansession_id="6f5de42c", i.e. aâ bhriosgaid Ăšghdarrais fhèin.
Susbaint a dhâ fheumas tu dĂŹreach sgrĂšdadh a dhèanamh airson an fhreagairt"Chaidh gabhail ri dearbhadh" An ath rud, airson a h-uile fios gu frithealaiche PBX, feumaidh sinn briosgaid Ăšghdarrais a chuir ris an iarrtas.
https://ats:8089/mxml?action=SIPpeers
Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"Leugh mar a gheibh thu briosgaid ceadachaidh agus cleachd e ann an iarrtasan eile an seo: âÂť
Gus eileamaidean tracadh a chruthachadh ann an Zabbix cleachdaidh mi lorg fèin-ghluasadach.
Dearbhadh fèin-ghluasadach
Gus clà raidhean a lorg gu fèin-ghluasadach agus sÚil a chumail air stà itean co-aoisean, feumaidh tu fios a chuir chun t-seòladh a leanas: no
Mar fhreagairt, bidh am PBX aâ tilleadh freagairt XML dhuinn:
<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> Tha tòrr sgudal anns an fhreagairt, agus mar sin ann an ro-phròiseas bidh sinn ga shÏoladh le teamplaid XPath: //response/generic[@host]
An uairsin tòisichidh an spòrs. Gus obrachadh le lorg agus eileamaidean a chruthachadh gu dinamach, feumaidh am freagairt a bhith ann an cruth JSON. Chan eil taic ri XML airson lorgan fèin-obrachail.
Gus XML a thionndadh gu JSON, bha agam ri beagan a chluich le ath-nuadhachadh fèin-ghluasadach, airson an do rinn mi sgriobt ann an JS

Puing inntinneach: ann am freagairt ATS, tha na paramadairean uile air an cuairteachadh le luachan singilte, agus Ă s deidh dhaibh an teamplaid a chuir an sĂ s //response/generic[@host] tha feadhainn dhĂšbailte nan Ă ite.
Gus eileamaidean a chruthachadh, bidh sinn aâ cleachdadh caochladairean bhon fhreagairt XML (a-nis JSON).

ClĂ radh SIP
Airson clĂ raidhean sip bidh sinn aâ cleachdadh trĂŹ caochladairean: ainm-cleachdaidh, slòigh, port. Bha mi toilichte le ainm an eileamaid 111111@login.mtt.ru:5060, Cha do lorg mi suidheachaidhean sam bith far am feum thu na còig caochladairean uile a chleachdadh.
Tha am prĂŹomh eileamaid a gheibh fiosrachadh mu dheidhinn a h-uile clĂ radh, Asterisk - AMI SIPshowregistry. Aon uair sa mhionaid nĂŹ e iarrtas GET gu , Ă s deidh sin thèid an dĂ ta freagairt XML a chuir gu gach eileamaid eisimeileach airson parsadh. Airson gach clĂ radh bidh mi a 'cruthachadh eileamaid a tha an urra ris. Tha seo goireasach oir gheibh sinn fiosrachadh as Ăšire ann an aon iarrtas, agus chan ann airson gach iarrtas fa leth. Tha ana-cothrom mòr aig aâ bhuileachadh seo - an luchd air aâ phròiseasar.
Nuair a rinn mi deuchainn air suas ri 100 eileamaidean eisimeileach, cha do mhothaich mi an luchd, ach le eileamaidean 1700, thug seo eallach follaiseach 15 diog air aâ phròiseasar. Cumaibh seo san amharc ma tha Ă ireamh mhòr de eileamaidean eisimeileach agad.
Mar roghainn an luchd âsgaoileadh a-machâ no diofar triceadan bhòtaidh a shuidheachadh airson eileamaid, faodaidh tu an loidsig giollachd a ghluasad gu gach eileamaid fa leth.
Cha bhith mi aâ stòradh an fhiosrachaidh a fhuaireadh sa phrĂŹomh eileamaid. An toiseach, chan eil mi aâ faicinn gu bheil feum air seo, agus san dĂ rna Ă ite, ma tha am freagairt nas motha na 64K, bidh Zabbix ga ghearradh dheth.
Leis gu bheil sinn aâ cleachdadh lĂ n fhreagairt XML airson an eileamaid eisimeil, feumaidh sinn luach an eileamaid seo fhaighinn ann an ro-phròiseasadh. Troimhe XPath tha e air a dhèanamh mar seo:
string (//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ stĂ ite)
Airson inbhean clĂ raidh, cha do chleachd mi inbhean teacsa, ach thionndaidh mi iad gu cruth Ă ireamhach aâ cleachdadh JavaScript:
switch(value) {
case 'Registered':
return 1;
case 'Unregistered':
return 0;
default:
return -1;
}
Co-aoisean SIP
Ann an co-chòrdadh ri clà raidhean SIP, tha prÏomh eileamaid de chlà r-clà raidh Asterisk - AMI SIPshow, ris an cuirear feadhainn an eisimeil ris.
Tha seo aâ cruthachadh dĂ eileamaid eisimeileach:
- Inbhe co-aoisean ann an cruth teacsa
- Ăine freagairt inneal - ma tha an inbhe ceart gu leòr, tha an Ăšine freagairt inneal air a sgrĂŹobhadh, air neo â-1â
Tha an t-slighe chun an eileamaid fhèin beagan nas sÏmplidh XPath:
string (//response/generic[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)
Airson an dà rna eileamaid chleachd mi JavaScript airson dealachadh Úine freagairt bhon inbhe cho-aoisean, seach gu bheil iad air an stòradh còmhla:
if(value.substring(0,2) == 'OK'){
return value.match(/(d+)/gm);
}
else {
return -1;
}co-dhĂšnadh
Faodaidh fuasgladh taobh a-muigh a 'bhogsa a bhith iom-fhillte agus chan eil e soilleir sa bhad. Aâ meudachadh sĂšbailteachd agus so-ghiĂšlain eadar diofar shiostaman
Amalachadh sona agus furasta a h-uile duine! Teamplaid agus stiÚireadh airson a stèidheachadh .
Source: www.habr.com
