Zabbix - leudachadh macro crìochan

Nuair a bha mi a’ dèanamh fuasgladh airson neach-dèiligidh, dh’ èirich gnìomhan 2 a bha mi airson fhuasgladh gu breagha agus le gnìomhachd Zabbix cunbhalach.

Tasg 1 A’ cumail sùil air an tionndadh firmware gnàthach air routers Mikrotik.

Tha an obair air fhuasgladh gu furasta - le bhith a’ cur àidseant ris an teamplaid HTTP. Bidh an neach-ionaid a’ faighinn an dreach làithreach bho làrach-lìn Mikrotik, agus bidh an inneal-brosnachaidh a’ dèanamh coimeas eadar an dreach làithreach leis an fhear a th’ ann an-dràsta agus a’ toirt a-mach rabhadh gun fhios nach bi eadar-dhealachadh ann.

Nuair a tha 10 routers agad, chan eil an leithid de algairim deatamach, ach dè a nì thu le 3000 routers? An cuir thu 3000 iarrtas chun t-seirbheisiche? Gu dearbh, obraichidh an leithid de sgeama, ach cha robh an dearbh bheachd air 3000 iarrtas freagarrach dhomh, bha mi airson fuasgladh eile a lorg. A bharrachd air an sin, bha ana-cothrom ann fhathast ann an leithid de algairim: faodaidh an taobh eile a leithid de dh ’iarrtasan bho aon IP airson ionnsaigh DoS a chunntadh, faodaidh iad dìreach casg a chuir air.

Tasg 2 A’ cleachdadh seisean ceadachaidh ann an diofar riochdairean HTTP.

Nuair a dh’ fheumas àidseant fiosrachadh fhaighinn bho dhuilleagan “dùinte” tro HTTP, tha feum air briosgaid ùghdarrais. Gus seo a dhèanamh, mar as trice bidh foirm cead àbhaisteach ann le paidhir “log a-steach / facal-faire” agus a’ suidheachadh ID an t-seisein sa bhriosgaid.

Ach tha duilgheadas ann, tha e do-dhèanta faighinn gu dàta rud eile bho aon nì àidseant HTTP gus an luach seo a chuir na àite anns a’ Bhann-cinn.

Tha “Sgriobt lìn” ann cuideachd, tha cuingealachadh eile aige, cha leig e leat susbaint fhaighinn airson mion-sgrùdadh agus tuilleadh sàbhaladh. Chan urrainn dhut ach sgrùdadh a dhèanamh airson làthaireachd nan caochladairean riatanach air na duilleagan no cuir seachad caochladairean a fhuaireadh roimhe eadar ceumannan sgriobt lìn.

Às deidh dhomh smaoineachadh beagan mu na gnìomhan sin, chuir mi romham macros a chleachdadh a tha gu math follaiseach ann am pàirt sam bith den t-siostam sgrùdaidh: ann an teamplaidean, luchd-aoigheachd, brosnachaidhean no nithean. Agus faodaidh tu macros ùrachadh tron ​​​​eadar-aghaidh lìn API.

Tha sgrìobhainnean API math agus mionaideach aig Zabbix. Airson iomlaid dàta tro api, thathas a’ cleachdadh cruth dàta Json. Gheibhear mion-fhiosrachadh ann an sgrìobhainnean oifigeil.

Tha an sreath de ghnìomhan airson an dàta a tha a dhìth oirnn fhaighinn agus an clàradh ann am macro air a shealltainn anns an dealbh gu h-ìosal.

Zabbix - leudachadh macro crìochan

ceum 1

Faodaidh a’ chiad cheum a bhith a’ gabhail a-steach aon ghnìomh no ioma-ghnìomh. Tha a h-uile prìomh loidsig air a chuir sìos anns na ciad cheumannan, agus is e na 3 ceumannan mu dheireadh na prìomh fheadhainn.

Anns an eisimpleir agam, b’ e a’ chiad cheum briosgaidean ceadachaidh fhaighinn air a’ PBX airson a’ chiad ghnìomh. Airson an dàrna gnìomh, fhuair mi an àireamh de dhreach firmware Mikrotik gnàthach.

URL nan dreachan gnàthach de firmware Mikrotik

Gheibhear cothrom air na seòlaidhean sin leis an uidheamachd Mikrotik fhèin nuair a gheibhear an dreach firmware as ùire a tha ri fhaighinn.

Tha a 'chiad cheum gu tur fa leth airson gach cùis agus faodaidh loidsig na h-obrach aige a bhith eadar-dhealaichte. Tha e uile an urra ris an obair agad.

Nuair a bhios tu ag obair le sgriobtadh lìn, cùm sùil air an dòigh freagairt a tha a dhìth ort. Tiotalan Freagairt HTTP no e fhèin тело freagairt gun cheann-cinn?
Ma tha feum air briosgaidean ceadachaidh, an uairsin suidhich am modh freagairt Tiotalan mar ann an cùis Asterisk.

Ma tha feum agad air dàta, mar ann an cùis freagairt an fhrithealaiche mikrotik, cuir An corp freagairt gun cheann-cinn.

ceum 2

Gluaisidh sinn air adhart chun dàrna ceum. A’ faighinn seisean ceadachaidh:

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
}

is e jsonrpc an dreach den phròtacal JSON-RPC a thathas a’ cleachdadh;
Bidh Zabbix a 'cur an gnìomh JSON-RPC dreach 2.0;

  • modh - an dòigh ris an canar;
  • paramadairean - crìochan a thèid seachad leis a 'mhodh;
  • tha id na aithnichear iarrtas neo-riaghailteach;
  • auth - iuchair dearbhaidh neach-cleachdaidh; leis nach eil e againn fhathast, cuireamaid gu null e.

Gus obrachadh leis an API, chruthaich mi cunntas air leth le còraichean cuibhrichte. An toiseach, chan fheum thu cothrom a thoirt seachad far nach fheum thu. Agus san dàrna h-àite, ron tionndadh 5.0, ghabhadh am facal-faire a chaidh a shuidheachadh tron ​​​​mhac a leughadh. Mar sin, ma chleachdas tu facal-faire rianadair Zabbix, tha e furasta an cunntas rianachd a ghoid.

Bidh seo gu sònraichte fìor nuair a bhios tu ag obair le API tro sgriobtaichean treas-phàrtaidh agus a’ stòradh theisteanasan air an taobh.

Bho dhreach 5.0 tha roghainn ann am facal-faire a chaidh a shàbhaladh sa macro a fhalach.

Zabbix - leudachadh macro crìochan

Nuair a chruthaicheas tu cunntas air leth airson dàta ùrachadh tron ​​API, dèan cinnteach a bheil an dàta a dh’ fheumas tu ri fhaighinn tron ​​eadar-aghaidh lìn agus a bheil e comasach ùrachadh. Cha do rinn mi sgrùdadh, agus an uairsin airson ùine mhòr cha robh mi a 'tuigsinn carson nach robh am macro a bha a dhìth orm ri fhaicinn san API.

Zabbix - leudachadh macro crìochan

Às deidh dhuinn cead fhaighinn san API, thèid sinn air adhart gus liosta macros fhaighinn.

ceum 3

Cha leig an API leat macro aoigheachd ùrachadh a rèir ainm, feumaidh tu an ID macro fhaighinn an-toiseach. A bharrachd air an sin, gus liosta de macros fhaighinn airson aoigheachd sònraichte, feumaidh fios a bhith agad air ID an aoigh seo, agus is e iarrtas a bharrachd a tha seo. Cleachd macro bunaiteach {HOST ID} chan eil an t-iarrtas ceadaichte. Cho-dhùin mi a dhol seachad air a’ chuingealachadh mar seo:

Zabbix - leudachadh macro crìochan

Chruthaich mi macro ionadail le ID an aoigh seo. Tha e glè fhurasta faighinn a-mach an ID aoigheachd bhon eadar-aghaidh lìn.

Faodar freagairt le liosta de na macros gu lèir air aoigheachd sònraichte a shìoladh le pàtran:

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

Zabbix - leudachadh macro crìochan

Mar sin, gheibh sinn ID a’ mhacro a dh’ fheumas sinn, càite MIKROTIK_VERSION is e ainm a’ mhacra a tha sinn a’ sireadh. Anns a 'chùis agam, tha am macro air a rannsachadh MIKROTIK_VERSIONChaidh sin a shònrachadh don neach-aoigheachd.

Tha an t-iarrtas fhèin a’ coimhead mar seo:

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
}

Caochlaideach {taobh} fhaighinn san dàrna ceum agus thèid a chleachdadh gu cunbhalach, far am feum thu a bhith ag obair leis an eadar-aghaidh API.

Ceum 4 deireannach - ag ùrachadh a 'mhacoc

A-nis tha fios againn air an ID macro a dh’ fheumar ùrachadh, am briosgaid ùghdarrachaidh no an dreach firmware den router. Faodaidh tu am macro fhèin ùrachadh.

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
}

{microtik_version} Is e an luach a gheibhear sa chiad cheum. Anns an eisimpleir agam, an dreach den firmware mikrotik gnàthach
{hostmacroid} - fhuaireadh an luach anns an treas ceum - ID a’ mhacro a tha sinn ag ùrachadh.

toraidhean

Tha an dòigh-obrach airson fuasgladh fhaighinn air an duilgheadas le gnìomhachd àbhaisteach tòrr nas iom-fhillte agus nas fhaide. Gu sònraichte ma tha thu eòlach air prògramadh agus gun urrainn dhut an loidsig riatanach a chuir ris an sgriobt gu sgiobalta.

Is e buannachd follaiseach an dòigh-obrach seo “so-ghiùlain” an fhuasglaidh eadar diofar luchd-frithealaidh.

Dhòmhsa gu pearsanta, tha e neònach nach urrainn don àidseant HTTP faighinn gu dàta rud eile agus an àite a chuir a-steach don bhuidheann iarrtais no na cinn-cinn [ ZBXNEXT-5993].

Faodaidh an teamplaid crìochnaichte luchdaich sìos air GitHub.

Source: www.habr.com

Cuir beachd ann