Ninu nkan ti tẹlẹ Mo sọ fun ọ bi o ṣe le gba igba aṣẹ kan ki o rọpo rẹ sinu Makiro agbalejo agbegbe kan. Ninu nkan yii Emi yoo sọ fun ọ bi o ṣe le sopọ Zabbix pẹlu Aami akiyesi laisi awọn iwe afọwọkọ ita ati sọfitiwia.
Ero lati “ṣe ọrẹ” ti awọn ọna ṣiṣe meji wọnyi ni a bi ni igba pipẹ sẹhin, laisi fifi sọfitiwia afikun tabi awọn iwe afọwọkọ sori ẹrọ. A awọn ọna googling ti nso ọpọlọpọ awọn ṣee ṣe solusan, gbogbo awọn ti o boiled si isalẹ lati ni otitọ wipe po si awọn iwe afọwọkọ (ni Pyha, Bash, Python, ati be be lo) si olupin, ati awọn ti o yoo jẹ dun. Mo fẹ lati ṣe ibojuwo “jade kuro ninu apoti” - laisi awọn iwe afọwọkọ ita ati fifi sọfitiwia afikun sori olupin pẹlu ibojuwo ati PBX.
Mo lo apapọ awọn ọjọ iṣẹ mẹrin 4 pẹlu eyi, ṣugbọn abajade naa tọsi. Ṣiṣẹ nipasẹ wiwo AMI, wiwa ipele kekere, awọn okunfa, ati pataki julọ, sisopọ PBX ati gbogbo awọn eto miiran bayi gba to iṣẹju 15.
Zabbix 4.4 wa, nipa awọn ege 100 ti ẹya Aami akiyesi 13. Diẹ ninu awọn PBX wa pẹlu wiwo oju opo wẹẹbu FreePBX, diẹ ninu pẹlu console igboro, opo awọn ẹtan ati isọpọ nipasẹ eto dialplan.
Ngba data lati PBX
Ojuami akọkọ ati akọkọ ti o nilo lati yanju ni gbigba data nipa awọn ẹlẹgbẹ ati awọn iforukọsilẹ SIP. Fun idi eyi, PBX ni AGI, AMI, ARI ati SSH console atọkun. Fun awọn idi ti o han gedegbe, Emi ko ṣe akiyesi awọn modulu afikun.
Ni akọkọ a nilo lati ṣawari kini awọn agi wọnyi, ami, ari jẹ…
- AGI - lilo awọn iwe afọwọkọ ni dialplan. Ni akọkọ lo fun iṣakoso ipe.
- AMI - le pese gbogbo alaye pataki, ṣiṣẹ nipasẹ ibudo 5038, iru si Telnet. Dara fun wa!
- ARI - igbalode, asiko, JSON. Ọpọlọpọ awọn aye wa, ọna kika data jẹ oye fun Zabbix, ṣugbọn fun mi ko si ohun akọkọ: o ko le ṣakoso iforukọsilẹ sip. Alailanfani miiran ni pe fun awọn ẹlẹgbẹ awọn ipinlẹ meji nikan wa lori ayelujara / offline, botilẹjẹpe awọn ipinlẹ pupọ wa ati pe o wulo lati ṣe akiyesi wọn nigbati o ba ṣe iwadii aisan.
- SSH le ṣe ohun gbogbo, ṣugbọn nigbami o ko gba laaye nitori "awọn idi aabo". Awọn ero le yatọ, Emi kii yoo lọ sinu wọn.
Sibẹsibẹ, pẹlu gbogbo awọn ailagbara rẹ, ARI ni wiwa 90% ti gbogbo awọn iwulo ibojuwo.
Zabbix ati Telnet - mi oriyin
Mo mọ AMI daradara ni akoko kan Mo ṣe imuse titele awọn adanu ni awọn ibaraẹnisọrọ pẹlu pipin nipasẹ awọn ọfiisi latọna jijin, iṣakoso ipe, ati bẹbẹ lọ. Pẹlu Telnet, ohun gbogbo tun jẹ kedere: ṣii asopọ, firanṣẹ awọn aṣẹ ati ka esi naa. Ohun ti mo ṣe niyẹn, ṣugbọn abajade ko dun mi.
Telnet Zabbix kò jọ ti console náà. LinuxÓ rọrùn díẹ̀, ó sì jẹ́ èyí tí a ṣe fún ìfọwọ́sowọ́pọ̀ wíwọlé/ọ̀rọ̀ ìpamọ́ déédé. Tí ìlànà ìfọwọ́sowọ́pọ̀ bá yàtọ̀ síra, tí kò sì sí ìsopọ̀ wíwọlé/ọ̀rọ̀ ìpamọ́ tí a béèrè fún, àṣìṣe kan máa ń ṣẹlẹ̀. Lẹ́yìn tí mo gbìyànjú láti borí ìbéèrè ìfọwọ́sowọ́pọ̀ náà láìṣe àṣeyọrí, mo bẹ̀rẹ̀ sí í wo koodu orísun Telnet module.
Mo rii pe titi ti wiwọle ibile ati ibeere ọrọ igbaniwọle yoo wa, Emi kii yoo lọ siwaju. O kan fun igbadun, Mo yọ ohun gbogbo ti o ni ibatan si aṣẹ lati koodu ati pe ohun gbogbo jọ. Awọn iṣẹ! Sugbon o ko ni pade awọn ibeere. Tẹ siwaju…
Jẹ ki a pada si wiwa
Mo tun ka iwe ARI lẹẹkansi, ṣiṣe awọn idanwo afikun - ko si awọn iforukọsilẹ SIP nibi. Awọn ayẹyẹ wa, awọn ibaraẹnisọrọ wa, awọn breeches wa, ṣugbọn ko si awọn iforukọsilẹ. Ni aaye kan Mo paapaa ro pe, ṣe a nilo iforukọsilẹ gaan bi?
Nipa ijamba alarinrin, ni akoko yii ibeere miiran de lati ọdọ olumulo, pẹlu iṣoro pẹlu awọn ipe ti njade. Iṣoro naa ni pe iforukọsilẹ SIP jẹ didi ati pe o yanju nipasẹ atunbere module ni irọrun.
asterisk -rx "sip reload"Yoo jẹ nla lati wọle si AMI nipasẹ oju opo wẹẹbu: iyẹn yoo yanju gbogbo awọn iṣoro, Mo ro. Mo bẹrẹ n walẹ ni itọsọna yii, ati ni otitọ laini wiwa akọkọ yori si iwe aṣẹ Aami akiyesi, eyiti o sọ pe aṣayan wa fun awọn iṣẹ ṣiṣe mi. webenabled ninu faili /etc/asterisk/manager.conf, eyi ti o nilo lati ṣeto si BẸẸNI, ni apakan [gbogboogbo]
Lẹhin eyi, nipasẹ ibeere wẹẹbu deede ti fọọmu naa a gba gbogbo alaye pataki.
Nigba lilo FreePBX ni wiwo, o ko ba le jeki yi aṣayan nipasẹ awọn ayelujara; FreePBX ko parẹ nigbati awọn ayipada iṣeto ba ṣe nipasẹ oju opo wẹẹbu.
Mo ti ṣiṣẹ pẹlu awọn oriṣiriṣi awọn iṣọpọ Aami akiyesi fun igba pipẹ, ṣugbọn Emi ko rii ẹya yii ti a mẹnuba nibikibi. Mo yà mi lẹnu pe ko si ẹnikan ti o ṣe apejuwe ọna yii ti ibaraenisepo pẹlu PBX. Paapaa paapaa wulo lati wa alaye lori koko yii: ko si nkankan tabi o lo fun awọn iṣẹ ṣiṣe ti o yatọ patapata.
WEB AMI - iru ẹranko wo?
Fifi aṣayan kan kun webenabled lati faili alakoso.conf pese ni kikun wiwọle si ATS isakoso nipasẹ awọn ayelujara. Gbogbo awọn aṣẹ ti o wa nipasẹ AMI deede wa bayi lori wẹẹbu, o le tẹtisi awọn iṣẹlẹ lati PBX nipasẹ iho. Ilana ti iṣiṣẹ ko yatọ si AMI console. Lẹhin mimu aṣayan yii ṣiṣẹ, o le kan si PBX ni awọn adirẹsi wọnyi:
- Oju-iwe wẹẹbu kan pẹlu wiwo ti o rọrun fun idanwo ati fifiranṣẹ awọn ibeere pẹlu ọwọ. Gbogbo awọn idahun ti wa ni kika sinu HTML kika. Ko dara pupọ fun ibojuwo.
- iṣelọpọ ọrọ nikan, ọna kika ti o jọra si AMI console
- iṣelọpọ ọrọ nikan, ni ọna kika XML. Dara fun wa!

Lẹ́yìn náà, mo ronú pé: “Èyí ni ojútùú! Bayi ohun gbogbo yoo ṣetan! Rọrun-peezy lẹmọọn squeezey,” ṣugbọn o ti tete ju lati yọ. Lati gba alaye ti a nilo, o to lati lo ibeere GET pẹlu igbese to ṣe pataki igbese, eyiti o ni idahun pada xml pẹlu atokọ ti gbogbo awọn iforukọsilẹ ati ipo wọn. Eyi jẹ nla, ṣugbọn o nilo aṣẹ lati ranti igba lati kuki. Nigbati o ba ṣe idanwo ni ẹrọ aṣawakiri, iwọ ko ronu nipa ilana yii.
Ilana aṣẹ
Ni akọkọ a koju adirẹsi naa , ni idahun, olupin naa fi kukisi ranṣẹ si wa pẹlu igba aṣẹ. Eyi ni ohun ti ibeere HTTP kan dabi:
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: 1Idahun:
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> Lati ṣiṣẹ nibẹ o nilo mansession_id="6f5de42c", ie kuki aṣẹ funrarẹ.
Akoonu ti o kan nilo lati ṣayẹwo fun idahun "Ijeri gba" Nigbamii, fun gbogbo awọn ipe si olupin PBX, a yoo nilo lati ṣafikun kuki aṣẹ si ibeere naa.
https://ats:8089/mxml?action=SIPpeers
Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"Ka bii o ṣe le gba kuki aṣẹ ati lo ninu awọn ibeere miiran nibi: “»
Lati ṣẹda awọn eroja ipasẹ ni Zabbix Emi yoo lo wiwa aifọwọyi.
Wiwa aifọwọyi
Lati ṣawari awọn iforukọsilẹ laifọwọyi ati tọpa awọn ipinlẹ ẹlẹgbẹ, o nilo lati kan si adirẹsi atẹle yii: tabi
Ni idahun, PBX da esi XML pada wa:
<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> Idọti pupọ wa ninu idahun, nitorinaa ni iṣaju iṣaju a ṣe àlẹmọ rẹ nipasẹ awoṣe XPath: // esi/ jeneriki[@host]
Lẹhinna igbadun bẹrẹ. Lati ṣiṣẹ pẹlu wiwa ati ṣẹda awọn eroja ni agbara, idahun gbọdọ wa ni ọna kika JSON. XML ko ni atilẹyin fun wiwa aifọwọyi.
Lati yi XML pada si JSON, Mo ni lati mu ṣiṣẹ diẹ pẹlu rirọpo adaṣe, eyiti Mo ṣe iwe afọwọkọ ni JS

Ojuami ti o nifẹ si: ninu idahun ATS, gbogbo awọn paramita ti yika nipasẹ awọn agbasọ ẹyọkan, ati lẹhin lilo awoṣe naa // esi/ jeneriki[@host] a fi ìlọ́po méjì rọ́pò wọn.
Lati ṣẹda awọn eroja, a lo awọn oniyipada lati idahun XML (bayi JSON).

Iforukọsilẹ SIP
Fun awọn iforukọsilẹ sip a lo awọn oniyipada mẹta: olumulo, ogun, ibudo. Inu mi dun pẹlu orukọ eroja naa 111111@login.mtt.ru:5060, Emi ko rii awọn ipo eyikeyi nibiti o nilo lati lo gbogbo awọn oniyipada marun.
Ohun akọkọ ti o gba alaye nipa gbogbo awọn iforukọsilẹ, Aami akiyesi - AMI SIPshowregistry. Ni ẹẹkan iṣẹju kan o ṣe ibeere GET kan si , lẹhin eyi ti data XML esi ti kọja si gbogbo awọn eroja ti o gbẹkẹle fun sisọ. Fun iforukọsilẹ kọọkan Mo ṣẹda ohun elo ti o da lori rẹ. Eyi rọrun nitori pe a gba alaye imudojuiwọn ni ibeere kan, kii ṣe fun ibeere kọọkan lọtọ. Yi imuse ni o ni a significant drawback - awọn fifuye lori ero isise.
Nigbati o ba ṣe idanwo to awọn eroja ti o gbẹkẹle 100, Emi ko ṣe akiyesi fifuye, ṣugbọn pẹlu awọn eroja 1700, eyi funni ni akiyesi 15 keji fifuye lori ero isise naa. Jeki eyi ni lokan ti o ba ni nọmba nla ti awọn eroja ti o gbẹkẹle.
Gẹgẹbi aṣayan lati “tan kaakiri” ẹru naa tabi ṣeto awọn igbohunsafẹfẹ ibo oriṣiriṣi fun ipin kan, o le gbe ọgbọn-itumọ si nkan kọọkan lọtọ.
Emi ko tọju alaye ti o gba sinu nkan akọkọ. Ni akọkọ, Emi ko rii iwulo fun eyi, ati keji, ti idahun ba jẹ diẹ sii ju 64K, lẹhinna Zabbix ge kuro.
Niwọn igba ti a ti lo idahun XML ni kikun fun eroja ti o gbẹkẹle, a nilo lati gba iye eroja yii ni iṣaju. Nipasẹ XPath o ṣe bi eleyi:
okun (// esi/ jeneriki [@ iṣẹlẹ = " RegistryEntry "][@ orukọ olumulo = " {#SIP_REGISTRY_USERNAME}" [@host = " {# SIP_REGISTRY_HOST} "][@port = "{#SIP_REGISTRY_PORT}"]/@ ipinle)
Fun awọn ipo iforukọsilẹ, Emi ko lo awọn ipo ọrọ, ṣugbọn yi wọn pada si fọọmu nomba nipa lilo JavaScript:
switch(value) {
case 'Registered':
return 1;
case 'Unregistered':
return 0;
default:
return -1;
}
Awọn ẹlẹgbẹ SIP
Nipa afiwe pẹlu awọn iforukọsilẹ SIP, ipin akọkọ wa ti Aami akiyesi - AMI SIPshorregistry, eyiti a ṣafikun awọn ti o gbẹkẹle.
Eyi ṣẹda awọn eroja ti o gbẹkẹle meji:
- Ipo ẹlẹgbẹ ni fọọmu ọrọ
- Akoko idahun ẹrọ - ti ipo naa ba dara, lẹhinna akoko esi ẹrọ ti kọ, bibẹẹkọ “-1”
Ọna si eroja funrararẹ jẹ rọrun diẹ XPath:
okun (// esi/ jeneriki[@objectname = "{#SIP_PEER_OBEJECTNAME}"]/@ ipo)
Fun eroja keji Mo lo JavaScript lati yapa akoko idahun lati ipo ẹlẹgbẹ, niwon wọn ti wa ni ipamọ papọ:
if(value.substring(0,2) == 'OK'){
return value.match(/(d+)/gm);
}
else {
return -1;
}ipari
Ojutu jade-ti-apoti le jẹ eka ati ki o ko lẹsẹkẹsẹ. Ṣe alekun irọrun ati gbigbe laarin awọn ọna ṣiṣe oriṣiriṣi
Dun ati ki o rọrun Integration gbogbo eniyan! Awoṣe ati ilana fun eto soke .
orisun: www.habr.com
