Pehea e hoʻopili ai iā Zabbix me Asterisk ma waho o ka pahu

I ka ʻatikala i hala "Zabbix - hoʻonui i nā palena macro" Ua haʻi aku au iā ʻoe pehea e loaʻa ai kahi hālāwai ʻae a hoʻololi iā ia i kahi macro host local. Ma kēia ʻatikala e haʻi wau iā ʻoe pehea e hoʻopili ai iā Zabbix me Asterisk me ka ʻole o nā palapala waho a me nā polokalamu.

ʻO ka manaʻo e "hoaloha" i kēia mau ʻōnaehana ʻelua i hānau ʻia i ka wā lōʻihi, me ka ʻole o ka hoʻokomo ʻana i nā polokalamu hou a i ʻole nā ​​palapala. ʻO kahi googling wikiwiki i hāʻawi i nā hopena he nui, ua hoʻopili ʻia i ka ʻoiaʻiʻo e hoʻouka i nā palapala (ma Pyha, Bash, Python, etc.) i ke kikowaena, a hauʻoli ʻoe. Makemake au e hoʻokō i ka nānā ʻana "ma waho o ka pahu" - me ka ʻole o nā palapala waho a me ka hoʻokomo ʻana i nā polokalamu hou ma ka kikowaena me ka nānā ʻana a me ka PBX.

Ua hoʻohana au i nā lā hana he 4 me kēia, akā pono ka hopena. Ke hana nei ma o ka AMI interface, haʻahaʻa-level detection, triggers, a me ka mea nui loa, ka hoʻohui ʻana i ka PBX a me nā hoʻonohonoho ʻē aʻe āpau i kēia manawa ma kahi o 15 mau minuke.

Loaʻa iā Zabbix 4.4, ma kahi o 100 mau ʻāpana o Asterisk version 13. Hele mai kekahi mau PBX me ka pūnaewele pūnaewele FreePBX, ʻo kekahi me ka ʻoluʻolu haʻahaʻa, he pūʻulu hoʻopunipuni a me ka hoʻohui ʻana ma o ka dialplan.

Loaʻa ka ʻikepili mai ka PBX

ʻO ka mea mua a me ka mea nui e pono e hoʻoholo i ka loaʻa ʻana o ka ʻikepili e pili ana i nā hoa a me nā hoʻopaʻa inoa SIP. No kēia kumu, loaʻa i ka PBX nā AGI, AMI, ARI a me SSH console interfaces. No nā kumu maopopo, ʻaʻole wau i noʻonoʻo i nā modula ʻē aʻe.

Pono mua mākou e noʻonoʻo i kēia mau agi, ami, ari ...

  • AGI - ka hoʻohana ʻana i nā palapala i ka dialplan. Hoʻohana nui ʻia no ka hoʻokele kelepona.
  • AMI - hiki ke hāʻawi i nā ʻike pono āpau, hana ma ke awa 5038, e like me Telnet. Kūpono iā mākou!
  • ARI - hou, ʻano, JSON. Nui nā mea hiki, hiki ke hoʻomaopopo ʻia ka format data no Zabbix, akā noʻu ʻaʻohe mea nui: ʻaʻole hiki iā ʻoe ke hoʻomalu i ka hoʻopaʻa inoa sip. ʻO kekahi pōʻino ʻē aʻe ʻo ia no nā hoa he ʻelua wale nō mokuʻāina ma ka pūnaewele/offline, ʻoiai ʻoi aku ka nui o nā mokuʻāina a he mea pono e noʻonoʻo i ka wā e hoʻopaʻa ai.
  • Hiki iā SSH ke hana i nā mea āpau, akā i kekahi manawa ʻaʻole ʻae ʻia ma muli o nā "kumu palekana". He ʻokoʻa paha nā manaʻo, ʻaʻole wau e komo i loko o lākou.

Eia nō naʻe, me kāna mau hemahema āpau, uhi ʻo ARI i ka 90% o nā pono nānā āpau.

ʻO Zabbix a me Telnet - koʻu hōʻeha

ʻIke maikaʻi au iā AMI; i kekahi manawa ua hoʻokō au i ka nānā ʻana i nā poho ma nā kamaʻilio me ka māhele ʻana e nā keʻena mamao, ka hoʻokele kelepona, etc. Me Telnet, maopopo loa nā mea a pau: wehe i ka pilina, hoʻouna i nā kauoha a heluhelu i ka pane. ʻO ia kaʻu i hana ai, akā naʻe, ua hōʻino ka hopena iaʻu.

ʻAʻole like ʻo Telnet ma Zabbix me ka console Linux, ʻoi aku ka maʻalahi a kūpono ʻia no ka mana maʻamau e like me ka login / password. Inā ʻokoʻa ka manaʻo manaʻo ʻae, a ʻaʻohe noi no ka hoʻopaʻa inoa / ʻōlelo huna, hiki mai kahi hewa. Ma hope o ka ho'āʻo makehewa e kāʻalo i ke koi ʻae, pono e nānā i ke kumu kumu o ka module Telnet.

Ua ʻike au a hiki i ka loaʻa ʻana o kahi noi komo a me ka ʻōlelo huna, ʻaʻole wau e neʻe i mua. No ka leʻaleʻa, ua wehe au i nā mea a pau e pili ana i ka ʻae mai ke code a hoʻohui hou i nā mea āpau. Hana! ʻAʻole naʻe i kūpono i nā koi. Hele i mua…

E hoʻi kāua i ka ʻimi

Heluhelu hou au i ka palapala ARI, holo hou i nā hoʻokolohua - ʻaʻohe mea hoʻopaʻa inoa sip ma aneʻi. He mau ʻahaʻaina, he mau kamaʻilio ʻana, aia nā breeches, akā ʻaʻohe kākau inoa. I kekahi manawa ua noʻonoʻo au, pono anei mākou i ka hoʻopaʻa inoa ʻana i ka manu?

Ma kahi ʻano ʻakaʻaka, i kēia manawa ua hiki mai kahi noi hou mai ka mea hoʻohana, me kahi pilikia me nā kelepona puka. ʻO ka pilikia, ua maloʻo ka hoʻopaʻa inoa sip a ua hoʻoholo ʻia ma ka hoʻihoʻi hou ʻana i ka module.

asterisk -rx "sip reload"

He mea maikaʻi loa ke komo ʻana i ka AMI ma luna o ka pūnaewele: e hoʻoponopono i nā pilikia āpau, manaʻo wau. Hoʻomaka wau e ʻeli i kēia ʻaoʻao, a ʻo ka laina huli mua e alakaʻi i ka palapala Asterisk official, e ʻōlelo ana aia kahi koho no kaʻu mau hana. hoʻohana pūnaewele ma ka waihona /etc/asterisk/manager.conf, pono e hoonoho i ka YES, ma ka pauku [nui]

Ma hope o kēia, ma o ka noi pūnaewele maʻamau o ka palapala http://ats:8089/mxml?action=SIPshowregistry loaʻa iā mākou nā ʻike āpau e pono ai.

I ka hoʻohana ʻana i ka interface FreePBX, ʻaʻole hiki iā ʻoe ke hoʻohana i kēia koho ma o ka pūnaewele, pono ʻoe e hiki iā ia ma o ka console ma ka hoʻololi ʻana i ka faila manager.conf. ʻAʻole holoi ʻo FreePBX iā ia ke hana ʻia nā hoʻololi hoʻonohonoho ma o ka pūnaewele.

Ua hana au me nā ʻano hui like ʻole o Asterisk no ka manawa lōʻihi, akā ʻaʻole wau i ʻike i kēia hiʻohiʻona i ʻōlelo ʻia ma nā wahi āpau. Pīhoihoi au no ka wehewehe ʻole ʻana o kekahi i kēia ʻano hana me ka PBX. Ua ʻoi aku ka maikaʻi o ka ʻimi ʻana i ka ʻike e pili ana i kēia kumuhana: ʻaʻohe mea a i hoʻohana ʻia no nā hana ʻokoʻa.

WEB AMI - he aha ke ʻano holoholona?

Hoʻohui i kahi koho hoʻohana pūnaewele e waiho luna.conf hāʻawi i ke komo piha i ka hoʻokele ATS ma o ka pūnaewele. Aia nā kauoha āpau i loaʻa ma o ka AMI maʻamau ma ka pūnaewele, hiki iā ʻoe ke hoʻolohe i nā hanana mai ka PBX ma o kahi kumu. ʻAʻole ʻokoʻa ke kumu o ka hana mai ka console AMI. Ma hope o ka ho'ā ʻana i kēia koho, hiki iā ʻoe ke hoʻokaʻaʻike i ka PBX ma kēia mau helu wahi:

https://ats:8089/manager - he ʻaoʻao pūnaewele me kahi maʻalahi no ka hoʻāʻo ʻana a me ka hoʻouna lima ʻana i nā noi. Hoʻopili ʻia nā pane a pau i HTML hiki ke heluhelu ʻia. ʻAʻole kūpono loa no ka nānā ʻana.
https://ats:8089/rawman — hoʻopuka kikokikona wale nō, ʻano like me ka console AMI
https://ats:8089/mxml - hua kikokikona wale nō, ma ke ʻano XML. Kūpono iā mākou!

Pehea e hoʻopili ai iā Zabbix me Asterisk ma waho o ka pahu

A laila, manaʻo wau: “ʻO kēia ka hopena! I kēia manawa e mākaukau nā mea a pau! Easy-peezy lemon squeezey,” akā ua hikiwawe loa ke hauʻoli. No ka loaʻa ʻana o ka ʻike e pono ai mākou, ua lawa ka hoʻohana ʻana i kahi noi GET me ka hana pono hana, i ka pane e hoʻihoʻi i ka xml me kahi papa inoa o nā inoa inoa āpau a me ko lākou kūlana. He mea maikaʻi kēia, akā pono ʻoe i ka ʻae e hoʻomanaʻo i ke kau mai ka kuki. Ke hoʻāʻo ʻoe i ka polokalamu kele pūnaewele, ʻaʻole ʻoe e noʻonoʻo i kēia kaʻina hana.

Kaʻina hana mana

E kamaʻilio mua mākou i ka helu wahi http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, i ka pane ʻana, hoʻouna mai ke kikowaena iā mākou i kahi kuki me ke kau ʻae. ʻO kēia ke ʻano o kahi noi HTTP:

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

Pane:

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>

No ka hana ma laila pono ʻoe mansession_id="6f5de42c", ʻo ia hoʻi ka kuki ʻae ponoʻī.
Pono ʻoe e nānā no ka pane "Ua ʻae ʻia ka hōʻoia" A laila, no nā kelepona a pau i ke kikowaena PBX, pono mākou e hoʻohui i kahi kuki ʻae i ka noi.

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

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

E heluhelu pehea e kiʻi ai i kahi kuki ʻae a hoʻohana iā ia i nā noi ʻē aʻe ma aneʻi: “Zabbix - hoʻonui i nā palena macro»

No ka hana ʻana i nā mea nānā i Zabbix, e hoʻohana wau i ka ʻike auto.

ʻIke ʻakomi

No ka ʻike ʻokoʻa ʻana i nā inoa inoa a hahai i nā mokuʻāina o nā hoa, pono ʻoe e hoʻokaʻaʻike i kēia helu wahi: https://ats:8089/mxml?action=SIPshowregistry ai ole ia, https://ats:8089/mxml?action=SIPpeers

I ka pane ʻana, hoʻihoʻi mai ka PBX iā mākou i kahi pane 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>

Nui ka ʻōpala i ka pane, no laila ma ka preprocessing mākou e kānana iā ia ma ka template XPath: //pane/generic[@host]
A laila hoʻomaka ka leʻaleʻa. No ka hana ʻana me ka ʻike a me ka hana ikaika ʻana i nā mea, pono ka pane ma ke ʻano JSON. ʻAʻole kākoʻo ʻia ka XML no ka ʻike kaʻa.

No ka hoʻololi ʻana i ka XML iā JSON, pono wau e pāʻani liʻiliʻi me ka hoʻololi kaʻa, kahi aʻu i hana ai i kahi palapala ma JS

Pehea e hoʻopili ai iā Zabbix me Asterisk ma waho o ka pahu

ʻO kahi mea hoihoi: i ka pane ATS, ua hoʻopuni ʻia nā ʻāpana āpau e nā huaʻōlelo hoʻokahi, a ma hope o ka hoʻopili ʻana i ka template //pane/generic[@host] ua pani ʻia lākou e nā mea pālua.

No ka hana ʻana i nā mea, hoʻohana mākou i nā loli mai ka pane XML (ʻo JSON i kēia manawa).

Pehea e hoʻopili ai iā Zabbix me Asterisk ma waho o ka pahu

Kakau inoa SIP

No ka hoʻopaʻa inoa ʻana, hoʻohana mākou i ʻekolu mau ʻano: inoa mea hoʻohana, koa, ke awa. Ua hauʻoli wau i ka inoa o ka mea [pale ʻia ka leka uila]: 5060, ʻAʻole i loaʻa iaʻu nā kūlana kahi e pono ai ʻoe e hoʻohana i nā ʻelima ʻelima.

ʻO ka mea nui e loaʻa ai ka ʻike e pili ana i nā inoa inoa āpau, Asterisk - AMI SIPshowregistry. Hoʻokahi manawa i hoʻokahi minuke e noi aku iā GET iā https://ats:8089/mxml?action=SIPshowregistry, ma hope o ka hāʻawi ʻia ʻana o ka ʻikepili XML pane i nā mea hilinaʻi āpau no ka parsing. No kēlā me kēia hoʻopaʻa inoa, hana wau i kahi mea e pili ana iā ia. He mea maʻalahi kēia no ka mea, loaʻa iā mākou ka ʻike hou i ka noi hoʻokahi, ʻaʻole no kēlā me kēia noi ʻokoʻa. ʻO kēia hoʻokō he drawback koʻikoʻi - ka ukana ma ka mea hana.

I ka hoʻāʻo ʻana a hiki i 100 mau mea hilinaʻi, ʻaʻole wau i ʻike i ka ukana, akā me nā mea 1700, hāʻawi kēia i kahi ukana 15 kekona ma ka kaʻina. E hoʻomanaʻo i kēia inā he nui kāu mau mea hilinaʻi.

Ma ke ʻano he koho e "hoʻolaha" i ka ukana a i ʻole e hoʻonohonoho i nā alapine koho balota ʻokoʻa no kahi mea, hiki iā ʻoe ke hoʻoneʻe i ka loiloi hana i kēlā me kēia mea.

ʻAʻole wau e mālama i ka ʻike i loaʻa i ka mea nui. ʻO ka mea mua, ʻaʻole wau ʻike i ka pono o kēia, a ʻo ka lua, inā ʻoi aku ka pane ma mua o 64K, a laila ʻoki ʻo Zabbix.

No ka mea, hoʻohana mākou i ka pane XML piha no ka mea hilinaʻi, pono mākou e kiʻi i ka waiwai o kēia mea i ka preprocessing. Ma o XPath ua hana ʻia e like me kēia:
string(//pane/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ mokuʻāina)
No nā kūlana hoʻopaʻa inoa, ʻaʻole au i hoʻohana i nā kūlana kikokikona, akā ua hoʻololi au iā lākou i ke ʻano helu me ka hoʻohana ʻana i ka JavaScript:

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

SIP Nā hoa

Ma ka hoʻohālikelike me nā hoʻopaʻa inoa SIP, aia kahi mea nui o Asterisk - AMI SIPshowregistry, kahi e hoʻohui ʻia ai nā mea hilinaʻi.

Hoʻokumu kēia i ʻelua mau mea hilinaʻi:

  • Kūlana hoa ma ke ʻano kikokikona
  • Ka manawa pane o ka hāmeʻa - inā maikaʻi ke kūlana, a laila kākau ʻia ka manawa pane o ka hāmeʻa, a i ʻole "-1"

ʻOi aku ka maʻalahi o ke ala i ka element ponoʻī XPath:

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

No ka mea ʻelua ua hoʻohana au i ka JavaScript e hoʻokaʻawale manawa pane mai ke kūlana o nā hoa, no ka mea ua mālama pū ʻia lākou:

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

hopena

Hiki ke paʻakikī a ʻaʻole maopopo koke ka hopena o waho. Hoʻonui i ka maʻalahi a me ka portability ma waena o nā ʻōnaehana like ʻole

Hauʻoli a maʻalahi hoʻi ka hoʻohui ʻana i nā mea a pau! Ka la'ana a me nā kuhikuhi no ka ho'onohonoho 'ana GitHub.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka