Nzira yekubatanidza Zabbix neAsterisk kunze kwebhokisi

Munyaya yapfuura "Zabbix - kuwedzera macro miganhu" Ndakuudza nzira yekugamuchira chikamu chemvumo uye nekuchitsiva mune yemuno host macro. Muchikamu chino ini ndichakuudza nzira yekubatanidza Zabbix neAsterisk pasina zvinyorwa zvekunze uye software.

Pfungwa ye "kuita shamwari" yeaya masystem maviri akazvarwa kare kare, pasina kuisa mamwe software kana zvinyorwa. Kukurumidza googling kwakaunza mhinduro dzakawanda dzinogona kuitika, zvese zvakabikwa kusvika pakuti kurodha zvinyorwa (muPyha, Bash, Python, nezvimwewo) kune sevha, uye iwe uchafara. Ini ndaida kuita yekutarisa "kunze kwebhokisi" - pasina zvinyorwa zvekunze uye nekuisa imwe software pane server nekutarisa uye PBX.

Ndakapedza mazuva ekushanda e4 neizvi, asi mhedzisiro yacho yaive yakakosha. Kushanda kuburikidza neiyo AMI interface, yakaderera-level kuona, zvinokonzeresa, uye zvinonyanya kukosha, kubatanidza iyo PBX uye mamwe ese mamwe marongero ikozvino inotora anenge maminitsi gumi nemashanu.

Zabbix 4.4 inowanikwa, ingangoita zana zvidimbu zveAsterisk vhezheni 100. Mamwe maPBX anouya neFreePBX webhu interface, mamwe aine isina chinhu console, boka remanomano uye kubatanidzwa kuburikidza nedhiyabhorosi.

Kugamuchira data kubva kuPBX

Chinhu chekutanga uye chikuru chinoda kugadziriswa ndechekuwana data nezve vezera uye SIP kunyoresa. Nechinangwa ichi, iyo PBX ine AGI, AMI, ARI uye SSH console interfaces. Nezvikonzero zviri pachena, ini handina kufunga mamwe mamodule.

Kutanga isu tinofanirwa kufunga kuti aya agi, ami, ari chii ...

  • AGI - kushandisa zvinyorwa mu dialplan. Inonyanya kushandiswa kufona manejimendi.
  • AMI - inogona kupa ruzivo rwese rwunodiwa, inoshanda kuburikidza nechiteshi 5038, yakafanana neTelnet. Inokodzera isu!
  • ARI - yemazuva ano, fashoni, JSON. Pane zvakawanda zvinogoneka, iyo data data inonzwisisika kune Zabbix, asi kwandiri hapana chinhu chikuru: haugone kudzora kunyoresa sip. Chimwe chinokanganisa ndechekuti kune vezera kune matunhu maviri chete pamhepo / pamhepo, kunyangwe paine mamwe matunhu uye zvinobatsira kuzvifunga kana uchiongorora.
  • SSH inogona kuita zvese, asi dzimwe nguva haibvumidzwe nekuda kwe "zvikonzero zvekuchengetedza". Mafungiro anogona kunge akasiyana, ini handisi kuzopinda mazviri.

Nekudaro, nekukanganisa kwayo kwese, ARI inovhara makumi mapfumbamwe muzana ezvese zvinodiwa zvekutarisisa.

Zabbix uye Telnet - kuodzwa mwoyo kwangu

Ndinoziva AMI zvakanaka; pane imwe nguva ndakashandisa kuteedzera kurasikirwa muhurukuro nekupatsanurwa nemahofisi ari kure, manejimendi ekufona, nezvimwe. NeTelnet, zvese zvakare zvakajeka: vhura chinongedzo, tumira mirairo uye uverenge mhinduro. Ndizvo zvandakaita, asi mhedzisiro yacho yakandiodza mwoyo.

Telnet muZabbix haina kufanana neiyo muLinux koni, iri nyore uye yakagadzirirwa kubvumidzwa kwakajairwa senge login / password. Kana iyo yemvumo logic yakasiyana, uye pasina chikumbiro chekupinda / password pair, kukanganisa kunoitika. Mushure mekuedza kusina maturo kunzvenga chinodikanwa chemvumo, zvaive zvakakosha kutarisa iyo kodhi kodhi yeTelnet module.

Ndakaona kuti kusvika pave nechinyakare chekupinda uye password chikumbiro, ini handifambire mberi. Kungonakidzwa chete, ndakabvisa zvese zvine chekuita nemvumo kubva kukodhi uye ndikabatanidza zvese. Works! Asi hazvizadzise zvinodiwa. Enderera mberi…

Ngatidzokere kukutsvaga

Ndakaverenga zvakare zvinyorwa zveARI zvakare, ndakamhanyisa mimwe bvunzo - hapana kunyoreswa sip pano. Kune mabiko, kune hurukuro, kune breeches, asi hapana kunyoresa. Pane imwe nguva ndakambofunga kuti, tinotoda kunyoresa gora here?

Nezviitiko zvinosetsa, panguva ino chimwe chikumbiro chinosvika kubva kumushandisi, nedambudziko nekufona kunobuda. Dambudziko nderekuti kunyoresa sip kwaitonhora uye kwakagadziriswa nekungotangazve module.

asterisk -rx "sip reload"

Zvingave zvakanaka kuwana AMI pamusoro pewebhu: izvo zvaizogadzirisa matambudziko ese, ndakafunga. Ini ndinotanga kuchera munzira iyi, uye chaizvo mutsara wekutanga yekutsvaga unotungamira kune iyo official Asterisk zvinyorwa, izvo zvinoti pane sarudzo yemabasa angu. webabled mufaira /etc/asterisk/manager.conf, iyo inoda kuiswa ku YES, muchikamu [general]

Mushure meizvi, kuburikidza nechikumbiro chenguva dzose chewebhu chefomu http://ats:8089/mxml?action=SIPshowregistry tinowana ruzivo rwese runodiwa.

Paunenge uchishandisa iyo FreePBX interface, haugone kugonesa iyi sarudzo kuburikidza newebhu; unofanirwa kuigonesa kuburikidza nekoni nekuchinja kune maneja.conf faira. FreePBX haidzime kana shanduko dzemagadzirirwo dzichiitwa kuburikidza newebhu.

Ndakashanda nemhando dzakasiyana dzeAsterisk kubatanidzwa kwenguva yakareba, asi handisati ndamboona ichi chimiro chichitaurwa chero kupi. Ndakashamisika kuti hapana anotsanangura nzira iyi yekudyidzana nePBX. Zvaitonyanya kubatsira kutsvaga ruzivo pamusoro penyaya iyi: hapana kana chinhu kana chakashandiswa kumabasa akasiyana zvachose.

WEB AMI - rudzii rwechikara?

Kuwedzera sarudzo webabled kufaira manager.conf yakapa mukana wakazara weATS manejimendi kuburikidza newebhu. Mirairo yese inowanikwa kuburikidza neAMI yenguva dzose yava pawebhu, unogona kuteerera kune zviitiko kubva kuPBX kuburikidza nesokisi. Nheyo yekushanda haina kusiyana neiyo console AMI. Mushure mekuita sarudzo iyi, unogona kubata PBX pamakero anotevera:

https://ats:8089/manager - peji rewebhu rine chimiro chakareruka chekuyedza uye nemaoko kutumira zvikumbiro. Mhinduro dzese dzakarongwa kuita HTML inoverengwa. Haina kunyatsokodzera kuongororwa.
https://ats:8089/rawman - zvinyorwa zvinobuda chete, fomati yakafanana neconsole AMI
https://ats:8089/mxml - zvinyorwa zvinobuda chete, mune XML fomati. Inokodzera isu!

Nzira yekubatanidza Zabbix neAsterisk kunze kwebhokisi

Ipapo ndakafunga kuti: β€œIyi ndiyo mhinduro! Iye zvino zvinhu zvose zvichange zvagadzirira! Iri nyore-peezy lemon squeezey,” asi kwakanga kuri kunyanyokurumidza kufara. Kuti tiwane ruzivo rwatinoda, zvakakwana kushandisa chikumbiro cheGET nechiito chinodiwa chiito, iyo inodzosa xml nerondedzero yezvose zvakanyoreswa uye chimiro chavo. Izvi zvese zvakanaka, asi iwe unoda mvumo yekurangarira chikamu kubva kucookie. Paunoyedza mubrowser, haufungi nezve maitiro aya.

Mvumo nzira

Kutanga tinogadzirisa kero http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, mukupindura, sevha inotitumira cookie nemusangano wemvumo. Izvi ndizvo zvinoita chikumbiro cheHTTP:

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

Mhinduro:

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 ushande ikoko unoda mansession_id="6f5de42c", kureva kuki yemvumo pachayo.
Zvemukati unongoda kutarisa mhinduro "Huchokwadi hwabvumwa" Tevere, kune ese mafoni kuPBX sevha, isu tichada kuwedzera mvumo yekuki kuchikumbiro.

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

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

Verenga maitiro ekuwana kuki yemvumo uye woishandisa mune zvimwe zvikumbiro pano: "Zabbix - kuwedzera macro miganhuΒ»

Kugadzira zvinhu zvekutevera muZabbix ini ndichashandisa kuona otomatiki.

Kuonekwa otomatiki

Kuti uone otomatiki kunyoreswa uye kuteedzera nyika dzevezera, unofanirwa kubata kero inotevera: https://ats:8089/mxml?action=SIPshowregistry kana https://ats:8089/mxml?action=SIPpeers

Mukupindura, iyo PBX inotidzosera mhinduro yeXML:

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

Pane marara akawanda mumhinduro, saka mukugadzirisa isu tinosefa netemplate XPath: //response/generic[@host]
Ipapo mafaro anotanga. Kushanda nekuona uye kugadzira zvine simba zvinhu, mhinduro inofanirwa kunge iri muJSON fomati. XML haitsigirwe pakuona otomatiki.

Kushandura XML kuita JSON, ndaifanira kutamba zvishoma nekutsiva otomatiki, iyo yandakaita script muJS.

Nzira yekubatanidza Zabbix neAsterisk kunze kwebhokisi

Chinhu chinonakidza: mumhinduro yeATS, ese maparamita akakomberedzwa neamwechete makotesheni, uye mushure mekushandisa template. //response/generic[@host] anotsiviwa neaviri.

Kugadzira zvinhu, tinoshandisa zvinosiyana kubva kuXML mhinduro (ikozvino JSON).

Nzira yekubatanidza Zabbix neAsterisk kunze kwebhokisi

SIP Registry

Kunyoresa sip tinoshandisa matatu akasiyana: Username, hondo, poti. Ndakafara nezita rechinhu [email inodzivirirwa]: 5060, ini handina kuwana chero mamiriro ezvinhu apo iwe unofanirwa kushandisa ese ari mashanu akasiyana.

Chinhu chikuru chinogashira ruzivo nezvese kunyoresa, Asterisk - AMI SIPshowregistry. Kamwe paminiti inoita chikumbiro cheGET kuna https://ats:8089/mxml?action=SIPshowregistry, mushure meiyo mhinduro yeXML data inopfuudzwa kune ese anotsamira zvinhu zveparsing. Pakunyoresa kwega kwega ini ndinogadzira chinhu chinoenderana nacho. Izvi zvakaringana nekuti tinogashira ruzivo rwechizvino-zvino muchikumbiro chimwe chete, uye kwete pachikumbiro chega chega. Kuitwa uku kune yakakosha drawback - mutoro pane processor.

Pakuedza kusvika ku100 inotsamira zvinhu, ini handina kuona mutoro, asi ne 1700 zvinhu, izvi zvakapa inooneka gumi neshanu mutoro pa processor. Chengetedza izvi mupfungwa kana uine nhamba huru yezvinhu zvinotsamira.

Sesarudzo ye "kuparadzira" mutoro kana kuseta mafambisirwo ekuvhota akasiyana echimwe chinhu, unogona kufambisa pfungwa yekugadzirisa kune chimwe nechimwe chinhu zvakasiyana.

Ini handichengete ruzivo rwakagamuchirwa muchinhu chikuru. Kutanga, ini handisi kuona kudiwa kweizvi, uye chechipiri, kana mhinduro yacho inopfuura 64K, ipapo Zabbix inoibvisa.

Sezvo isu tichishandisa yakazara XML mhinduro kune inotsamira chinhu, isu tinofanirwa kuwana kukosha kwechinhu ichi mukugadzirisa. Kuburikidza XPath zvaitwa seizvi:
tambo(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ nyika)
Kune mastatus ekunyoresa, handina kushandisa zvinyorwa zvemavara, asi ndakaashandura kuita manhamba fomu ndichishandisa JavaScript:

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

SIP Peers

Nekufananidza nekunyoreswa kweSIP, pane chinhu chikuru cheAsterisk - AMI SIPshowregistry, kune vanovimba vanowedzerwa.

Izvi zvinogadzira zvinhu zviviri zvinoenderana:

  • Mamiriro evezera muchimiro chemavara
  • Nguva yekupindura yemudziyo - kana chimiro chakanaka, ipapo nguva yekupindura mudziyo inonyorwa, zvikasadaro "-1"

Nzira yekuenda kuchinhu pachayo iri nyore zvishoma XPath:

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

Chechipiri chinhu ndakashandisa JavaScript kuparadzanisa nguva yekupindura kubva kune vezera, sezvo ivo vakachengetwa pamwechete:

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

mhedziso

Mhinduro yekunze-ye-bhokisi inogona kuva yakaoma uye isingakurumidzi kujeka. Inowedzera kuchinjika uye portability pakati akasiyana masisitimu

Kufara uye nyore kubatanidzwa munhu wese! Template uye mirairo yekumisikidza GitHub.

Source: www.habr.com

Voeg