Momwe mungalumikizire Zabbix ndi Asterisk kunja kwa bokosi

Munkhani yapita "Zabbix - kukulitsa malire akuluakulu" Ndidakuwuzani momwe mungalandirire gawo lovomerezeka ndikulowa m'malo mwa macro amderalo. M'nkhaniyi ndikuuzani momwe mungagwirizanitse Zabbix ndi Asterisk popanda zolemba ndi mapulogalamu akunja.

Lingaliro la "kupanga mabwenzi" a machitidwe awiriwa anabadwa kalekale, popanda kukhazikitsa mapulogalamu owonjezera kapena zolemba. Kuthamangitsa googling mwachangu kunapereka mayankho ambiri omwe angathe, zonse zidatheka kuti tumizani zolembazo (mu Pyha, Bash, Python, etc.) ku seva, ndipo mudzakhala okondwa. Ndinkafuna kukhazikitsa kuwunika "kunja kwa bokosi" - popanda zolemba zakunja ndikuyika pulogalamu yowonjezera pa seva ndikuwunika ndi PBX.

Ndinakhala masiku okwana 4 ogwira ntchito ndi izi, koma zotsatira zake zinali zoyenera. Kugwira ntchito pogwiritsa ntchito mawonekedwe a AMI, kuzindikira kwapansi, zoyambitsa, ndipo chofunika kwambiri, kulumikiza PBX ndi zoikamo zina zonse tsopano kumatenga pafupifupi mphindi 15.

Zabbix 4.4 ilipo, pafupifupi zidutswa 100 za mtundu wa Asterisk 13. Ma PBX ena amabwera ndi mawonekedwe a intaneti a FreePBX, ena okhala ndi cholumikizira chopanda kanthu, machenjerero ambiri ndi kuphatikiza kudzera pa dialplan.

Kulandira deta kuchokera ku PBX

Mfundo yoyamba ndi yaikulu yomwe iyenera kuthetsedwa ndikupeza deta yokhudzana ndi anzawo ndi kulembetsa kwa SIP. Pachifukwa ichi, PBX ili ndi mawonekedwe a AGI, AMI, ARI ndi SSH. Pazifukwa zomveka, sindinaganizire ma module owonjezera.

Choyamba tiyenera kudziwa kuti agi, ami, ari ndi chiyani ...

  • AGI - kugwiritsa ntchito zolembedwa mu dialplan. Amagwiritsidwa ntchito makamaka pakuwongolera mafoni.
  • AMI - ikhoza kupereka zonse zofunikira, imagwira ntchito kudzera pa doko 5038, mofanana ndi Telnet. Zikuyenera ife!
  • ARI - yamakono, yapamwamba, JSON. Pali zotheka zambiri, mawonekedwe a data amamveka kwa Zabbix, koma kwa ine palibe chinthu chachikulu: simungathe kuwongolera kulembetsa sip. Choyipa china ndi chakuti kwa anzawo pali mayiko awiri okha pa intaneti / pa intaneti, ngakhale pali mayiko ambiri ndipo ndizothandiza kuwaganizira pofufuza.
  • SSH ikhoza kuchita zonse, koma nthawi zina sikuloledwa chifukwa cha "zifukwa zachitetezo". Malingaliro angakhale osiyana, sindidzalowamo.

Komabe, ndi zofooka zake zonse, ARI imakhudza 90% ya zosowa zonse zowunikira.

Zabbix ndi Telnet - zokhumudwitsa zanga

Ndikudziwa bwino AMI; nthawi ina ndidakhazikitsa kutsatira zotayika pazokambirana ndi magawo akutali, kasamalidwe ka mafoni, ndi zina zambiri. Ndi Telnet, zonse zikuwonekeranso bwino: tsegulani kulumikizana, tumizani malamulo ndikuwerenga yankho. Ndi zimene ndinachita, koma zotsatira zake zinandikhumudwitsa.

Telnet mu Zabbix si yofanana ndi mu Linux console, ndiyosavuta pang'ono komanso yogwirizana ndi chilolezo chokhazikika monga kulowa / mawu achinsinsi. Ngati malingaliro ovomerezeka ndi osiyana, ndipo palibe pempho lolowera / achinsinsi awiri, cholakwika chimachitika. Pambuyo poyesera zopanda pake zodutsa zofunikira zovomerezeka, zinali zothandiza kuyang'ana pa code source ya module ya Telnet.

Ndinazindikira kuti mpaka pakhale pempho lachikhalidwe ndi mawu achinsinsi, sindidzapita patsogolo. Zongosangalatsa, ndinachotsa zonse zokhudzana ndi chilolezo kuchokera pa code ndikumanganso chirichonse. Ntchito! Koma sizikukwaniritsa zofunikira. Chitani zomwezo…

Tiyeni tibwerere kukusaka

Ndidawerenganso zolemba za ARI, ndidayesa mayeso owonjezera - palibe zolembetsa za sip pano. Pali maphwando, pali zokambirana, pali breeches, koma palibe zolembetsa. Panthawi ina ndinaganiza kuti, kodi timafunikiradi kulembetsa miimba?

Mwazodabwitsa, panthawiyi pempho lina limabwera kuchokera kwa wogwiritsa ntchito, ndi vuto la mafoni otuluka. Vuto linali loti kulembetsa sip kunali kozizira ndipo kunathetsedwa mwa kungoyambitsanso gawoli.

asterisk -rx "sip reload"

Zingakhale zabwino kupeza AMI pa intaneti: zomwe zingathetse mavuto onse, ndinaganiza. Ndikuyamba kukumba mbali iyi, ndipo mzere woyamba wofufuzira umatsogolera ku zolemba za Asterisk, zomwe zimati pali mwayi wosankha ntchito zanga. wolumikizidwa pa intaneti mu file /etc/asterisk/manager.conf, zomwe ziyenera kukhazikitsidwa ku YES, mu gawoli [ambiri]

Pambuyo pa izi, kudzera mu pempho lokhazikika pa intaneti la fomu http://ats:8089/mxml?action=SIPshowregistry timapeza zonse zofunika.

Mukamagwiritsa ntchito mawonekedwe a FreePBX, simungathe kuloleza njirayi kudzera pa intaneti; muyenera kuyiyambitsa kudzera pa console posintha fayilo ya manager.conf. FreePBX sichimachotsa pamene zosintha zasinthidwa pa intaneti.

Ndagwira ntchito ndi mitundu yosiyanasiyana ya kuphatikiza kwa Asterisk kwa nthawi yayitali, koma sindinawonepo mbaliyi ikutchulidwa paliponse. Ndinadabwa kuti palibe amene akufotokoza njira iyi yolumikizirana ndi PBX. Zinali zothandiza makamaka kufunafuna zambiri pamutuwu: palibe chilichonse kapena chinagwiritsidwa ntchito pazinthu zosiyanasiyana.

WEB AMI - ndi chilombo chanji?

Kuwonjezera njira wolumikizidwa pa intaneti ku file woyang'anira.conf adapereka mwayi wokwanira wowongolera ATS kudzera pa intaneti. Malamulo onse omwe akupezeka kudzera mu AMI wamba tsopano ali pa intaneti, mutha kumvera zochitika kuchokera ku PBX kudzera pa socket. Mfundo yogwiritsira ntchito si yosiyana ndi AMI ya console. Mukatsegula njirayi, mutha kulumikizana ndi PBX pama adilesi awa:

https://ats:8089/manager - tsamba lawebusayiti lomwe lili ndi mawonekedwe osavuta kuyesa ndikutumiza zopempha pamanja. Mayankho onse adasinthidwa kukhala ma HTML owerengeka. Osayenerera kwambiri kuyang'anira.
https://ats:8089/rawman - zotulutsa zolemba zokha, mawonekedwe ofanana ndi kutonthoza AMI
https://ats:8089/mxml - zolemba zokha, mumtundu wa XML. Zikuyenera ife!

Momwe mungalumikizire Zabbix ndi Asterisk kunja kwa bokosi

Kenako ndinaganiza kuti: β€œIli ndiye yankho! Tsopano zonse zikhala zokonzeka! Kufinyidwa kosavuta kwa mandimu,” koma kunali koyambirira kwambiri kuti tisangalale. Kuti tipeze zambiri zomwe tikufuna, ndikokwanira kugwiritsa ntchito pempho la GET ndikuchitapo kanthu kofunikira kuchitapo, zomwe poyankha zimabwezera xml ndi mndandanda wa zolembetsa zonse ndi mawonekedwe awo. Zonsezi ndizabwino, koma muyenera kuvomereza kuti mukumbukire gawolo kuchokera ku cookie. Mukayesa mu msakatuli, simukuganiza za njirayi.

Njira yovomerezeka

Choyamba timatchula adilesi http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, poyankha, seva imatitumizira cookie ndi gawo lovomerezeka. Umu ndi momwe pempho la HTTP limawonekera:

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

Yankho:

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>

Kuti mugwire ntchito kumeneko muyenera nyumba_id="6f5d42c", mwachitsanzo, cookie yovomerezeka yokha.
Zomwe mukufunikira kuti mufufuze yankho "Kutsimikizira kwavomerezedwa" Chotsatira, pama foni onse ku seva ya PBX, tidzafunika kuwonjezera cookie yovomerezeka pa pempho.

https://ats:8089/mxml?action=SIPpeers

Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"

Werengani momwe mungapezere cookie yovomerezeka ndikuigwiritsa ntchito pazopempha zina apa: "Zabbix - kukulitsa malire akuluΒ»

Kuti ndipange zinthu zotsatirira mu Zabbix ndidzagwiritsa ntchito kudzizindikira.

Kudziwikiratu

Kuti muzindikire okha olembetsa ndikutsata mayiko a anzanu, muyenera kulumikizana ndi adilesi iyi: https://ats:8089/mxml?action=SIPshowregistry kapena https://ats:8089/mxml?action=SIPpeers

Poyankha, PBX imatibwezera yankho la 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>

Pali zinyalala zambiri poyankha, kotero pokonzekeratu timasefa ndi template XPath: //response/generic[@host]
Kenako zosangalatsa zimayamba. Kuti mugwire ntchito ndikuzindikira ndikupanga zinthu mwamphamvu, yankho liyenera kukhala mumtundu wa JSON. XML sichitha kuzindikirika zokha.

Kuti ndisinthe XML kukhala JSON, ndimayenera kusewera pang'ono ndikusintha ma auto, komwe ndidapanga script mu JS.

Momwe mungalumikizire Zabbix ndi Asterisk kunja kwa bokosi

Mfundo yosangalatsa: mu mayankho a ATS, magawo onse amazunguliridwa ndi mawu amodzi, ndipo mutatha kugwiritsa ntchito template. //response/generic[@host] amasinthidwa ndi awiri.

Kuti tipange zinthu, timagwiritsa ntchito zosinthika kuchokera ku mayankho a XML (tsopano JSON).

Momwe mungalumikizire Zabbix ndi Asterisk kunja kwa bokosi

SIP Registry

Polembetsa sip timagwiritsa ntchito mitundu itatu: lolowera, khamu, doko. Ndinasangalala ndi dzina la chinthucho [imelo ndiotetezedwa]: 5060, Sindinapeze zochitika zilizonse zomwe muyenera kugwiritsa ntchito mitundu yonse isanu.

Chinthu chachikulu chomwe chimalandira chidziwitso cha zolembetsa zonse, Asterisk - AMI SIPshowregistry. Kamodzi miniti imapanga pempho la GET kuti https://ats:8089/mxml?action=SIPshowregistry, pambuyo pake deta ya XML imaperekedwa kuzinthu zonse zomwe zimadalira kuti zigawanike. Pakulembetsa kulikonse ndimapanga chinthu chodalira. Zimenezi n’zothandiza chifukwa timalandira zambiri zaposachedwa pa pempho limodzi, osati pa pempho lililonse padera. Kukhazikitsa uku kuli ndi vuto lalikulu - katundu pa purosesa.

Poyesa zinthu zodalira 100, sindinazindikire katunduyo, koma ndi zinthu 1700, izi zinapereka katundu wodziwika wa 15 pa purosesa. Kumbukirani izi ngati muli ndi zinthu zambiri zodalira.

Monga njira "yofalitsa" katunduyo kapena kukhazikitsa mavoti osiyanasiyana a chinthu, mutha kusuntha malingaliro okonzekera ku chinthu chilichonse padera.

Sindisunga zomwe ndalandira muzinthu zazikulu. Choyamba, sindikuwona kufunikira kwa izi, ndipo kachiwiri, ngati yankho liri loposa 64K, ndiye Zabbix amadula.

Popeza timagwiritsa ntchito yankho lathunthu la XML pazinthu zodalira, tifunika kupeza phindu la chinthuchi pokonzekeratu. Kudzera XPath zachitika motere:
chingwe(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ dziko)
Pazigawo zolembetsa, sindinagwiritse ntchito zilembo, koma ndidazisintha kukhala manambala pogwiritsa ntchito JavaScript:

switch(value) {
  case 'Registered':
    return 1;
  case 'Unregistered':
    return 0;
  default:
    return -1;
}

SIP anzanu

Poyerekeza ndi kulembetsa kwa SIP, pali chinthu chachikulu cha Asterisk - AMI SIPshowregistry, komwe odalira amawonjezedwa.

Izi zimapanga zinthu ziwiri zodalira:

  • Makhalidwe a anzawo m'mawu
  • Nthawi yoyankhira chipangizo - ngati zili bwino, ndiye kuti nthawi yoyankhira chipangizocho imalembedwa, apo ayi "-1"

Njira yopita ku chinthucho ndiyosavuta pang'ono XPath:

chingwe(//response/generic[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)

Pachigawo chachiwiri ndidagwiritsa ntchito JavaScript kuti ndipatule nthawi yoyankhira kuchokera kwa anzawo, chifukwa amasungidwa pamodzi:

if(value.substring(0,2) == 'OK'){
	return value.match(/(d+)/gm);
}
else {
	return -1;
}

Pomaliza

Yankho la kunja kwa bokosi likhoza kukhala lovuta komanso losamveka bwino. Kumawonjezera kusinthasintha ndi kusuntha pakati pa machitidwe osiyanasiyana

Kuphatikiza kosangalatsa komanso kosavuta kwa aliyense! Template ndi malangizo okhazikitsa GitHub.

Source: www.habr.com

Kuwonjezera ndemanga