Zabbix - agrandi limit makro

Lè w ap fè yon solisyon pou yon kliyan, 2 travay te parèt ke mwen te vle rezoud trè byen epi ak fonksyonalite Zabbix regilye.

NAN defi. Swiv vèsyon firmwèr aktyèl la sou routeurs Mikrotik.

Travay la rezoud fasil - lè w ajoute yon ajan nan modèl HTTP a. Ajan an resevwa vèsyon aktyèl la nan sit entènèt Mikrotik la, epi deklanche a konpare vèsyon aktyèl la ak vèsyon aktyèl la epi li bay yon alèt nan ka ta gen yon diferans.

Lè ou gen 10 routeurs, yon algorithm konsa pa kritik, men kisa pou fè ak 3000 routeurs? Voye 3000 demann nan sèvè a? Natirèlman, tankou yon konplo ap travay, men lide a anpil nan 3000 demann pa t 'kofòm mwen, mwen te vle jwenn yon lòt solisyon. Anplis de sa, te gen toujou yon dezavantaj nan yon algorithm konsa: lòt bò a ka konte tankou yon kantite demann soti nan yon sèl IP pou yon atak DoS, yo ka tou senpleman entèdi li.

NAN defi. Sèvi ak yon sesyon otorizasyon nan diferan ajan HTTP.

Lè yon ajan bezwen resevwa enfòmasyon ki soti nan paj "fèmen" atravè HTTP, li nesesè yon bonbon otorizasyon. Pou fè sa, anjeneral gen yon fòm otorizasyon estanda ak yon pè "login / modpas" ak mete ID sesyon an nan bonbon la.

Men, gen yon pwoblèm, li enposib jwenn aksè nan done yo nan yon lòt atik ki soti nan yon atik ajan HTTP ranplase valè sa a nan Header la.

Genyen tou yon "Web script", li gen yon lòt limit, li pa pèmèt ou jwenn kontni pou analiz ak plis ekonomize. Ou ka tcheke sèlman pou prezans nan varyab ki nesesè yo sou paj yo oswa pase varyab deja jwenn ant etap script entènèt.

Apre reflechi yon ti kras sou travay sa yo, mwen deside sèvi ak makro ki parfe vizib nan nenpòt ki pati nan sistèm siveyans la: nan modèl, gen tout pouvwa a, deklanche oswa atik. Epi ou ka mete ajou makro atravè API koòdone entènèt la.

Zabbix gen bon dokiman API detaye. Pou echanj done atravè api, yo itilize fòma done Json. Ou ka jwenn detay nan dokiman ofisyèl yo.

Se sekans aksyon pou jwenn done nou bezwen yo epi anrejistre yo nan yon makro nan dyagram ki anba a.

Zabbix - agrandi limit makro

Etap 1

Premye etap la ka konpoze de yon sèl aksyon oswa plizyè aksyon. Tout lojik prensipal la mete nan premye etap yo, ak 3 dènye etap yo se prensipal yo.

Nan egzanp mwen an, premye etap la se te jwenn bonbon otorizasyon sou PBX a pou premye travay la. Pou dezyèm travay la, mwen te resevwa nimewo a nan vèsyon aktyèl la nan firmwèr Mikrotik la.

URL vèsyon aktyèl Mikrotik firmwèr

Yo jwenn adrès sa yo pa ekipman Mikrotik tèt li lè yo resevwa dènye vèsyon firmwèr ki disponib la.

Premye etap la se konplètman endividyèl pou chak ka ak lojik nan travay li yo ka diferan. Li tout depann sou travay ou.

Lè w ap travay ak scripting entènèt, kenbe tras de ki metòd repons ou bezwen. Tit HTTP repons oswa pwòp tèt ou kò a repons san tèt yo?
Si yo bezwen bonbon otorizasyon, Lè sa a, mete metòd repons lan Tit tankou nan ka Asterisk la.

Si ou bezwen done, tankou nan ka a nan repons sèvè mikrotik, mete Kò a repons san tèt yo.

Etap 2

Ann ale nan dezyèm etap la. Jwenn yon sesyon otorizasyon:

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 se vèsyon pwotokòl JSON-RPC ke yo itilize;
Zabbix aplike JSON-RPC vèsyon 2.0;

  • metòd - metòd yo rele;
  • paramèt - paramèt yo pase pa metòd la;
  • id se yon idantifyan demann abitrè;
  • auth - kle otantifikasyon itilizatè; piske nou poko genyen l, ann mete l pou null.

Pou travay ak API a, mwen te kreye yon kont apa ak dwa limite. Premyèman, ou pa bezwen bay aksè nan kote ou pa bezwen. Ak dezyèmman, anvan vèsyon 5.0, modpas la mete nan macro a ta ka li. An konsekans, si ou itilize modpas administratè Zabbix, kont administratè a fasil pou vòlè.

Sa a pral laverite espesyalman lè w ap travay ak API atravè scripts twazyèm pati ak estoke kalifikasyon sou bò a.

Depi vèsyon 5.0 gen yon opsyon pou kache modpas ki te sove nan macro a.

Zabbix - agrandi limit makro

Lè w ap kreye yon kont separe pou mete ajou done atravè API a, asire w ke w tcheke si done ou bezwen yo disponib atravè koòdone entènèt la epi si li posib pou mete ajou li. Mwen pa t tcheke, ak Lè sa a, pou yon tan long mwen pa t 'kapab konprann poukisa macro mwen te bezwen an pa t 'vizib nan API a.

Zabbix - agrandi limit makro

Apre nou fin resevwa otorizasyon nan API a, nou kontinye jwenn yon lis makro.

Etap 3

API a pa pèmèt ou mete ajou yon makro lame pa non, ou dwe premye jwenn ID la macro. Anplis, pou jwenn yon lis makro pou yon lame espesifik, ou bezwen konnen ID lame sa a, epi sa a se yon demann siplemantè. Sèvi ak makro default {ID LAME} nan demann lan pa pèmèt. Mwen deside kontoune restriksyon an tankou sa a:

Zabbix - agrandi limit makro

Mwen te kreye yon makro lokal ak ID lame sa a. Chèche konnen ID lame a trè fasil nan koòdone entènèt la.

Yon repons ak yon lis tout makro sou yon lame bay yo ka filtre pa yon modèl:

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

Zabbix - agrandi limit makro

Kidonk, nou jwenn ID makro nou bezwen an, ki kote MIKROTIK_VERSION se non makro nap chache a. Nan ka mwen an, yo fouye makro a MIKROTIK_VERSIONSa ki te plase nan lame a.

Demann nan tèt li sanble sa a:

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
}

Varyab {sid} jwenn nan dezyèm etap la epi yo pral itilize toujou ap, kote ou bezwen travay ak koòdone nan API.

Final 4 ETAP - mete ajou makro a

Koulye a, nou konnen ID macro ki bezwen mete ajou, bonbon otorizasyon oswa vèsyon firmwèr routeur la. Ou ka mete ajou macro nan tèt li.

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} se valè yo jwenn nan premye etap la. Nan egzanp mwen an, vèsyon an nan mikrotik mikrotik aktyèl la
{hostmacroid} - valè a te jwenn nan twazyèm etap la - id nan makro a ke nou ap mete ajou.

Jwenn

Apwòch la pou rezoud pwoblèm nan ak fonksyonalite estanda se pi plis konplike ak pi long. Espesyalman si ou konnen pwogramasyon epi ou ka byen vit ajoute lojik ki nesesè nan script la.

Avantaj nan evidan nan apwòch sa a se "portabilite" nan solisyon an ant serveurs diferan.

Pou mwen pèsonèlman, li etranj ke ajan HTTP a pa ka jwenn aksè nan done yo nan yon lòt atik epi ranplase yo nan kò demann lan oswa en-tèt [ ZBXNEXT-5993].

Modèl la fini kapab telechaje sou GitHub.

Sous: www.habr.com

Add nouvo kòmantè