Yuav ua li cas txuas Zabbix nrog Asterisk tawm ntawm lub thawv

Hauv tsab xov xwm dhau los "Zabbix - nthuav dav macro ciam teb" Kuv tau qhia koj yuav ua li cas thiaj li tau txais kev tso cai kev sib kho thiab hloov nws mus rau hauv lub zos host macro. Hauv tsab xov xwm no kuv yuav qhia koj yuav ua li cas txuas Zabbix nrog Asterisk yam tsis muaj cov ntawv sau sab nraud thiab software.

Lub tswv yim "ua phooj ywg" ntawm ob lub tshuab no tau yug los ntev dhau los, tsis muaj kev txhim kho ntxiv software lossis cov ntawv sau. Kev ceev googling tau txais ntau cov kev daws teeb meem, nws tag nrho cov boiled mus rau qhov tseeb tias upload cov ntawv (hauv Pyha, Bash, Python, thiab lwm yam) rau lub server, thiab koj yuav zoo siab. Kuv xav siv kev saib xyuas "tawm ntawm lub thawv" - tsis muaj cov ntawv sau sab nraud thiab txhim kho cov software ntxiv ntawm lub server nrog kev saib xyuas thiab PBX.

Kuv tau siv tag nrho 4 hnub ua haujlwm nrog qhov no, tab sis qhov txiaj ntsig tau tsim nyog. Ua haujlwm los ntawm AMI interface, ntsuas qib qis, cuam tshuam, thiab tseem ceeb tshaj, txuas PBX thiab tag nrho lwm qhov chaw tam sim no yuav siv sijhawm li 15 feeb.

Zabbix 4.4 muaj, txog 100 daim ntawm Asterisk version 13. Qee qhov PBXs tuaj nrog FreePBX lub vev xaib interface, qee qhov nrog lub console liab qab, ib pawg ntawm kev ua kom yuam kev thiab kev koom ua ke ntawm tus xov tooj.

Tau txais cov ntaub ntawv los ntawm PBX

Thawj thiab lub ntsiab lus tseem ceeb uas yuav tsum tau daws yog tau txais cov ntaub ntawv hais txog cov phooj ywg thiab SIP kev sau npe. Rau lub hom phiaj no, PBX muaj AGI, AMI, ARI thiab SSH console interfaces. Rau qhov laj thawj pom tseeb, kuv tsis tau txiav txim siab ntxiv modules.

Ua ntej peb yuav tsum paub seb cov agi, ami, ari yog dab tsi ...

  • AGI - siv cov ntawv sau hauv lub dialplan. Feem ntau yog siv rau kev tswj kev hu.
  • AMI - tuaj yeem muab tag nrho cov ntaub ntawv tsim nyog, ua haujlwm los ntawm chaw nres nkoj 5038, zoo ib yam li Telnet. Haum rau peb!
  • ARI - niaj hnub, zam, JSON. Muaj ntau txoj hauv kev, cov ntaub ntawv hom yog nkag siab rau Zabbix, tab sis rau kuv tsis muaj ib qho tseem ceeb: koj tuaj yeem tswj tsis tau daim ntawv sau npe. Lwm qhov tsis zoo yog tias rau cov phooj ywg tsuas muaj ob lub xeev hauv online / offline, txawm hais tias muaj ntau lub xeev thiab nws yog qhov tseem ceeb los coj lawv mus rau hauv tus account thaum kuaj.
  • SSH tuaj yeem ua txhua yam, tab sis qee zaum nws tsis raug tso cai vim "kev nyab xeeb vim li cas". Kev txiav txim siab yuav txawv, Kuv yuav tsis mus rau hauv lawv.

Txawm li cas los xij, nrog rau tag nrho nws qhov tsis txaus, ARI npog 90% ntawm tag nrho cov kev xav tau saib xyuas.

Zabbix thiab Telnet - kuv poob siab

Kuv paub AMI zoo; nyob rau ib lub sij hawm kuv tau ua raws li kev poob hauv kev sib tham nrog kev faib los ntawm chaw ua haujlwm nyob deb, hu rau kev tswj hwm, thiab lwm yam. Nrog Telnet, txhua yam tseem ceeb heev: qhib kev sib txuas, xa cov lus txib thiab nyeem cov lus teb. Qhov ntawd yog qhov kuv tau ua, tab sis qhov tshwm sim ua rau kuv poob siab.

Telnet hauv Zabbix tsis zoo ib yam li hauv Linux console, nws yog qhov yooj yim me ntsis thiab haum rau cov qauv kev tso cai xws li nkag mus / lo lus zais. Yog tias qhov kev tso cai logic txawv, thiab tsis muaj kev thov rau tus ID nkag mus / lo lus zais khub, qhov yuam kev tshwm sim. Tom qab futile sim hla dhau qhov kev tso cai yuav tsum tau, nws yog ib qhov tsim nyog los saib qhov chaws ntawm Telnet module.

Kuv pom tau hais tias kom txog thaum muaj kev thov nkag mus thiab lo lus zais ib txwm muaj, kuv yuav tsis txav mus tom ntej. Tsuas yog kev lom zem, kuv tshem tawm txhua yam ntsig txog kev tso cai los ntawm cov cai thiab rov ua txhua yam. Ua haujlwm! Tab sis nws tsis ua raws li qhov yuav tsum tau ua. Mus tom ntej…

Cia peb rov qab mus rau qhov kev tshawb nrhiav

Kuv rov nyeem cov ntaub ntawv ARI dua, khiav cov kev xeem ntxiv - tsis muaj cov ntawv sau npe ntawm no. Muaj kev lom zem, muaj kev sib tham, muaj breeches, tab sis tsis muaj npe. Qee lub sij hawm kuv txawm xav tias, peb puas xav tau kev tso npe SIP tiag tiag?

Los ntawm kev lom zem coincidence, nyob rau lub sijhawm no lwm qhov kev thov tuaj txog los ntawm tus neeg siv, muaj teeb meem nrog kev hu tawm. Qhov teeb meem yog tias daim ntawv sau npe sip tau khov thiab tau daws los ntawm tsuas yog rebooting lub module.

asterisk -rx "sip reload"

Nws yuav zoo heev rau kev nkag mus rau AMI hauv lub vev xaib: uas yuav daws tau txhua yam teeb meem, kuv xav. Kuv pib khawb hauv qhov kev taw qhia no, thiab qhov tseeb thawj kab tshawb nrhiav ua rau cov ntaub ntawv Asterisk, uas hais tias muaj kev xaiv rau kuv txoj haujlwm. webenabled hauv cov ntaub ntawv /etc/asterisk/manager.conf, uas yuav tsum tau teem rau YES, nyob rau hauv seem [General]

Tom qab no, los ntawm kev thov lub vev xaib tsis tu ncua ntawm daim ntawv http://ats:8089/mxml?action=SIPshowregistry peb tau txais tag nrho cov ntaub ntawv tsim nyog.

Thaum siv FreePBX interface, koj tsis tuaj yeem qhib qhov kev xaiv no ntawm lub vev xaib; koj yuav tsum ua kom nws los ntawm console los ntawm kev hloov pauv rau cov ntaub ntawv manager.conf. FreePBX tsis rho tawm nws thaum hloov pauv kev teeb tsa los ntawm lub vev xaib.

Kuv tau ua hauj lwm nrog ntau hom Asterisk kev koom ua ke rau lub sijhawm ntev, tab sis kuv tsis tau pom cov yam ntxwv no tau hais nyob qhov twg. Kuv xav tsis thoob tias tsis muaj leej twg piav txog txoj kev cuam tshuam nrog PBX. Nws yog qhov tseem ceeb tshwj xeeb los nrhiav cov ntaub ntawv ntawm cov ncauj lus no: tsis muaj qhov ua tau zoo lossis nws tau siv rau cov haujlwm sib txawv kiag li.

WEB AMI - yam tsiaj nyaum dab tsi?

Ntxiv ib qho kev xaiv webenabled ua ntaub ntawv manager.conf muab tag nrho nkag mus rau ATS kev tswj hwm ntawm lub vev xaib. Tag nrho cov lus txib muaj los ntawm AMI niaj hnub tam sim no hauv lub vev xaib, koj tuaj yeem mloog cov xwm txheej los ntawm PBX ntawm lub qhov (socket). Lub hauv paus ntsiab lus ntawm kev ua haujlwm tsis txawv ntawm console AMI. Tom qab qhib qhov kev xaiv no, koj tuaj yeem tiv tauj PBX ntawm qhov chaw nyob hauv qab no:

https://ats:8089/manager - nplooj ntawv web nrog lub interface yooj yim rau kev sim thiab xa cov ntawv thov. Tag nrho cov lus teb yog formatted rau hauv HTML nyeem tau. Tsis haum rau kev saib xyuas.
https://ats:8089/rawman - cov ntawv tso zis nkaus xwb, hom ntawv zoo ib yam li console AMI
https://ats:8089/mxml - Cov ntawv tso tawm nkaus xwb, hauv hom XML. Haum rau peb!

Yuav ua li cas txuas Zabbix nrog Asterisk tawm ntawm lub thawv

Tom qab ntawd kuv xav tias: β€œQhov no yog qhov kev daws teeb meem! Tam sim no txhua yam yuav npaj txhij! Ib qho yooj yim-peezy txiv qaub squeezey, "tab sis nws tseem ntxov dhau los ua kev zoo siab. Txhawm rau kom tau txais cov ntaub ntawv peb xav tau, nws txaus los siv daim ntawv thov GET nrog qhov tsim nyog ua txiav txim, uas nyob rau hauv teb xa xml nrog ib daim ntawv teev tag nrho cov npe thiab lawv cov xwm txheej. Qhov no yog txhua yam zoo, tab sis koj xav tau kev tso cai kom nco qab qhov kev sib kho los ntawm cov ncuav qab zib. Thaum koj sim hauv browser, koj tsis xav txog cov txheej txheem no.

Txoj kev tso cai

Ua ntej peb hais qhov chaw nyob http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, nyob rau hauv teb, tus neeg rau zaub mov xa peb cov ncuav qab zib nrog rau kev tso cai kev sib kho. Nov yog qhov kev thov HTTP zoo li:

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

Teb:

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>

Txhawm rau ua haujlwm nyob ntawd koj xav tau mansession_id="6f5 ib", i.e. tso cai ncuav qab zib nws tus kheej.
Cov ntsiab lus koj tsuas yog yuav tsum kuaj xyuas cov lus teb "Kev lees paub lees paub" Tom ntej no, rau txhua qhov kev hu mus rau PBX server, peb yuav tsum tau ntxiv ib daim ntawv tso cai ncuav qab zib rau qhov kev thov.

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

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

Nyeem yuav ua li cas kom tau txais cov ncuav qab zib tso cai thiab siv nws hauv lwm qhov kev thov ntawm no: "Zabbix - nthuav macro ciam tebΒ»

Txhawm rau tsim kev taug qab cov ntsiab lus hauv Zabbix Kuv yuav siv nws pib nrhiav.

Nws pib nrhiav

Txhawm rau kuaj pom cov ntawv sau npe thiab taug qab cov xeev cov neeg sib tw, koj yuav tsum hu rau qhov chaw nyob hauv qab no: https://ats:8089/mxml?action=SIPshowregistry los yog https://ats:8089/mxml?action=SIPpeers

Hauv kev teb, PBX xa peb cov lus teb 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>

Muaj ntau cov khib nyiab hauv cov lus teb, yog li hauv preprocessing peb lim nws los ntawm template XPath: // teb/generic[@host]
Ces qhov kev lom zem pib. Txhawm rau ua haujlwm nrog kev tshawb pom thiab tsim cov ntsiab lus dynamically, cov lus teb yuav tsum yog JSON hom. XML tsis muaj kev txhawb nqa rau kev tshawb pom nws pib.

Txhawm rau hloov XML rau JSON, kuv yuav tsum tau ua si me ntsis nrog kev hloov pauv, uas kuv tau ua tsab ntawv hauv JS

Yuav ua li cas txuas Zabbix nrog Asterisk tawm ntawm lub thawv

Lub ntsiab lus nthuav dav: hauv ATS cov lus teb, txhua qhov tsis muaj nyob ib puag ncig los ntawm ib qho lus hais, thiab tom qab siv tus qauv // teb/generic[@host] lawv hloov los ntawm ob.

Txhawm rau tsim cov ntsiab lus, peb siv qhov sib txawv los ntawm XML cov lus teb (tam sim no JSON).

Yuav ua li cas txuas Zabbix nrog Asterisk tawm ntawm lub thawv

SIP Registry

Rau kev sau npe sip peb siv peb qhov sib txawv: username, party, qhov chaw nres nkoj. Kuv zoo siab nrog lub npe ntawm lub caij [email tiv thaiv]: 5060, Kuv tsis tau pom ib qho xwm txheej twg uas koj yuav tsum siv tag nrho tsib qhov sib txawv.

Lub ntsiab tseem ceeb uas tau txais cov ntaub ntawv hais txog txhua qhov kev sau npe, Asterisk - AMI SIPshowregistry. Ib zaug ib feeb nws ua rau GET thov rau https://ats:8089/mxml?action=SIPshowregistry, tom qab uas cov lus teb XML cov ntaub ntawv raug xa mus rau tag nrho cov nyob rau hauv parsing. Rau txhua qhov kev sau npe kuv tsim ib qho chaw nyob ntawm nws. Qhov no yooj yim vim tias peb tau txais cov ntaub ntawv hloov tshiab hauv ib qho kev thov, thiab tsis yog rau txhua qhov kev thov sib cais. Qhov kev siv no muaj qhov tsis zoo tseem ceeb - kev thauj khoom ntawm lub processor.

Thaum kuaj txog li 100 lub ntsiab lus, kuv tsis tau pom cov khoom thauj, tab sis nrog 1700 cov ntsiab lus, qhov no tau pom zoo 15 thib ob ntawm cov khoom siv. Khaws qhov no rau hauv siab yog tias koj muaj ntau cov ntsiab lus nyob.

Raws li ib qho kev xaiv rau "tshaj tawm" lub load los yog teem caij xaiv tsa sib txawv rau ib lub caij, koj tuaj yeem txav cov txheej txheem ua haujlwm rau txhua lub caij sib cais.

Kuv tsis khaws cov ntaub ntawv tau txais hauv lub ntsiab lus. Ua ntej, kuv tsis pom qhov xav tau ntawm qhov no, thiab qhov thib ob, yog tias cov lus teb ntau dua 64K, ces Zabbix txiav nws.

Txij li thaum peb siv tag nrho XML cov lus teb rau cov khoom nyob, peb yuav tsum tau txais tus nqi ntawm cov khoom no hauv kev ua ntej. Los ntawm XPath nws ua li no:
string(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ xeev)
Rau cov xwm txheej sau npe, kuv tsis tau siv cov ntawv teev npe, tab sis hloov lawv mus rau hauv cov lej siv JavaScript:

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

SIP Peers

Los ntawm kev sib piv nrog kev sau npe SIP, muaj lub ntsiab lus tseem ceeb ntawm Asterisk - AMI SIPshowregistry, uas cov neeg nyob tau ntxiv.

Qhov no tsim ob lub ntsiab lus:

  • Peer xwm txheej nyob rau hauv daim ntawv nyeem
  • Lub sij hawm teb lub cuab yeej - yog tias qhov xwm txheej zoo, ces lub sijhawm teb lub cuab yeej raug sau, txwv tsis pub "-1"

Txoj kev mus rau lub caij nws tus kheej yog me ntsis yooj yim XPath:

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

Rau lub caij thib ob kuv siv JavaScript cais teb lub sijhawm los ntawm kev sib raug zoo, txij li lawv tau khaws cia ua ke:

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

xaus

Qhov kev daws teeb meem tawm ntawm lub thawv tuaj yeem yog qhov nyuaj thiab tsis meej tam sim ntawd. Ua kom yooj thiab txav tau yooj yim ntawm cov tshuab sib txawv

Zoo siab thiab yooj yim kev koom ua ke txhua tus! Template thiab cov lus qhia rau kev teeb tsa GitHub.

Tau qhov twg los: www.hab.com

Ntxiv ib saib