Sida loogu xidho Zabbix asterisk ka baxsan sanduuqa

Maqaalkii hore "Zabbix - ballaarinta xuduudaha macro" Waxaan kuu sheegay sida loo helo fadhiga oggolaanshaha oo loogu beddelo macro-maqalka deegaanka. Maqaalkani waxaan kuu sheegi doonaa sida loo xiro Zabbix oo leh Asterisk iyada oo aan lahayn qoraallo iyo software dibadda ah.

Fikradda ah in lagu "saaxiibo" labadan nidaam waxay dhalatay wakhti dheer ka hor, iyada oo aan la rakibin software dheeraad ah ama qoraallo. Googling degdeg ah ayaa keenay xalal badan oo suurtagal ah, dhammaantood waxay hoos u dhigeen xaqiiqda ah in qoraallada (Pyha, Bash, Python, iwm.) ku dhejiyaan server-ka, waadna ku farxi doontaa. Waxaan rabay inaan hirgeliyo la socodka "ka baxsan sanduuqa" - iyada oo aan lahayn qoraallo dibadeed iyo ku rakibida software dheeraad ah serverka oo leh kormeer iyo PBX.

Waxaan ku qaatay wadar ahaan 4 maalmood oo shaqo tan, laakiin natiijadu waxay ahayd mid u qalantaa. Ka shaqaynta interneedka AMI, ogaanshaha heerka hoose, kicinta, iyo tan ugu muhiimsan, isku xidhka PBX iyo dhammaan goobaha kale hadda waxay qaadataa 15 daqiiqo.

Zabbix 4.4 waa la heli karaa, qiyaastii 100 xabbo oo nooca Asterisk 13. Qaar ka mid ah PBX-yada waxay la yimaadaan interface-ka shabakadda FreePBX, qaarna waxay wataan konsole qaawan, farabadan oo tabaha iyo is dhexgalka iyada oo loo marayo dialplan.

Helitaanka xogta PBX

Qodobka ugu horreeya iyo kan ugu muhiimsan ee u baahan in la xalliyo waa helitaanka xogta ku saabsan facooda iyo diiwaangelinta SIP. Ujeedadan awgeed, PBX waxay leedahay AGI, AMI, ARI iyo SSH consoles interfaces. Sababo muuqda dartood, ma tixgelin qaybo dheeraad ah.

Marka hore waxaan u baahanahay inaan ogaano waxa ay yihiin agi, ami, ari...

  • AGI - adoo isticmaalaya qoraallada ku jira qorshaha garaaca. Inta badan loo isticmaalo maaraynta wicitaanka
  • AMI - waxay bixin kartaa dhammaan macluumaadka lagama maarmaanka ah, waxay ka shaqeysaa dekedda 5038, oo la mid ah Telnet. nagu habboon!
  • ARI - casri ah, moodada, JSON. Waxaa jira fursado badan, qaabka xogta waa la fahmi karo Zabbix, laakiin aniga ahaan ma jiraan wax ugu muhiimsan: ma xakameyn kartid diiwaangelinta kabashada. Khasaaro kale ayaa ah in facooda ay jiraan laba dawladood oo keliya khadka tooska ah / khadka tooska ah, inkasta oo ay jiraan gobollo badan oo ay faa'iido leedahay in lagu xisaabtamo marka la aqoonsanayo.
  • SSH wax walba way samayn kartaa, laakiin mararka qaarkood lama ogola "sababo ammaan" awgeed. Tixgelintu way ka duwanaan kartaa, anigu ma geli doono iyaga.

Si kastaba ha ahaatee, dhammaan cilladaheeda, ARI waxay dabooshaa 90% dhammaan baahiyaha la socodka.

Zabbix iyo Telnet - niyad jabkayga

Waxaan si fiican u aqaan AMI; hal mar waxaan hirgaliyay la socodka khasaaraha wada sheekeysiga kala qeybsanaanta xafiisyada fog, maamulka wicitaanka, iwm. Iyada oo Telnet, wax walbaa sidoo kale aad bay u cad yihiin: fur xiriirka, dir amarrada oo akhri jawaabta. Taasi waa waxa aan sameeyay, laakiin natiijadu way i niyad jabisay.

Telnet ee Zabbix la mid ma aha console-ka Linux, waa wax yar ka fudud oo loogu talagalay oggolaanshaha caadiga ah sida gelitaanka / erayga sirta ah. Haddii macquulka oggolaanshaha uu ka duwan yahay, oo uusan jirin codsi login/password lammaane, qalad ayaa dhacaya. Kadib isku dayo aan faa'iido lahayn oo lagu hareer maray shuruudaha oggolaanshaha, waxay ahayd faa'iido in la eego lambarka isha ee moduleka Telnet.

Waxaan xaqiiqsaday in ilaa laga helayo codsi soo jireen ah oo login iyo password, anigu hore uma socon doono. Madadaalada, wax kasta oo la xidhiidha oggolaanshaha ayaan ka saaray koodka oo wax walba dib baan isu ururiyey. shaqeeya Laakiin ma buuxin shuruudaha. Horey u soco…

Aan ku soo noqono raadinta

Waxaan dib u akhriyay dukumeentiyada ARI mar labaad, waxaan sameeyay imtixaano dheeraad ah - halkan ma jiraan diiwaan gelin kabis ah. Waxaa jira xaflado, waxaa jira sheeko, waxaa jira breeches, laakiin ma jiraan diiwaan gelin. Mar aan xitaa is idhi, ma run ahaantii ma u baahanahay diiwaangelinta gorgorka?

Dhacdo qosol leh, wakhtigan xaadirka ah codsi kale ayaa ka imanaya isticmaalaha, oo dhib ku leh wicitaannada baxaya. Dhibaatadu waxay ahayd in diwaan galinta kabashadu ay barafaysanaysay waxaana lagu xaliyay iyada oo si fudud dib loo bilaabo moduleka.

asterisk -rx "sip reload"

Way fiicnaan lahayd in AMI laga galo shabakadda: taasi waxay xallin lahayd dhammaan dhibaatooyinka, waxaan u maleeyay. Waxaan bilaabay inaan qodo jihadan, oo macno ahaan khadka raadinta ugu horreeya wuxuu horseedaa dukumeenti rasmi ah oo Asterisk, kaas oo sheegaya in ay jirto ikhtiyaarka hawlahayga. webenabled faylka ku jira /etc/asterisk/manager.conf, kaas oo u baahan in lagu dejiyo HAA, qaybta [guud]

Taas ka dib, iyada oo loo marayo codsi shabakad joogto ah oo foomka ah http://ats:8089/mxml?action=SIPshowregistry Waxaan helnaa dhammaan macluumaadka lagama maarmaanka ah.

Markaad isticmaalayso interface-ka FreePBX, ma awoodsiin kartid doorashadan adigoo isticmaalaya shabakada; waxaad u baahan tahay inaad awood u yeelato iyada oo loo marayo konsole adiga oo isbeddel ku samaynaya faylka manager.conf. FreePBX ma tirtirto marka qaabeynta isbeddelka lagu sameeyo shabakadda.

Waxaan la shaqeeyay noocyo kala duwan oo isdhexgalka Asterisk muddo dheer, laakiin weligay ma arag sifadan meel kasta lagu sheegay. Waxaan la yaabay in qofna uusan qeexin habkan la falgalka PBX. Waxay ahayd xitaa faa'iido gaar ah in la raadiyo macluumaadka mawduucan: ma jiraan wax dhab ah ama waxaa loo isticmaalay hawlo kala duwan.

WEB AMI - bahal noocee ah?

Ku darida ikhtiyaar webenabled in la xareeyo maamulaha.conf waxaa si buuxda loogu heli karaa maamulka ATS iyada oo loo sii marayo shabakada. Dhammaan amarrada laga heli karo AMI-ga caadiga ah ayaa hadda ku jira shabakadda, waxaad ka dhageysan kartaa dhacdooyinka PBX adigoo isticmaalaya godad. Mabda'a hawlgalku kama duwana konsole AMI. Kadib markaad dhaqaajiso doorashadan, waxaad kala xidhiidhi kartaa PBX ciwaanadan soo socda:

https://ats:8089/manager - bog shabakad leh interface fudud oo tijaabinta iyo codsiyada gacanta lagu diro. Dhammaan jawaabaha waxaa loo qaabeeyey HTML la akhriyi karo. Aan aad ugu habboonayn la socodka.
https://ats:8089/rawman - soo saarida qoraalka kaliya, qaab la mid ah console AMI
https://ats:8089/mxml - soo saarida qoraalka kaliya, oo ah qaabka XML. nagu habboon!

Sida loogu xidho Zabbix asterisk ka baxsan sanduuqa

Markaas ayaan is idhi: β€œTani waa xalku! Hadda wax walbaa diyaar bay noqon doonaan! Liin yar oo si fudud u fiiqaysa,” laakiin goor hore ayay ahayd in la farxo. Si aan u helno macluumaadka aan u baahanahay, waa ku filan in la isticmaalo codsiga GET oo leh tallaabada lagama maarmaanka ah tallaabo, kaas oo jawaabta ku soo celinaya xml liiska dhammaan diiwaan gelinta iyo xaaladdooda. Tani waa wax fiican, laakiin waxaad u baahan tahay oggolaansho si aad u xasuusato casharka buskudka. Markaad tijaabiso browserka, kama fikiraysid habkan.

Habka oggolaanshaha

Marka hore waxaan ka hadalnaa ciwaanka http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, iyada oo laga jawaabayo, adeeguhu waxa uu noo soo dirayaa buskud uu ku jiro fadhiga oggolaanshaha. Tani waa sida codsi HTTP u eg yahay:

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

Jawaab:

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>

Si aad halkaas uga shaqeyso waxaad u baahan tahay mansession_id="6f5de42c", tusaale ahaan buskudka oggolaanshaha laftiisa.
Nuxurka waxaad u baahan tahay oo kaliya inaad hubiso jawaabta"Xaqiijinta waa la aqbalay" Marka xigta, dhammaan wicitaannada server-ka PBX, waxaan u baahan doonaa inaan ku darno buskud oggolaanshaha codsiga.

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

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

Akhri sida loo helo buskudka oggolaanshaha oo u isticmaal codsiyada kale halkan: "Zabbix - ballaarinta xuduudaha macroΒ»

Si loo abuuro walxaha raadraaca gudaha Zabbix waxaan isticmaali doonaa ogaanshaha auto.

Ogaanshaha otomaatiga ah

Si aad si otomaatig ah u ogaato diiwaan gelinta iyo ula socoshada gobolada asxaabta, waxaad u baahan tahay inaad la xidhiidho ciwaanka soo socda: https://ats:8089/mxml?action=SIPshowregistry ama https://ats:8089/mxml?action=SIPpeers

Jawaabta, PBX waxay nagu soo celisaa jawaabta 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>

Waxaa jira qashin badan oo ku jira jawaabta, markaa diyaarinta hore waxaan ku shaandheyneynaa qaab-dhismeedka XPath: //jawaab/guud[@host]
Dabadeed madadaalo ayaa bilaabanaysa. Si loola shaqeeyo ogaanshaha oo si firfircoon loo abuuro curiyayaasha, jawaabtu waa inay noqotaa qaab JSON ah. XML laguma taageero ogaanshaha tooska ah.

Si aan XML ugu beddelo JSON, waxay ahayd inaan wax yar ku ciyaaro beddelka auto, kaas oo aan qoraal ku sameeyay JS

Sida loogu xidho Zabbix asterisk ka baxsan sanduuqa

Qodob xiiso leh: jawaabta ATS, dhammaan xuduudaha waxay ku wareegsan yihiin hal-sheegyo, iyo ka dib marka la isticmaalo qaabka //jawaab/guud[@host] waxa lagu bedelay laba-laab.

Si loo abuuro curiyayaasha, waxaanu isticmaalnaa doorsoomayaasha jawaabta XML (hadda JSON)

Sida loogu xidho Zabbix asterisk ka baxsan sanduuqa

Diiwaanka SIP

Diiwaangelinta sip-ka waxaan isticmaalnaa saddex doorsoome: username, ciidankii, dekedda. Waan ku faraxsanahay magaca curiyaha [emailka waa la ilaaliyay]: 5060, Ma helin wax xaalado ah oo aad u baahan tahay inaad isticmaasho dhammaan shanta doorsoomayaasha.

Qaybta ugu muhiimsan ee hela macluumaadka ku saabsan dhammaan diiwaangelinta, Asterisk - AMI SIPshowregistry. Halkii daqiqiba waxa ay samaysaa codsi GET https://ats:8089/mxml?action=SIPshowregistry, ka dib jawaabta xogta XML waxaa loo gudbiyaa dhammaan walxaha ku tiirsan si loo kala saaro. Diiwaangelin kasta waxaan abuuraa curiye ku tiirsan. Tani waa ku habboon tahay sababtoo ah waxaan ku helnaa macluumaadka ugu dambeeyay hal codsi, ee ma aha codsi kasta si gaar ah. Hirgelintani waxay leedahay dib u dhac weyn - culeyska saaran processor-ka.

Markii la tijaabiyay ilaa 100 walxood oo ku tiirsan, ma aanan dareemin culeyska, laakiin 1700 oo walxood, tani waxay siisay culeys 15 ilbiriqsi oo muuqda oo ku saabsan processor-ka. Tan maskaxda ku hay haddii aad leedahay tiro badan oo xubno ku tiirsan.

Ikhtiyaarka ah in aad "faafiso" culeyska ama aad dejiso tirooyin codbixineed oo kala duwan ee curiyaha, waxaad u dhaqaajin kartaa macquulka habaynta shay kasta si gaar ah.

Ma kaydiyo macluumaadka la helay qaybta ugu muhiimsan. Marka hore, ma arko baahida loo qabo tan, iyo marka labaad, haddii jawaabtu ka badan tahay 64K, ka dibna Zabbix ayaa gooyay.

Mar haddii aan u isticmaalno jawaab-celinta XML buuxda ee curiyaha ku-tiirsanaanta, waxaan u baahanahay inaan helno qiimaha cunsurkan horudhac. Iyadoo loo marayo XPath waxaa loo sameeyaa sidan:
xadhig gobol)
Heerarka diiwaangelinta, uma aan isticmaalin qoraallada qoraalka ah, laakiin waxaan u beddelay qaab nambareed anigoo isticmaalaya JavaScript:

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

SIP Asxaabta

Marka la barbar dhigo diiwaan gelinta SIP, waxaa jira shay muhiim ah oo xiddigiska - AMI SIPshoregistry, kaas oo kuwa ku tiirsan lagu daro.

Tani waxay abuurtaa laba walxood oo ku tiirsan:

  • Heerka asaaga ee qaabka qoraalka
  • Waqtiga jawaabta aaladda - haddii xaaladdu tahay OK, markaa wakhtiga jawaabta aaladda waa la qorayaa, haddii kale β€œ-1”

Jidka loo maro curiyaha laftiisa ayaa ka yara fudud XPath:

string

Cunsurka labaad waxaan isticmaalay JavaScript si aan u kala saaro waqtiga jawaabta laga bilaabo heerka facooda, mar haddii la wada kaydiyo:

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

gunaanad

Xalka ka baxsan sanduuqa wuxuu noqon karaa mid adag oo aan isla markiiba caddayn. Waxay kordhisaa dabacsanaan iyo qaadis u dhexeeya nidaamyada kala duwan

Farxad iyo is dhexgalka fudud qof walba! Qaabka iyo tilmaamaha dejinta GitHub.

Source: www.habr.com

Add a comment