Zabbix - kupanua mipaka ya jumla

Wakati wa kufanya suluhisho kwa mteja, kazi 2 ziliibuka ambazo nilitaka kutatua kwa uzuri na kwa utendaji wa kawaida wa Zabbix.

Jukumu la 1. Kufuatilia toleo la sasa la programu dhibiti kwenye ruta za Mikrotik.

Kazi inatatuliwa kwa urahisi - kwa kuongeza wakala kwenye kiolezo cha HTTP. Wakala hupokea toleo la sasa kutoka kwa tovuti ya Mikrotik, na kichochezi hulinganisha toleo la sasa na la sasa na hutoa arifa iwapo kutatokea hitilafu.

Unapokuwa na ruta 10, algorithm kama hiyo sio muhimu, lakini ni nini cha kufanya na ruta 3000? Ungependa kutuma maombi 3000 kwa seva? Kwa kweli, mpango kama huo utafanya kazi, lakini wazo la maombi 3000 halikufaa, nilitaka kupata suluhisho lingine. Kwa kuongeza, bado kulikuwa na upungufu katika algorithm hiyo: upande mwingine unaweza kuhesabu idadi hiyo ya maombi kutoka kwa IP moja kwa mashambulizi ya DoS, wanaweza tu kupiga marufuku.

Jukumu la 2. Kutumia kipindi cha uidhinishaji katika mawakala tofauti wa HTTP.

Wakati wakala anahitaji kupokea taarifa kutoka kwa kurasa "zilizofungwa" kupitia HTTP, kidakuzi cha uidhinishaji kinahitajika. Ili kufanya hivyo, kawaida kuna fomu ya uidhinishaji ya kawaida na jozi ya "kuingia / nenosiri" na kuweka kitambulisho cha kikao kwenye kuki.

Lakini kuna tatizo, haiwezekani kufikia data ya bidhaa nyingine kutoka kwa wakala mmoja wa HTTP ili kubadilisha thamani hii kwenye Kichwa.

Pia kuna "hati ya Wavuti", ina kikomo kingine, haikuruhusu kupata yaliyomo kwa uchambuzi na kuokoa zaidi. Unaweza tu kuangalia uwepo wa vigezo muhimu kwenye kurasa au kupitisha vigezo vilivyopokelewa hapo awali kati ya hatua za hati za wavuti.

Baada ya kufikiria kidogo kuhusu kazi hizi, niliamua kutumia macros ambayo yanaonekana kikamilifu katika sehemu yoyote ya mfumo wa ufuatiliaji: katika templates, majeshi, vichochezi au vitu. Na unaweza kusasisha macros kupitia API ya kiolesura cha wavuti.

Zabbix ina hati nzuri na za kina za API. Kwa kubadilishana data kupitia api, umbizo la data la Json linatumiwa. Maelezo yanaweza kupatikana ndani nyaraka rasmi.

Mlolongo wa vitendo vya kupata data tunayohitaji na kurekodi kwa jumla imeonyeshwa kwenye mchoro hapa chini.

Zabbix - kupanua mipaka ya jumla

Hatua ya 1

Hatua ya kwanza kabisa inaweza kujumuisha kitendo kimoja au vitendo vingi. Mantiki yote kuu imewekwa katika hatua za kwanza, na hatua 3 za mwisho ndizo kuu.

Katika mfano wangu, hatua ya kwanza ilikuwa kupata vidakuzi vya idhini kwenye PBX kwa kazi ya kwanza. Kwa kazi ya pili, nilipata nambari ya toleo la sasa la firmware ya Mikrotik.

URL ya matoleo ya sasa ya programu dhibiti ya Mikrotik

Anwani hizi zinafikiwa na vifaa vya Mikrotik yenyewe wakati toleo la hivi punde la programu dhibiti linapopokelewa.

Hatua ya kwanza ni ya mtu binafsi kwa kila kesi na mantiki ya kazi yake inaweza kuwa tofauti. Yote inategemea kazi yako.

Unapofanya kazi na uandishi wa wavuti, fuatilia ni njia gani ya majibu unayohitaji. Majina Jibu la HTTP au ubinafsi Ρ‚Π΅Π»ΠΎ majibu bila vichwa?
Ikiwa vidakuzi vya uidhinishaji vinahitajika, basi weka mbinu ya kujibu Majina kama ilivyo kwa kinyota.

Ikiwa unahitaji data, kama ilivyo kwa majibu ya seva ya mikrotik, weka Mwili majibu bila vichwa.

Hatua ya 2

Hebu tuendelee kwenye hatua ya pili. Kupata kipindi cha idhini:

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
}

jsonrpc ni toleo la itifaki ya JSON-RPC ambayo inatumika;
Zabbix inatekeleza toleo la JSON-RPC 2.0;

  • njia - njia inayoitwa;
  • vigezo - vigezo vinavyopitishwa na njia;
  • kitambulisho ni kitambulisho cha ombi la kiholela;
  • auth - ufunguo wa uthibitishaji wa mtumiaji; kwa kuwa bado hatuna, wacha tuiweke batili.

Ili kufanya kazi na API, niliunda akaunti tofauti na haki chache. Kwanza, hauitaji kutoa ufikiaji mahali ambapo hauitaji. Na pili, kabla ya toleo la 5.0, nenosiri lililowekwa kupitia jumla linaweza kusomwa. Ipasavyo, ikiwa unatumia nenosiri la msimamizi wa Zabbix, akaunti ya msimamizi ni rahisi kuiba.

Hii itakuwa kweli hasa wakati wa kufanya kazi na API kupitia hati za watu wengine na kuhifadhi vitambulisho kando.

Kwa kuwa toleo la 5.0 kuna chaguo la kuficha nenosiri lililohifadhiwa kwenye jumla.

Zabbix - kupanua mipaka ya jumla

Unapounda akaunti tofauti ya kusasisha data kupitia API, hakikisha kuwa umeangalia ikiwa data unayohitaji inapatikana kupitia kiolesura cha wavuti na kama inawezekana kuisasisha. Sikuangalia, halafu kwa muda mrefu sikuweza kuelewa ni kwanini macro niliyohitaji haikuonekana kwenye API.

Zabbix - kupanua mipaka ya jumla

Baada ya kupokea idhini katika API, tunaendelea kupata orodha ya macros.

Hatua ya 3

API haikuruhusu kusasisha mwenyeji mkuu kwa jina, lazima kwanza upate kitambulisho kikuu. Zaidi ya hayo, ili kupata orodha ya macros kwa mwenyeji maalum, unahitaji kujua kitambulisho cha mwenyeji huyu, na hili ni ombi la ziada. Tumia makro chaguomsingi {KITAMBULISHO CHA MWENYEJI} katika ombi hairuhusiwi. Niliamua kupitisha kizuizi kama hiki:

Zabbix - kupanua mipaka ya jumla

Niliunda jumla ya ndani na kitambulisho cha mwenyeji huyu. Kujua kitambulisho cha mwenyeji ni rahisi sana kutoka kwa kiolesura cha wavuti.

Jibu lenye orodha ya makro zote kwenye seva pangishi inaweza kuchujwa kwa mchoro:

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

Zabbix - kupanua mipaka ya jumla

Kwa hivyo, tunapata kitambulisho cha jumla tunachohitaji, wapi MIKROTIK_VERSION ni jina la macro tunayotafuta. Katika kesi yangu, macro hutafutwa MIKROTIK_VERSIONIle iliyokabidhiwa kwa mwenyeji.

Ombi lenyewe linaonekana kama hii:

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
}

Inaweza kubadilika {sid} kupatikana katika hatua ya pili na itatumika daima, ambapo unahitaji kufanya kazi na interface ya API.

Mwisho 4 HATUA - kusasisha jumla

Sasa tunajua kitambulisho kikubwa kinachohitaji kusasishwa, kidakuzi cha uidhinishaji au toleo la firmware la kipanga njia. Unaweza kusasisha macro yenyewe.

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} ni thamani iliyopatikana katika hatua ya kwanza. Katika mfano wangu, toleo la firmware ya sasa ya mikrotik
{hostmacroid} - thamani ilipatikana katika hatua ya tatu - kitambulisho cha jumla ambacho tunasasisha.

Matokeo

Njia ya kutatua shida na utendakazi wa kawaida ni ngumu zaidi na ndefu. Hasa ikiwa unajua programu na unaweza kuongeza haraka mantiki muhimu katika hati.

Faida dhahiri ya njia hii ni "portability" ya suluhisho kati ya seva tofauti.

Kwangu mimi binafsi, inashangaza kwamba wakala wa HTTP hawezi kupata data ya bidhaa nyingine na kuzibadilisha katika bodi ya ombi au vichwa [ ZBXNEXT-5993].

template kumaliza unaweza pakua kwenye GitHub.

Chanzo: mapenzi.com

Kuongeza maoni