Zabbix - ngembangaken wates makro

Nalika nggawe solusi kanggo klien, ana 2 tugas sing dakkarepake kanggo ngrampungake kanthi apik lan kanthi fungsi Zabbix biasa.

1 tugas. Nelusuri versi firmware saiki ing router Mikrotik.

Tugas ditanggulangi kanthi gampang - kanthi nambahake agen menyang cithakan HTTP. Agen nampa versi saiki saka situs web Mikrotik, lan pemicu mbandhingake versi saiki karo sing saiki lan menehi tandha yen ana bedo.

Nalika sampeyan duwe 10 router, algoritma kuwi ora kritis, nanging apa karo 3000 router? Kirim 3000 panjalukan menyang server? Mesthi, skema kasebut bakal bisa digunakake, nanging ide 3000 panjaluk ora cocog karo aku, aku pengin golek solusi liyane. Kajaba iku, isih ana kekurangan ing algoritma kasebut: sisih liya bisa ngetung pirang-pirang panjaluk saka siji IP kanggo serangan DoS, mung bisa nglarang.

2 tugas. Nggunakake sesi wewenang ing macem-macem agen HTTP.

Nalika agen kudu nampa informasi saka kaca "ditutup" liwat HTTP, cookie wewenang dibutuhake. Kanggo nindakake iki, biasane ana formulir wewenang standar kanthi pasangan "login / sandi" lan nyetel ID sesi ing cookie.

Nanging ana masalah, ora bisa ngakses data item liyane saka siji item agen HTTP kanggo ngganti nilai iki ing Header.

Ana uga "skrip Web", duwe watesan liyane, ora ngidini sampeyan entuk konten kanggo analisis lan luwih disimpen. Sampeyan mung bisa mriksa ananΓ© variabel sing dibutuhake ing kaca utawa ngliwati variabel sing dipikolehi sadurunge ing antarane langkah-langkah skrip web.

Sawise mikir sethithik babagan tugas kasebut, aku mutusake nggunakake makro sing katon apik ing bagean sistem pemantauan: ing template, host, pemicu utawa item. Lan sampeyan bisa nganyari makro liwat API antarmuka web.

Zabbix duwe dokumentasi API sing apik lan rinci. Kanggo ijol-ijolan data liwat api, format data Json digunakake. Rincian bisa ditemokake ing dokumentasi resmi.

Urutan tumindak kanggo njupuk data sing dibutuhake lan ngrekam ing makro ditampilake ing diagram ing ngisor iki.

Zabbix - ngembangaken wates makro

langkah 1

Langkah pisanan bisa kalebu tumindak siji utawa sawetara tumindak. Kabeh logika utama dilebokake ing langkah pisanan, lan 3 langkah pungkasan minangka sing utama.

Ing contoku, langkah pisanan yaiku njaluk cookie wewenang ing PBX kanggo tugas pisanan. Kanggo tugas kapindho, aku entuk nomer versi firmware Mikrotik saiki.

URL versi saiki saka firmware Mikrotik

Alamat kasebut diakses dening peralatan Mikrotik dhewe nalika versi firmware paling anyar sing kasedhiya ditampa.

Langkah pisanan pancen individu kanggo saben kasus lan logika karyane bisa uga beda. Iku kabeh gumantung ing tugas sampeyan.

Nalika nggarap skrip web, lacak cara respon sing sampeyan butuhake. Judhul Tanggepan HTTP utawa dhewe awak respon tanpa header?
Yen cookie wewenang dibutuhake, banjur setel cara respon Judhul kaya ing kasus Asterisk.

Yen sampeyan butuh data, kaya ing kasus respon server mikrotik, sijine Awake respon tanpa header.

langkah 2

Ayo pindhah menyang langkah kapindho. Entuk sesi wewenang:

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 minangka versi protokol JSON-RPC sing digunakake;
Zabbix ngleksanakake JSON-RPC versi 2.0;

  • cara - cara sing diarani;
  • params - paramΓ¨ter sing dilewati kanthi cara;
  • id minangka pengenal panyuwunan sing sewenang-wenang;
  • auth - tombol otentikasi pangguna; amarga kita durung duwe, ayo nyetel menyang null.

Kanggo nggarap API, aku nggawe akun kapisah kanthi hak winates. Kaping pisanan, sampeyan ora perlu menehi akses menyang papan sing ora perlu. Lan kapindho, sadurunge versi 5.0, sandhi sing disetel liwat makro bisa diwaca. Mulane, yen sampeyan nggunakake sandi administrator Zabbix, akun admin gampang kanggo nyolong.

Iki bakal bener nalika nggarap API liwat skrip pihak katelu lan nyimpen kredensial ing sisih.

Wiwit versi 5.0 ana pilihan kanggo ndhelikake sandhi sing disimpen ing makro.

Zabbix - ngembangaken wates makro

Nalika nggawe akun kapisah kanggo nganyari data liwat API, priksa manawa data sing sampeyan butuhake kasedhiya liwat antarmuka web lan manawa bisa nganyari. Aku ora mriksa, banjur kanggo dangu aku ora bisa ngerti apa macro aku needed ora katon ing API.

Zabbix - ngembangaken wates makro

Sawise kita wis nampa wewenang ing API, kita nerusake kanggo njaluk dhaftar macro.

langkah 3

API ora ngidini sampeyan nganyari makro host kanthi jeneng, sampeyan kudu entuk ID makro dhisik. Menapa malih, kanggo njaluk dhaftar macro kanggo host tartamtu, sampeyan kudu ngerti ID host iki, lan iki panjalukan ekstra. Gunakake makro standar {ID HOST} ing panyuwunan ora diijini. Aku mutusake kanggo ngliwati watesan kaya iki:

Zabbix - ngembangaken wates makro

Aku nggawe makro lokal karo ID host iki. Nggoleki ID host gampang banget saka antarmuka web.

Tanggepan kanthi dhaptar kabeh makro ing host tartamtu bisa disaring kanthi pola:

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

Zabbix - ngembangaken wates makro

Mangkono, kita njaluk ID saka macro kita kudu, ngendi MIKROTIK_VERSION yaiku jeneng makro sing kita goleki. Ing kasusku, makro digoleki MIKROTIK_VERSIONSing ditugasake kanggo tuan rumah.

Panjaluk kasebut katon kaya mangkene:

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
}

Variabel {sid} dijupuk ing langkah kapindho lan bakal digunakake terus-terusan, ngendi sampeyan kudu bisa karo antarmuka API.

Final 4 STEP - nganyari makro

Saiki kita ngerti ID makro sing kudu dianyari, cookie wewenang utawa versi firmware router. Sampeyan bisa nganyari makro dhewe.

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
}

{versi_mikrotik} punika nilai dijupuk ing langkah pisanan. Ing conto, versi firmware mikrotik saiki
{hostmacroid} - nilai kasebut dipikolehi ing langkah katelu - id makro sing kita nganyari.

temonan

Pendekatan kanggo ngrampungake masalah kanthi fungsi standar luwih rumit lan luwih suwe. Utamane yen sampeyan ngerti pemrograman lan bisa nambah logika sing dibutuhake ing naskah kanthi cepet.

Keuntungan sing jelas saka pendekatan iki yaiku "portabilitas" solusi ing antarane server sing beda-beda.

Kanggo kula pribadi, aneh yen agen HTTP ora bisa ngakses data item liyane lan ngganti ing awak panjalukan utawa header [ ZBXNEXT-5993].

Cithakan rampung bisa download ing GitHub.

Source: www.habr.com

Add a comment