Quomodo coniungere Zabbix cum Asterisco ex archa?

In superiori questione habitum est "Zabbix - dilatatio tortor limites" Dixi vobis quomodo sessionem potestatem recipiendi et eam in tortor localis hospitis substitue. In hoc articulo indicabo tibi quomodo Zabbix cum Asterisco sine scriptis externis et programmate coniungere.

Idea "amicos facere" ex his duobus systematibus iampridem nata est, sine additis programmatibus vel scriptis insertis. A velox googling solutiones multas possibilis emisit, ea omnia decocta sunt eo quod scripta (in Pyha, Bash, Python, etc.) ministranti, et laetus eris. Volui vigilantia "ex cista" - sine scriptis externis, et addito programmate in calculonis vigilantia et PBX inaugurari volui.

Exegi totalem 4 dierum operantes cum hoc, sed eventus tanti fuit. Operantes per interfaciem AMI, deprehensionem humilem, triggers, et potissimum, PBX et omnes alios occasus connectens nunc circiter 15 minutas accipit.

Zabbix 4.4 praesto est, de 100 fragmentis versionis Asterisci XIII. Quidam PBXs veniunt cum interfaceti FreePBX, quidam nudo console, fasciculo sycophantiae et integrationis per dialplanum.

Accepto notitia ex PBX *

Prima et principalis punctum, quod resolvere debet, notitias de paribus et adnotationes HAUSTUS obtinet. Ad hoc, PBX interfaces solandi habet AGI, AMI, ARI, SSH. Manifestis rationibus modulos additos non consideravi.

Primum indicare oportet quid hi agi, ami, ari sint...

  • AGI - scripta utens in dialplano. Maxime propter vocationem administratio.
  • AMI - omnia necessaria informationes praebere possunt, opera per portum 5038, similia Telnet. Decet nos!
  • ARI - modernus, similis, JSON. Multae facultates sunt, notitia forma est comprehensibilis pro Zabbix, sed mihi non est principale: adnotationem sorbere non potes. Aliud incommodum est quod apud pares duos tantum status online/offlines sunt, licet plures sint status et utile est eas in diagnoscentia considerare.
  • SSH omnia facere potest, sed interdum ob β€œcausas securitatis”. Considerationes diversae sint, in eas non ingrediar.

Nihilominus, cum omnibus suis defectibus, ARI 90% omnium necessariorum vigilantia operit.

Zabbix et Telnet - mea destitutione

Scio AMI bene, aliquando damna investigationem in colloquiis cum divisione per remotissima officia, et administrationem vocationis, etc. Cum Telnet, omnia etiam perspicua sunt: ​​nexum aperi, mandata mitte et responsionem lege. Id quod feci, me fefellit eventus.

Telnet in Zabbix non eadem est quae in Linux console, est paulo simplicior et formata pro norma auctoritatis sicut login/password. Si logica auctoritas differt, nulla petitio pro login/password par, error occurrit. Post vanos conatus praeterire postulationem auctoritatis, utile fuit fontem codicem moduli Telnet intueri.

Intellexi donec login et tesseram traditionem postularet, me non progredi. Ut ad ludum, omnia ad auctoritatem e codice pertinentia removi et omnia congregavi. Opera! Sed non metus. Perge…

Revertamur ad inquisitionem

Documenta ARI iterum relego, accessiones probatorum cucurrit - adnotationes hic nullae sunt. Sunt festa, sunt colloquia, sunt femoralia, sunt adnotationes nullae. Aliquando etiam cogitavi, num vere postulo HAUSTUS adnotatione?

Ridiculo casu accidit, hoc momento alia petitio ab utore venit, cum quaestio de emissione vocat. Problema erat adnotatione sorbendum congelatum et solutum est simpliciter moduli reboante.

asterisk -rx "sip reload"

Magnum esset accessum AMI per telam: quod omnia problemata solvendum duxi. In hanc partem fodere incipiam, et ad litteram primam lineam inquisitionis ducit ad documenta officialis Asterisci, quae dicit optionem operum meorum esse. webabled in file /etc/asterisk/manager.confquae apponi debet ETIAM, in sectione [generalis]

Post hoc, per iustam petitionem formae http://ats:8089/mxml?action=SIPshowregistry omnia necessaria dabimus tibi notitia.

Cum FreePBX interface utens, hanc optionem per interretialem facere non potes, necesse est ut eam per console mutando curatori.conf limam facias. FreePBX eam non delet cum configuratione per telam fiunt mutationes.

In variis Asteriscis integrationibus diu laboravi, sed nunquam alibi hanc notam vidi. Miratus sum neminem modum hunc conveniendi cum PBX describit. Etiam maxime utile fuit de hoc argumento notitias quaerere: nihil est fere aut adhibitum est ad operas omnino diversas.

VUL AMI - Quale pecus?

Addit per optionem webabled ut file manager.conf plenam accessum ad ATS administratione per telam provisum est. Omnia mandata praesto per regularem AMI nunc in interreti sunt, eventa ex PBX per nervum audire potes. Principium operandi non differt a console AMI. Post hanc optionem activum, PBX in inscriptionibus sequentibus contingere potes:

https://ats:8089/manager β€” pagina interfaceta simplici instrumento ad probationes ac petitiones manually mittendas. Omnes responsiones in HTML readabiles formantur. Cras non magna.
https://ats:8089/rawman β€” text output only, format similar to console AMI
https://ats:8089/mxml β€” Textus output tantum in forma XML. Decet nos!

Quomodo coniungere Zabbix cum Asterisco ex archa?

Tunc cogitabam: β€œHaec est solutio! Nunc omnia parata erunt! Securus-peezy CITREA constipatus, sed nimium mane gaudere. Ad informationem quae indigemus obtinendam, satis est petitionem uti ORNATUS cum actione necessaria actionis, qui respondet xml cum indice omnium registrations et status eorum. Haec omnia magna sunt, sed licentia sessionis de crustulum meminisse debes. Cum tentas in navigatro, de hoc processu non cogitas.

LICENTIA processus

Primum alloquimur http://ats:8089/mxml?action=login&username=zabbix&secret=zabbix, in responsione, minister crustulum nobis mittit cum auctoritate sessionis. Hoc est quod HTTP petitio similis:

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

responde:

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>

Ad opus est tibi opus mansion_id="6f5de42c"I.e. auctoritas crustulum ipsum.
Contentus vos iustus postulo ut reprimendam responsum "authenticas accepit" Deinde pro omnibus vocatis ad PBX servo, necesse est ut crustulum concessionis adiiciamus ad petitionem.

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

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

Lege quomodo potestatem habendo crustulum et in aliis petitionibus hic uteris: "Zabbix - dilatatio tortor limitesΒ»

Ad elementa tracking in Zabbix creandum utar auto deprehendendi.

Auto deprehensio

Ut adnotationes automatice deprehendas et status parium indagamus, necesse est ut sequenti inscriptione contactum sit: https://ats:8089/mxml?action=SIPshowregistry aut https://ats:8089/mxml?action=SIPpeers

Respondemus, PBX nobis responsum refert 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>

Multum purgamentum est in responsione, ideo in praeprocessione id percolamus a template XPath: //respons/generic[@host]
Tum incipit iocum. Ad deprehendendum et alacriter operandum elementa creanda, responsio debet esse in forma JSON. XML non praebetur pro auto- detectionibus.

Ad XML ad JSON convertendos habui paulum cum auto- reposito ludere, pro quo scripto in JS . feci

Quomodo coniungere Zabbix cum Asterisco ex archa?

Punctum interesting: in responsione ATS, parametri omnes singulis sententiis circumveniuntur, ac adhibitis propositis //respons/generic[@host] substituuntur duplicibus.

Ad elementa creandum, ex responsione XML variabilium utimur.

Quomodo coniungere Zabbix cum Asterisco ex archa?

HAUSTUS Registry

Sorbere adnotationes tres variabiles utimur: More, exercitum, portum. Laetus sum in nomine elementi [Inscriptio protected]: 5060, nullas inveni condiciones quibus omnibus quinque variabilibus uti debes.

Information about all registrations principales elementum suscipit quam, Asteriscus - AMI SIPshowregistry. Cum minutam facit petitionem GET to https://ats:8089/mxml?action=SIPshowregistryper quod responsio ad omnia elementa dependentia XML data permittitur. Pro unaquaque adnotatione elementum dependens ab eo creo. Hoc convenit, quod in una petitione recipimus informationes, et non separatim pro unaquaque petitione. Haec exsecutio incommodum notabile habet - onus in processus.

Cum temptans usque ad 100 elementa dependens, pondus non vidi, sed cum 1700 elementis, hoc 15 alterum onus in processu notabile dedit. Hoc in animo habe si magnum numerum elementorum dependentium habes.

Cum optio "dilatare" sarcinam vel datorum frequentiis pro elemento diversos ponere, potes logicam processus singulis elementis distincte movere.

Non condo informationes receptas in elementum consectetur. Primo, hoc opus non video, secundo, si plus quam 64K responsio est, Zabbix abscindit.

Cum plenam responsionem XML elementi dependens utimur, in preprocessione valorem huius elementi obtinere necesse est. Per XPath Hoc modo fit:
string(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ status)
Ad statuses adnotationes, textus status non usus sum, sed eas in forma numerica utens JavaScript: converti.

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

HAUSTUS proceres

Per analogiam cum SIP registrations, praecipua Asterisci - AMI SIPshowregistry elementum est, cui dependentes accedunt.

Facit duo elementa dependens:

  • Pari status in textu formam
  • Fabrica temporis responsionis - si status est OK, tunc temporis responsionis fabrica scriptum est, alioquin "-1"

Via ad ipsum elementum paulo simplicius est XPath:

filum(//response/genericum[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)

Ad secundum elementum usus sum JavaScript ad separandum responsio tempus ex pari statu, quia simul reponuntur;

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

conclusio,

Solutio extra-thecam multiplex esse potest nec statim patet. Crescit flexibilitatem et portabilitatem inter diversas systemata

Felix et facilis integratio quisque! Formula et instructiones ad constituendum GitHub.

Source: www.habr.com