I-Zabbix - ukwandisa imingcele enkulu

Lapho ngenzela iklayenti isisombululo, kwavela imisebenzi emi-2 engangifuna ukuyixazulula kahle nangokusebenza okuvamile kwe-Zabbix.

Umsebenzi 1. Ukulandelela inguqulo ye-firmware yamanje kumarutha e-Mikrotik.

Umsebenzi uxazululwa kalula - ngokwengeza i-ejenti kusifanekiso se-HTTP. I-ejenti ithola inguqulo yamanje kuwebhusayithi ye-Mikrotik, futhi isiqalisi siqhathanisa inguqulo yamanje neyamanje futhi sikhipha isexwayiso uma kuba nokushayisana.

Uma unama-routers angu-10, i-algorithm enjalo ayibalulekile, kodwa yini okufanele uyenze ngama-routers angu-3000? Thumela izicelo ezingu-3000 kuseva? Yiqiniso, uhlelo olunjalo luzosebenza, kodwa wona kanye umqondo wezicelo 3000 awungifanelanga, ngangifuna ukuthola esinye isisombululo. Ngaphezu kwalokho, kwakusene-drawback ku-algorithm enjalo: olunye uhlangothi lungabala inani elinjalo lezicelo ezivela ku-IP eyodwa ngokuhlaselwa kwe-DoS, bangakwazi ukumane bakuvimbele.

Umsebenzi 2. Ukusebenzisa iseshini yokugunyaza kuma-ejenti ahlukene we-HTTP.

Uma i-ejenti idinga ukuthola ulwazi kusuka emakhasini "avaliwe" nge-HTTP, ikhukhi eligunyaziwe liyadingeka. Ukwenza lokhu, kuvame ukuba nefomu elijwayelekile lokugunyaza elinepheya "yokungena ngemvume / iphasiwedi" kanye nokusetha i-ID yeseshini kukhukhi.

Kodwa kunenkinga, akunakwenzeka ukufinyelela idatha yenye into kusuka kwinto eyodwa ye-ejenti ye-HTTP ukuze ufake leli nani esikhundleni sikaHeda.

Kukhona futhi "Umbhalo Wewebhu", unomunye umkhawulo, awukuvumeli ukuthi uthole okuqukethwe ukuze uhlaziywe futhi ukonge okwengeziwe. Ungahlola kuphela ukuba khona kwezinto eziguquguqukayo ezidingekayo emakhasini noma udlulise okuguquguqukayo okutholwe ngaphambilini phakathi kwezinyathelo zombhalo wewebhu.

Ngemva kokucabanga kancane ngale misebenzi, nginqume ukusebenzisa ama-macros abonakala ngokuphelele kunoma iyiphi ingxenye yesistimu yokuqapha: kumathempulethi, abasingathi, ama-trigger noma izinto. Futhi ungabuyekeza amamakhro ngokusebenzisa i-API yesixhumi esibonakalayo sewebhu.

I-Zabbix inemibhalo ye-API enhle futhi enemininingwane. Ngokushintshaniswa kwedatha nge-api, kusetshenziswa ifomethi yedatha ye-Json. Imininingwane ingatholakala ku imibhalo esemthethweni.

Ukulandelana kwezenzo zokuthola idatha esiyidingayo nokuyiqopha nge-macro kuboniswa kumdwebo ongezansi.

I-Zabbix - ukwandisa imingcele enkulu

Isinyathelo 1

Isinyathelo sokuqala singabandakanya isenzo esisodwa noma izenzo eziningi. Yonke i-logic eyinhloko ibekwe ezinyathelweni zokuqala, futhi izinyathelo ezi-3 zokugcina yizona eziyinhloko.

Esibonelweni sami, isinyathelo sokuqala kwakuwukuthola amakhukhi okugunyazwa ku-PBX ngomsebenzi wokuqala. Ngomsebenzi wesibili, ngithole inombolo yenguqulo yamanje ye-firmware ye-Mikrotik.

I-URL yezinguqulo zamanje ze-Mikrotik firmware

Lawa makheli afinyelelwa imishini ye-Mikrotik ngokwayo lapho inguqulo yakamuva ye-firmware yamukelwe.

Isinyathelo sokuqala singumuntu ngamunye esimweni ngasinye futhi logic yomsebenzi wayo ingase yehluke. Konke kuncike emsebenzini wakho.

Lapho usebenza nge-web scripting, gcina umkhondo wokuthi iyiphi indlela yokuphendula oyidingayo. Izihloko Impendulo ye-HTTP noma ngokwakho Ρ‚Π΅Π»ΠΎ impendulo ngaphandle kwezihloko?
Uma amakhukhi okugunyaza edingeka, bese usetha indlela yokuphendula Izihloko njengasendabeni yenkanyezi.

Uma udinga idatha, njengasendabeni yempendulo yeseva ye-mikrotik, faka Umzimba impendulo ngaphandle kwezihloko.

Isinyathelo 2

Asiqhubekele esinyathelweni sesibili. Ukuthola iseshini yokugunyazwa:

POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1
Content-Type: application/json-rpc

{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin"
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}

I-jsonrpc inguqulo yephrothokholi ye-JSON-RPC esetshenziswayo;
I-Zabbix isebenzisa inguqulo ye-JSON-RPC engu-2.0;

  • indlela - indlela ebizwa;
  • amapharamitha - amapharamitha adluliselwa ngendlela;
  • i-id iwukuhlonza isicelo ngokunganaki;
  • i-auth - ukhiye wokuqinisekisa umsebenzisi; njengoba singakabi nayo, asiyimise ibe yize.

Ukuze ngisebenze ne-API, ngidale i-akhawunti ehlukile enamalungelo alinganiselwe. Okokuqala, awudingi ukunikeza ukufinyelela lapho ungadingi khona. Okwesibili, ngaphambi kwenguqulo 5.0, iphasiwedi ebekwe nge-macro yayingafundwa. Ngokufanelekile, uma usebenzisa iphasiwedi yomqondisi we-Zabbix, i-akhawunti yomqondisi kulula ukuyeba.

Lokhu kuzoba yiqiniso ikakhulukazi uma usebenza ne-API ngokusebenzisa imibhalo yenkampani yangaphandle futhi ugcina imininingwane eceleni.

Kusukela inguqulo 5.0 kukhona inketho yokufihla iphasiwedi egcinwe ku-macro.

I-Zabbix - ukwandisa imingcele enkulu

Lapho udala i-akhawunti ehlukile yokubuyekeza idatha nge-API, qiniseka ukuthi uhlola ukuthi idatha oyidingayo iyatholakala yini ngohlelo lwewebhu nokuthi kungenzeka yini ukuyibuyekeza. Angizange ngihlole, futhi isikhathi eside angikwazanga ukuqonda ukuthi kungani i-macro engangiyidinga ingabonakali ku-API.

I-Zabbix - ukwandisa imingcele enkulu

Ngemuva kokuthi sithole ukugunyazwa ku-API, siqhubeka nokuthola uhlu lwamamakhro.

Isinyathelo 3

I-API ayikuvumeli ukuthi ubuyekeze i-host macro ngegama, kufanele uqale uthole i-macro ID. Ngaphezu kwalokho, ukuze uthole uhlu lwama-macros lomsingathi othile, udinga ukwazi i-ID yalo msingathi, futhi lesi isicelo esengeziwe. Sebenzisa i-macro ezenzakalelayo {HOST ID} esicelweni akuvunyelwe. Nginqume ukweqa umkhawulo kanje:

I-Zabbix - ukwandisa imingcele enkulu

Ngidale imakhro yendawo nge-ID yalo msingathi. Ukuthola i-ID yomsingathi kulula kakhulu kusixhumi esibonakalayo sewebhu.

Impendulo enohlu lwawo wonke ama-macro kumsingathi onikeziwe ingahlungwa ngephethini:

regex:{"hostmacroid":"([0-9]+)"[A-z0-9,":]+"{$MIKROTIK_VERSION}"

I-Zabbix - ukwandisa imingcele enkulu

Ngakho-ke, sithola i-ID ye-macro esiyidingayo, kuphi MIKROTIK_VERSION igama le-macro esiyifunayo. Endabeni yami, i-macro iyaseshwa MIKROTIK_VERSIONLe eyabelwa umninikhaya.

Isicelo ngokwaso sibukeka kanje:

POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1
Content-Type: application/json-rpc

{
    "jsonrpc":"2.0",
    "method":"usermacro.get",
    "params":{
        "output":"extend",
        "hostids":"{$HOST_ID}"
    },
    "auth":"{sid}",
    "id":1
}

Iyaguquguquka {sid} etholwe esinyathelweni sesibili futhi izosetshenziswa njalo, lapho udinga ukusebenza ne-interface ye-API.

Okokugcina 4 ISINYATHELO - ukuvuselela i-macro

Manje sesiyazi i-ID ye-macro edinga ukubuyekezwa, ikhukhi yokugunyazwa noma inguqulo ye-firmware yomzila. Ungabuyekeza i-macro ngokwayo.

POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1
Content-Type: application/json-rpc

{
    "jsonrpc":"2.0",
    "method":"usermacro.update",
    "params":{
        "hostmacroid":"{hostmacroid}",
        "value":"{mikrotik_version}"
    },
    "auth":"{sid}",
    "id":1
}

{mikrotik_version} yinani elitholakala esinyathelweni sokuqala. Esibonelweni sami, inguqulo ye-firmware ye-mikrotik yamanje
{hostmacroid} - inani litholwe esinyathelweni sesithathu - i-id ye-macro esiyibuyekezayo.

okutholakele

Indlela yokuxazulula inkinga ngokusebenza okujwayelekile iyinkimbinkimbi kakhulu futhi yinde. Ikakhulukazi uma wazi ukuhlela futhi ungakwazi ukwengeza ngokushesha ingqondo edingekayo kuskripthi.

Inzuzo esobala yale ndlela "ukuphatheka" kwesixazululo phakathi kwamaseva ahlukene.

Kimina uqobo, kuyamangaza ukuthi umenzeli we-HTTP akakwazi ukufinyelela idatha yenye into futhi ayifake endaweni yesicelo noma kuzihloko [ I-ZBXNEXT-5993].

Isifanekiso esiphelile can landa ku-GitHub.

Source: www.habr.com

Engeza amazwana