Zabbix - pagpalapad sa mga utlanan sa macro

Kung naghimo usa ka solusyon alang sa usa ka kliyente, 2 nga mga buluhaton ang mitungha nga gusto nako nga sulbaron nga matahum ug adunay regular nga pagpaandar sa Zabbix.

Buluhaton 1. Pagsubay sa kasamtangan nga bersyon sa firmware sa mga router sa Mikrotik.

Ang buluhaton dali nga masulbad - pinaagi sa pagdugang usa ka ahente sa template sa HTTP. Ang ahente nakadawat sa kasamtangan nga bersyon gikan sa Mikrotik website, ug ang trigger nagtandi sa kasamtangan nga bersyon uban sa kasamtangan nga usa ug nag-isyu sa usa ka alerto sa kaso sa usa ka kalainan.

Kung ikaw adunay 10 ka mga router, ang ingon nga algorithm dili kritikal, apan unsa ang buhaton sa 3000 nga mga router? Ipadala ang 3000 nga mga hangyo sa server? Siyempre, ang ingon nga laraw molihok, apan ang ideya sa ​3000 nga mga hangyo dili angay kanako, gusto nako nga mangita usa ka solusyon. Dugang pa, adunay usa pa ka disbentaha sa ingon nga algorithm: ang pikas nga bahin makaihap sa ingon nga gidaghanon sa mga hangyo gikan sa usa ka IP alang sa usa ka pag-atake sa DoS, mahimo ra nila kini i-ban.

Buluhaton 2. Paggamit sa sesyon sa pagtugot sa lainlaing mga ahente sa HTTP.

Kung ang usa ka ahente kinahanglan nga makadawat og impormasyon gikan sa "sirado" nga mga panid pinaagi sa HTTP, usa ka cookie sa pagtugot ang gikinahanglan. Aron mahimo kini, kasagaran adunay usa ka sumbanan nga porma sa pagtugot nga adunay usa ka pares nga "login / password" ug gibutang ang session ID sa cookie.

Apan adunay problema, imposible nga ma-access ang datos sa laing butang gikan sa usa ka butang nga ahente sa HTTP aron ilisan kini nga bili sa Header.

Adunay usab usa ka "Web script", kini adunay lain nga limitasyon, wala kini magtugot kanimo nga makakuha og sulud alang sa pag-analisar ug dugang nga pagtipig. Mahimo nimong susihon ang presensya sa gikinahanglan nga mga variable sa mga panid o ipasa ang nakuha nga mga variable tali sa mga lakang sa web script.

Human sa paghunahuna og gamay mahitungod niini nga mga buluhaton, nakahukom ko nga gamiton ang mga macro nga hingpit nga makita sa bisan unsang bahin sa sistema sa pag-monitor: sa mga templates, mga host, mga trigger o mga butang. Ug mahimo nimong i-update ang mga macro pinaagi sa web interface API.

Ang Zabbix adunay maayo ug detalyado nga dokumentasyon sa API. Alang sa pagbayloay sa datos pinaagi sa api, ang Json data format gigamit. Ang mga detalye makita sa opisyal nga dokumentasyon.

Ang han-ay sa mga aksyon alang sa pagkuha sa datos nga atong gikinahanglan ug pagrekord niini sa usa ka macro gipakita sa diagram sa ubos.

Zabbix - pagpalapad sa mga utlanan sa macro

lakang 1

Ang una nga lakang mahimong maglangkob sa usa ka aksyon o daghang mga aksyon. Ang tanan nga panguna nga lohika gibutang sa una nga mga lakang, ug ang katapusan nga 3 nga mga lakang mao ang panguna nga mga lakang.

Sa akong pananglitan, ang unang lakang mao ang pagkuha og mga cookies sa pagtugot sa PBX alang sa unang buluhaton. Alang sa ikaduhang buluhaton, nakuha nako ang numero sa kasamtangan nga bersyon sa firmware sa Mikrotik.

URL sa kasamtangang bersyon sa Mikrotik firmware

Kini nga mga adres ma-access sa mga kagamitan sa Mikrotik mismo kung ang labing bag-o nga magamit nga bersyon sa firmware nadawat.

Ang una nga lakang hingpit nga indibidwal alang sa matag kaso ug ang lohika sa trabaho niini mahimong lahi. Kini tanan nagdepende sa imong buluhaton.

Kung nagtrabaho uban ang web scripting, bantayi kung unsang pamaagi sa pagtubag ang imong kinahanglan. Mga titulo HTTP nga tubag o kaugalingon ang lawas tubag nga walay mga ulohan?
Kung gikinahanglan ang cookies sa pagtugot, dayon itakda ang paagi sa pagtubag Mga titulo sama sa kaso sa Asterisk.

Kung kinahanglan nimo ang datos, sama sa kaso sa tubag sa mikrotik server, ibutang Ang lawas tubag nga walay mga ulohan.

lakang 2

Mopadayon kita sa ikaduhang lakang. Pagkuha og sesyon sa pagtugot:

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
}

Ang jsonrpc mao ang bersyon sa JSON-RPC protocol nga gigamit;
Ang Zabbix nagpatuman sa JSON-RPC nga bersyon 2.0;

  • pamaagi - ang pamaagi nga gitawag;
  • params - mga parameter nga gipasa sa pamaagi;
  • id kay arbitraryong request identifier;
  • auth - yawe sa pag-authenticate sa user; kay wala pa man ta, ibutang nato sa null.

Aron magtrabaho uban sa API, naghimo ko og bulag nga account nga adunay limitado nga mga katungod. Una, dili nimo kinahanglan nga hatagan ang access sa kung diin dili nimo kinahanglan. Ug ikaduha, sa wala pa ang bersyon 5.0, ang password nga gitakda pinaagi sa macro mahimong mabasa. Tungod niini, kung gamiton nimo ang password sa tagdumala sa Zabbix, ang admin account dali nga kawaton.

Tinuod kini ilabi na kung nagtrabaho uban ang API pinaagi sa mga script sa ikatulo nga partido ug pagtipig sa mga kredensyal sa kilid.

Tungod kay ang bersyon 5.0 adunay kapilian nga itago ang password nga gitipig sa macro.

Zabbix - pagpalapad sa mga utlanan sa macro

Kung maghimo ug bulag nga account para sa pag-update sa datos pinaagi sa API, siguruha nga susihon kung ang datos nga imong gikinahanglan magamit ba pinaagi sa web interface ug kung posible ba nga i-update kini. Wala nako gisusi, ug unya sa dugay nga panahon dili nako masabtan kung nganong ang macro nga akong gikinahanglan dili makita sa API.

Zabbix - pagpalapad sa mga utlanan sa macro

Human kami makadawat og pagtugot sa API, magpadayon kami sa pagkuha og listahan sa mga macro.

lakang 3

Ang API wala magtugot kanimo sa pag-update sa usa ka host macro sa ngalan, kinahanglan nimo nga makuha una ang macro ID. Dugang pa, aron makakuha usa ka lista sa mga macro alang sa usa ka piho nga host, kinahanglan nimo mahibal-an ang ID sa kini nga host, ug kini usa ka dugang nga hangyo. Gamita ang default nga macro {HOST ID} sa hangyo bawal. Nakahukom ko nga laktawan ang pagdili sama niini:

Zabbix - pagpalapad sa mga utlanan sa macro

Naghimo ako usa ka lokal nga macro nga adunay ID sa host. Ang pagpangita sa host ID sayon ​​kaayo gikan sa web interface.

Ang tubag nga adunay lista sa tanan nga mga macro sa gihatag nga host mahimong masala pinaagi sa usa ka sumbanan:

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

Zabbix - pagpalapad sa mga utlanan sa macro

Busa, atong makuha ang ID sa macro nga atong gikinahanglan, diin MIKROTIK_VERSION mao ang ngalan sa macro nga atong gipangita. Sa akong kaso, ang macro gipangita MIKROTIK_VERSIONAng gi-assign sa host.

Ang hangyo mismo ingon niini:

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
}

Variable {sid} nakuha sa ikaduhang lakang ug gamiton kanunay, diin kinahanglan nimo nga magtrabaho kauban ang interface sa API.

Katapusan nga 4 nga LAKANG - pag-update sa macro

Karon nahibal-an na namon ang macro ID nga kinahanglan i-update, ang cookie sa pagtugot o ang bersyon sa firmware sa router. Mahimo nimong i-update ang macro mismo.

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_bersyon} mao ang bili nga nakuha sa unang lakang. Sa akong pananglitan, ang bersyon sa kasamtangan nga mikrotik firmware
{hostmacroid} - ang kantidad nakuha sa ikatulo nga lakang - ang id sa macro nga among gi-update.

kaplag

Ang pamaagi sa pagsulbad sa problema sa standard functionality mas komplikado ug mas dugay. Ilabi na kung nahibal-an nimo ang programming ug dali nga makadugang sa kinahanglan nga lohika sa script.

Ang klaro nga bentaha sa kini nga pamaagi mao ang "madaladala" sa solusyon tali sa lainlaing mga server.

Para nako sa personal, katingad-an nga ang ahente sa HTTP dili maka-access sa datos sa laing butang ug ilisan kini sa hangyo nga lawas o mga ulohan [ ZBXNEXT-5993].

Ang nahuman nga template mahimo download sa GitHub.

Source: www.habr.com

Idugang sa usa ka comment