Yadda ake haɗa Zabbix tare da Alaji daga cikin akwatin

A cikin labarin da ya gabata "Zabbix - fadada macro iyakoki" Na gaya muku yadda ake karɓar zaman izini kuma musanya shi zuwa macro na gida. A cikin wannan labarin zan gaya muku yadda ake haɗa Zabbix tare da Alamar alama ba tare da rubutun waje da software ba.

Tunanin "yin abota" na waɗannan tsarin biyu an haife shi da dadewa, ba tare da shigar da ƙarin software ko rubutun ba. Guguwar sauri ta samar da mafita da yawa, duk ya tafasa zuwa gaskiyar cewa loda rubutun (a cikin Pyha, Bash, Python, da sauransu) zuwa uwar garken, kuma zaku yi farin ciki. Ina so in aiwatar da saka idanu "daga cikin akwatin" - ba tare da rubutun waje ba da shigar da ƙarin software akan uwar garke tare da saka idanu da PBX.

Na kashe jimlar kwanakin aiki 4 tare da wannan, amma sakamakon ya cancanci. Yin aiki ta hanyar haɗin AMI, gano ƙananan matakan, masu jawowa, kuma mafi mahimmanci, haɗa PBX da duk sauran saitunan yanzu yana ɗaukar kimanin minti 15.

Zabbix 4.4 yana samuwa, kusan guda 100 na Alamar alama 13. Wasu PBXs suna zuwa tare da haɗin yanar gizon FreePBX, wasu tare da na'urar wasan bidiyo mara kyau, tarin dabaru da haɗin kai ta hanyar tsarin bugawa.

Karɓar bayanai daga PBX

Abu na farko da babban abin da ake buƙatar warwarewa shine samun bayanai game da takwarorinsu da rajistar SIP. Don wannan dalili, PBX yana da AGI, AMI, ARI da SSH consoles. Don dalilai masu ma'ana, ban yi la'akari da ƙarin kayayyaki ba.

Da farko muna buƙatar gano menene waɗannan agi, ami, ari ...

  • AGI - yin amfani da rubutun a cikin tsarin bugun kira. Anfi amfani dashi don sarrafa kira.
  • AMI - na iya samar da duk bayanan da ake buƙata, yana aiki ta tashar jiragen ruwa 5038, kama da Telnet. Ya dace da mu!
  • ARI - zamani, gaye, JSON. Akwai yuwuwar da yawa, tsarin bayanan yana iya fahimta ga Zabbix, amma a gare ni babu wani babban abu: ba za ku iya sarrafa rajistar sip ba. Wani hasara kuma shine cewa ga takwarorinsu akwai jihohi biyu kawai akan layi / layi, kodayake akwai ƙarin jahohi kuma yana da amfani a la'akari da su yayin bincikar cutar.
  • SSH na iya yin komai, amma wani lokacin ba a yarda da shi ba saboda "dalilan tsaro". Tunani na iya bambanta, ba zan shiga cikinsu ba.

Koyaya, tare da duk gazawar sa, ARI yana ɗaukar kashi 90% na duk buƙatun sa ido.

Zabbix da Telnet - abin takaici na

Na san AMI da kyau; a wani lokaci na aiwatar da bin diddigin asara a cikin tattaunawa tare da rarraba ta ofisoshin nesa, sarrafa kira, da sauransu. Tare da Telnet, komai kuma a bayyane yake: buɗe haɗin, aika umarni kuma karanta amsa. Abin da na yi ke nan, amma sakamakon ya ba ni kunya.

Telnet a cikin Zabbix ba iri ɗaya bane da na na'urar wasan bidiyo na Linux, yana da ɗan sauƙi kuma an daidaita shi don daidaitaccen izini kamar shiga / kalmar sirri. Idan dabarar izini ta bambanta, kuma babu buƙatar shiga/kalmar shiga biyu, kuskure yana faruwa. Bayan yunƙurin rashin amfani na ƙetare buƙatun izini, yana da amfani duba lambar tushe na ƙirar Telnet.

Na gane cewa har sai an sami buƙatun shiga da kalmar sirri na gargajiya, ba zan ci gaba ba. Don jin daɗi kawai, na cire duk abin da ke da alaƙa da izini daga lambar kuma na sake gina komai. Ayyuka! Amma bai cika sharuddan ba. Ci gaba…

Mu koma kan bincike

Na sake karanta takaddun ARI, na yi ƙarin gwaje-gwaje - babu rajistar sip a nan. Akwai liyafa, ana hira, ana ta kururuwa, amma babu rajista. A wani lokaci na yi tunani, shin da gaske muna buƙatar rajistar ungulu?

Ta hanyar daidaituwa mai ban dariya, a wannan lokacin wani buƙatun ya zo daga mai amfani, tare da matsala tare da kira masu fita. Matsalar ita ce rajistar sip ɗin tana daskarewa kuma an warware ta ta hanyar sake kunna tsarin kawai.

asterisk -rx "sip reload"

Zai yi kyau a sami damar shiga AMI akan yanar gizo: wannan zai magance duk matsalolin, na yi tunani. Na fara tono ta wannan hanyar, kuma a zahiri layin bincike na farko yana kaiwa ga takaddun alamar alama, wanda ya ce akwai zaɓi don ayyuka na. yanar gizo cikin fayil /etc/asterisk/manager.conf, wanda ke buƙatar saita zuwa YES, a cikin sashin [babban]

Bayan wannan, ta hanyar buƙatun yanar gizo na yau da kullun na fom http://ats:8089/mxml?action=SIPshowregistry muna samun dukkan bayanan da ake bukata.

Lokacin amfani da dubawar FreePBX, ba za ku iya kunna wannan zaɓi ta hanyar yanar gizo ba; kuna buƙatar kunna ta ta hanyar na'ura ta hanyar yin canje-canje ga fayil Manager.conf. FreePBX ba ya goge shi lokacin da ake yin canje-canje ta hanyar yanar gizo.

Na yi aiki tare da nau'ikan haɗin gwiwa iri-iri na dogon lokaci, amma ban taɓa ganin wannan fasalin da aka ambata a ko'ina ba. Na yi mamakin cewa babu wanda ya kwatanta wannan hanyar yin hulɗa tare da PBX. Har ma yana da amfani musamman don neman bayanai kan wannan batu: a zahiri babu wani abu ko an yi amfani da shi don ayyuka daban-daban.

WEB AMI - wane irin dabba?

Ƙara zaɓi yanar gizo da fayil manager.conf an ba da cikakkiyar damar gudanar da ATS ta yanar gizo. Duk umarni da ake samu ta hanyar AMI na yau da kullun yanzu suna kan gidan yanar gizo, zaku iya sauraron abubuwan da suka faru daga PBX ta soket. Ka'idar aiki ba ta bambanta da na'urar wasan bidiyo na AMI ba. Bayan kunna wannan zaɓi, zaku iya tuntuɓar PBX a adiresoshin masu zuwa:

https://ats:8089/manager - shafin yanar gizo mai sauƙin dubawa don gwaji da aika buƙatun da hannu. An tsara duk martani zuwa HTML mai karantawa. Bai dace sosai don saka idanu ba.
https://ats:8089/rawman - fitarwar rubutu kawai, tsari mai kama da AMI ta'aziyya
https://ats:8089/mxml - fitarwar rubutu kawai, a tsarin XML. Ya dace da mu!

Yadda ake haɗa Zabbix tare da Alaji daga cikin akwatin

Sai na yi tunani: “Wannan ita ce mafita! Yanzu komai zai kasance a shirye! Lemun tsami mai sauƙi-peezy,” amma ya yi wuri don murna. Don samun bayanan da muke buƙata, ya isa a yi amfani da buƙatar GET tare da aikin da ya dace mataki, wanda a mayar da martani xml tare da jerin duk rajista da matsayinsu. Wannan duk yana da kyau, amma kuna buƙatar izini don tunawa da zaman daga kuki. Lokacin da kake gwadawa a cikin mai bincike, ba kwa tunani game da wannan tsari.

Tsarin izini

Da farko za mu magance adireshin http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, don amsawa, uwar garken ta aiko mana da kuki tare da zaman izini. Wannan shine yadda buƙatar HTTP yayi kama:

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

Amsa:

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>

Don yin aiki a can kuna buƙatar mansession_id="6 f5de42c", i.e. kuki ɗin izini kansa.
Abun ciki kawai kuna buƙatar bincika amsar "An karɓi tabbaci" Na gaba, don duk kira zuwa uwar garken PBX, za mu buƙaci ƙara kuki izini ga buƙatar.

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

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

Karanta yadda ake samun kuki mai izini kuma a yi amfani da shi a wasu buƙatun anan: "Zabbix - fadada macro iyakoki»

Don ƙirƙirar abubuwan sa ido a cikin Zabbix zan yi amfani da ganowa ta atomatik.

Ganewa ta atomatik

Don gano rajista ta atomatik da kuma bin jihohin takwarorinku, kuna buƙatar tuntuɓar adireshin mai zuwa: https://ats:8089/mxml?action=SIPshowregistry ko https://ats:8089/mxml?action=SIPpeers

A cikin martani, PBX ya dawo mana da martanin 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>

Akwai datti da yawa a cikin martani, don haka a cikin aiwatarwa muna tace shi ta samfuri XPath: //response/generic[@host]
Daga nan aka fara jin daɗi. Don yin aiki tare da ganowa da ƙirƙirar abubuwa a hankali, dole ne martani ya kasance cikin tsarin JSON. XML baya tallafawa don ganowa ta atomatik.

Don canza XML zuwa JSON, dole ne in yi wasa kaɗan tare da maye gurbin mota, wanda na yi rubutun a JS

Yadda ake haɗa Zabbix tare da Alaji daga cikin akwatin

Wani batu mai ban sha'awa: a cikin amsawar ATS, duk sigogi suna kewaye da ƙididdiga guda ɗaya, kuma bayan amfani da samfurin //response/generic[@host] ana maye gurbinsu da guda biyu.

Don ƙirƙirar abubuwa, muna amfani da masu canji daga amsawar XML (yanzu JSON).

Yadda ake haɗa Zabbix tare da Alaji daga cikin akwatin

SIP Registry

Domin yin rajistar sip muna amfani da masu canji guda uku: sunan mai amfani, rundunar, tashar jiragen ruwa. Na yi farin ciki da sunan kashi [email kariya]: 5060, Ban sami kowane yanayi ba inda kuke buƙatar amfani da duk masu canji guda biyar.

Babban abin da ke karɓar bayanai game da duk rajista, Alamar alama - AMI SIPshowregistry. Sau ɗaya a minti yana yin buƙatar GET zuwa https://ats:8089/mxml?action=SIPshowregistry, Bayan haka an ƙaddamar da bayanan XML zuwa duk abubuwan da suka dogara don yin nazari. Ga kowace rajista na ƙirƙiri wani abin dogaro da shi. Wannan ya dace saboda muna karɓar bayanai na zamani a cikin buƙatu ɗaya, kuma ba ga kowace buƙata daban ba. Wannan aiwatarwa yana da babban koma baya - nauyin mai sarrafawa.

Lokacin gwada abubuwan da suka dogara da 100, ban lura da nauyin ba, amma tare da abubuwa 1700, wannan ya ba da babban nauyin 15 na biyu akan na'ura. Ka tuna da wannan idan kana da adadi mai yawa na abubuwan dogara.

A matsayin zaɓi don "watsa" lodi ko saita mitoci daban-daban don wani kashi, zaku iya matsar da dabarun sarrafawa zuwa kowane kashi daban.

Ba na adana bayanan da aka karɓa a cikin babban kashi. Na farko, ban ga buƙatar wannan ba, kuma na biyu, idan amsa ya fi 64K, to, Zabbix ya yanke shi.

Tunda muna amfani da cikakken martani na XML don abin dogaro, muna buƙatar samun ƙimar wannan kashi a cikin aiwatarwa. Ta hanyar XPath ana yi kamar haka:
kirtani (// amsa/generic [@event = " RegistryEntry"][@ sunan mai amfani = "{#SIP_REGISTRY_USERNAME}" [@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ jiha)
Don matsayin rajista, ban yi amfani da matsayin rubutu ba, amma na canza su zuwa nau'i na lambobi ta amfani da JavaScript:

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

Abokan SIP

Ta hanyar kwatankwacin rajistar SIP, akwai babban kashi na Alaji - AMI SIPshoregistry, wanda aka ƙara masu dogaro da shi.

Wannan yana haifar da abubuwa masu dogaro guda biyu:

  • Matsayin tsara a cikin sigar rubutu
  • Lokacin amsa na'urar - idan matsayi yayi kyau, to an rubuta lokacin amsa na'urar, in ba haka ba "-1"

Hanyar zuwa kashi kanta yana da ɗan sauƙi XPath:

string

Domin kashi na biyu na yi amfani da JavaScript don raba lokacin amsawa daga matsayin takwarorinsu, tunda an adana su tare:

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

ƙarshe

Magani na waje na iya zama mai rikitarwa kuma ba zai bayyana nan da nan ba. Yana ƙara sassauƙa da ɗaukar nauyi tsakanin tsarin daban-daban

Farin ciki da sauƙin haɗin kai kowa da kowa! Samfura da umarni don saitawa GitHub.

source: www.habr.com

Add a comment