I-Zabbix - ukwandisa imida ye-macro

Xa usenza isisombululo kumthengi, kwavela imisebenzi emi-2 endifuna ukuyicombulula kakuhle kunye nokusebenza rhoqo kweZabbix.

Injongo 1. Ukulandelela inguqulo ye-firmware yangoku kwiirutha zeMikrotik.

Umsebenzi uxazululwa ngokulula - ngokongeza i-arhente kwi-template ye-HTTP. I-ejenti ifumana inguqulelo yangoku kwiwebhusayithi yeMikrotik, kwaye i-trigger ithelekisa inguqu yangoku kunye neyangoku kwaye ikhupha isilumkiso kwimeko yokungahambelani.

Xa unee-router ezili-10, i-algorithm enjalo ayibalulekanga, kodwa yintoni onokuyenza ngeerutha ezingama-3000? Thumela izicelo ezingama-3000 kumncedisi? Ewe, inkqubo enjalo iya kusebenza, kodwa ingcamango ye-3000 yezicelo ayizange indifanele, ndandifuna ukufumana esinye isisombululo. Ukongeza, kwakusekho i-drawback kwi-algorithm enjalo: elinye icala lingabala inani elinjalo lezicelo kwi-IP enye yokuhlaselwa kwe-DoS, banokuyinqanda ngokulula.

Injongo 2. Ukusebenzisa iseshoni yogunyaziso kwiiarhente ezahlukeneyo zeHTTP.

Xa i-arhente idinga ukufumana ulwazi kumaphepha "avaliweyo" nge-HTTP, i-cookie yogunyaziso iyafuneka. Ukwenza oku, ngokuqhelekileyo kukho ifom yogunyaziso esemgangathweni kunye ne "login / password" isibini kunye nokuseta i-ID yeseshoni kwicookie.

Kodwa kukho ingxaki, akunakwenzeka ukufikelela kwidatha yenye into ukusuka kwinto enye ye-HTTP yomenzeli ukufaka eli xabiso kwiHeader.

Kukho kwakhona "isikripthi seWebhu", inomnye umda, ayikuvumeli ukuba ufumane umxholo wokuhlalutya kunye nokugcina ukugcinwa. Unokujonga kuphela ubukho bezinto ezifunekayo eziguquguqukayo kumaphepha okanye udlulise iinguqu ezifunyenwe ngaphambili phakathi kwamanyathelo escript sewebhu.

Emva kokucinga kancinci malunga nale misebenzi, ndagqiba ekubeni ndisebenzise i-macros ebonakalayo ngokugqibeleleyo kuyo nayiphi na inxalenye yenkqubo yokubeka iliso: kwiitemplates, imikhosi, i-triggers okanye izinto. Kwaye unokuhlaziya iimacros nge-API yojongano lwewebhu.

I-Zabbix inamaxwebhu amahle kunye aneenkcukacha ze-API. Utshintshiselwano lwedatha nge-api, ifomethi yedatha ye-Json isetyenziswa. Iinkcukacha zifumaneka kwi amaxwebhu asemthethweni.

Ukulandelelana kwezenzo zokufumana idatha esiyidingayo kunye nokurekhoda kwi-macro iboniswe kumzobo ongezantsi.

I-Zabbix - ukwandisa imida ye-macro

Isinyathelo 1

Elona nyathelo lokuqala lingabandakanya isenzo esinye okanye iintshukumo ezininzi. Yonke ingqiqo ephambili ibekwe kumanyathelo okuqala, kwaye amanyathelo ama-3 okugqibela angawona aphambili.

Kumzekelo wam, inyathelo lokuqala yayikukufumana iikuki zogunyaziso kwi-PBX yomsebenzi wokuqala. Ngomsebenzi wesibini, ndifumene inombolo yenguqu yangoku ye-firmware ye-Mikrotik.

I-URL yeenguqulelo zangoku zeMikrotik firmware

Ezi dilesi zifumaneka kwisixhobo se-Mikrotik ngokwaso xa inguqulelo ye-firmware yamva nje ifunyenwe.

Inyathelo lokuqala ngumntu ngamnye ngokupheleleyo kwimeko nganye kwaye ingqiqo yomsebenzi wayo inokwahluka. Konke kuxhomekeke kumsebenzi wakho.

Xa usebenza ngoshicilelo lwewebhu, gcina umkhondo wokuba yeyiphi indlela yokuphendula oyifunayo. Izihloko Impendulo yeHTTP okanye ngokwakho umzimba impendulo ngaphandle kweeheda?
Ukuba iikuki zogunyaziso ziyafuneka, ke useta indlela yokuphendula Izihloko njengakwimeko yeenkwenkwezi.

Ukuba ufuna idatha, njengakwimeko yempendulo yomncedisi we-mikrotik, beka Umzimba impendulo ngaphandle kweeheda.

Isinyathelo 2

Masiqhubele phambili kwinyathelo lesibini. Ukufumana iseshoni yogunyaziso:

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 luguqulelo lwe-JSON-RPC protocol esetyenziswayo;
I-Zabbix isebenzisa i-JSON-RPC version 2.0;

  • indlela - indlela ebizwa;
  • iiparam - iiparamitha ezigqithiswa ngendlela;
  • i-id sisichongi sesicelo esinesizathu;
  • i-auth - iqhosha lokuqinisekisa lomsebenzisi; ekubeni singekabinayo, masiyimise ingabikho.

Ukusebenza kunye ne-API, ndenze iakhawunti eyahlukileyo enamalungelo alinganiselweyo. Okokuqala, akukho mfuneko yokuba unikeze ufikelelo apho ungafuni khona. Kwaye okwesibini, phambi kwenguqulo 5.0, igama lokugqitha esetwe ngemacro linokufundwa. Ngokufanelekileyo, ukuba usebenzisa igama eligqithisiweyo lomlawuli we-Zabbix, i-akhawunti yomlawuli kulula ukuyiba.

Oku kuya kuba yinyani ngakumbi xa usebenza ne-API ngokusebenzisa izikripthi zomntu wesithathu kunye nokugcina iziqinisekiso kwicala.

Ukusukela kwinguqulo ye-5.0 kukho ukhetho lokufihla igama eligqithisiweyo eligcinwe kwi-macro.

I-Zabbix - ukwandisa imida ye-macro

Xa udala i-akhawunti eyahlukileyo yokuhlaziya idatha nge-API, qiniseka ukuba ukhangele ukuba idatha oyifunayo iyafumaneka kwi-interface yewebhu kunye nokuba kunokwenzeka ukuyihlaziya. Khange ndijonge, kwaye ixesha elide ndingasiqondi isizathu sokuba i-macro endiyifunayo ingabonakali kwi-API.

I-Zabbix - ukwandisa imida ye-macro

Emva kokuba sifumene isigunyaziso kwi-API, siqhubeka sifumana uluhlu lweemacros.

Isinyathelo 3

I-API ayikuvumeli ukuba uhlaziye umphathi omkhulu ngegama, kufuneka uqale ufumane i-ID enkulu. Ngaphezu koko, ukufumana uluhlu lwee-macros zomamkeli othile, kufuneka wazi i-ID yalo mkhosi, kwaye esi sisicelo esongezelelweyo. Sebenzisa i-macro ehlala ikho {ID YOMBUNGAZI} kwisicelo akuvumelekanga. Ndigqibe kwelokuba ndiwutsibe lo mqathango ngolu hlobo:

I-Zabbix - ukwandisa imida ye-macro

Ndidale i-macro yasekhaya nge-ID yalo mamkeli. Ukufumana i-ID yomninimzi kulula kakhulu kwi-interface yewebhu.

Impendulo enoluhlu lwazo zonke iimakhro kwinginginya enikiweyo inokuhluzwa ngepatheni:

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

I-Zabbix - ukwandisa imida ye-macro

Ke, sifumana i-ID ye-macro esiyidingayo, phi MIKROTIK_VERSION ligama lemacro esiyifunayo. Kwimeko yam, i-macro iyakhangelwa MIKROTIK_VERSIONEyabelwe umamkeli.

Isicelo ngokwaso sijongeka ngolu hlobo:

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
}

Eyahlukileyo {sid} ifunyenwe kwisinyathelo sesibini kwaye iya kusetyenziswa rhoqo, apho kufuneka usebenze kunye ne-API interface.

INYATHELO 4 lokugqibela - ukuhlaziya i-macro

Ngoku siyazi i-ID ye-macro ekufuneka ihlaziywe, i-cookie yogunyaziso okanye i-firmware version ye-router. Unokuhlaziya 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} lixabiso elifunyenwe kwinyathelo lokuqala. Kumzekelo wam, inguqulelo ye-firmware ye-mikrotik yangoku
{hostmacroid} - ixabiso lifunyenwe kwinqanaba lesithathu - i-id ye-macro esiyihlaziyayo.

ezifunyanisiweyo

Indlela yokusombulula ingxaki ngokusebenza okusemgangathweni inzima kakhulu kwaye inde. Ngokukodwa ukuba uyayazi inkqubo kwaye unokongeza ngokukhawuleza ingqiqo efunekayo kwiskripthi.

Inzuzo ebonakalayo yale ndlela "kukuphatheka" kwesisombululo phakathi kwamaseva ahlukeneyo.

Kum buqu, iyamangalisa into yokuba iarhente yeHTTP ayikwazi ukufikelela kwidatha yenye into kwaye iyifake endaweni yayo kumzimba wesicelo okanye iiheader [ ZBXNEXT-5993].

Ithemplethi egqityiweyo inako Khuphela kwi-GitHub.

umthombo: www.habr.com

Yongeza izimvo