Mar a cheanglas tu Zabbix le Asterisk a-mach às a’ bhogsa

Anns an artaigil roimhe "Zabbix - leudachadh crìochan macro" 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 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 http://ats:8089/mxml?action=SIPshowregistry 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:

https://ats:8089/manager - 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.
https://ats:8089/rawman - toradh teacsa a-mhàin, cruth coltach ri consol AMI
https://ats:8089/mxml - toradh teacsa a-mhàin, ann an cruth XML. Tha e freagarrach dhuinn!

Mar a cheanglas tu Zabbix le Asterisk a-mach às a’ bhogsa

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 http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, 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: 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: “Zabbix - leudachadh macro crìochan»

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: https://ats:8089/mxml?action=SIPshowregistry no https://ats:8089/mxml?action=SIPpeers

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

Mar a cheanglas tu Zabbix le Asterisk a-mach às a’ bhogsa

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).

Mar a cheanglas tu Zabbix le Asterisk a-mach às a’ bhogsa

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 https://ats:8089/mxml?action=SIPshowregistry, à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 GitHub.

Source: www.habr.com

Cuir beachd ann