Anns an artaigil roimhe
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 ann an Zabbix an aon rud ris a’ chonsal Linux, tha e beagan nas sìmplidhe agus air a dhealbhadh airson cead àbhaisteach leithid logadh a-steach / facal-faire. Ma tha an loidsig ceadachaidh eadar-dhealaichte, agus nach eil iarrtas ann airson paidhir logadh a-steach / facal-faire, bidh mearachd a’ tachairt. Às deidh oidhirpean neo-sheasmhach gus faighinn seachad air an riatanas ceadachaidh, bha e feumail coimhead air còd stòr modal 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
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:
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
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
Freagairt:
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:
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 [post-d fo dhìon]: 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
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