Zabbix - မက်ခရိုနယ်နိမိတ်များကို ချဲ့ထွင်ခြင်း။

ဖောက်သည်တစ်ဦးအတွက် အဖြေတစ်ခုပြုလုပ်သောအခါ၊ ပုံမှန် Zabbix လုပ်ဆောင်နိုင်စွမ်းဖြင့် လှပစွာဖြေရှင်းလိုသော အလုပ် ၂ ခု ပေါ်လာပါသည်။

Task ကို 1 ။ Mikrotik router များပေါ်တွင် လက်ရှိ firmware ဗားရှင်းကို ခြေရာခံခြင်း။

HTTP template တွင် အေးဂျင့်တစ်ခုကို ပေါင်းထည့်ခြင်းဖြင့် အလုပ်အား လွယ်ကူစွာ ဖြေရှင်းနိုင်သည်။ အေးဂျင့်သည် Mikrotik ဝဘ်ဆိုက်မှ လက်ရှိဗားရှင်းကို လက်ခံရရှိပြီး အစပျိုးမှုသည် လက်ရှိဗားရှင်းနှင့် လက်ရှိဗားရှင်းကို နှိုင်းယှဉ်ကာ ကွဲလွဲမှုရှိပါက သတိပေးချက်တစ်ခု ထုတ်ပြန်သည်။

သင့်တွင် Router 10 ခုရှိသောအခါ၊ ထိုသို့သော algorithm သည် မစိုးရိမ်ရသော်လည်း router 3000 နှင့် ဘာလုပ်ရမည်နည်း။ တောင်းဆိုချက် 3000 ကို ဆာဗာသို့ ပို့မလား။ ဟုတ်ပါတယ်၊ ဒီလိုအစီအစဥ်တစ်ခုက အလုပ်ဖြစ်ပေမဲ့ တောင်းဆိုချက် ၃၀၀၀ ရဲ့ စိတ်ကူးက ကျွန်မနဲ့ မကိုက်ညီတဲ့အတွက် တခြားအဖြေကို ရှာချင်ခဲ့တယ်။ ထို့အပြင်၊ ထိုကဲ့သို့သော အယ်လဂိုရီသမ်တွင် အားနည်းချက်ရှိပါသေးသည်- DoS တိုက်ခိုက်မှုအတွက် IP တစ်ခုမှ တောင်းဆိုချက်အများအပြားကို အခြားတစ်ဖက်မှ ရေတွက်နိုင်ပြီး ၎င်းတို့သည် ၎င်းကို ရိုးရှင်းစွာ တားမြစ်နိုင်သည်။

Task ကို 2 ။ မတူညီသော HTTP အေးဂျင့်များတွင် ခွင့်ပြုချက်သတ်မှတ်ချိန်ကို အသုံးပြုခြင်း။

HTTP မှတစ်ဆင့် "ပိတ်ထားသော" စာမျက်နှာများမှ အချက်အလက်များကို အေးဂျင့်တစ်ဦးမှ လက်ခံရယူရန် လိုအပ်သည့်အခါ၊ ခွင့်ပြုချက်ကွတ်ကီးတစ်ခု လိုအပ်ပါသည်။ ၎င်းကိုလုပ်ဆောင်ရန်၊ ပုံမှန်အားဖြင့် "အကောင့်ဝင်/စကားဝှက်" တွဲနှင့် cookie အတွင်းရှိ စက်ရှင် ID ကို သတ်မှတ်ခြင်းနှင့်အတူ ပုံမှန်ခွင့်ပြုချက်ပုံစံတစ်ခုရှိသည်။

သို့သော် ပြဿနာတစ်ခုရှိနေသည်၊ ဤတန်ဖိုးကို Header တွင်အစားထိုးရန်အတွက် HTTP အေးဂျင့်တစ်ခုမှ အခြားအရာတစ်ခု၏ဒေတာကို ဝင်ရောက်ကြည့်ရှုရန် မဖြစ်နိုင်ပါ။

"ဝဘ် ဇာတ်ညွှန်း" တွင်လည်း အခြားကန့်သတ်ချက်များရှိပါသည်၊ ၎င်းသည် သင့်အား ခွဲခြမ်းစိတ်ဖြာရန်နှင့် နောက်ထပ်သိမ်းဆည်းရန်အတွက် အကြောင်းအရာကို ရယူခွင့်မပြုပါ။ စာမျက်နှာများပေါ်တွင် လိုအပ်သော ကိန်းရှင်များ ရှိနေခြင်းအတွက်သာ စစ်ဆေးနိုင်သည် သို့မဟုတ် ဝဘ်စခရစ် အဆင့်များကြားတွင် ယခင်က ရရှိထားသော ကိန်းရှင်များကို ကျော်ဖြတ်နိုင်သည်။

ဤလုပ်ငန်းဆောင်တာများအကြောင်း အနည်းငယ်စဉ်းစားပြီးနောက်၊ စောင့်ကြည့်စနစ်၏ မည်သည့်အစိတ်အပိုင်းတွင်မဆို စုံလင်စွာမြင်နိုင်သော မက်ခရိုကို အသုံးပြုရန် ဆုံးဖြတ်ခဲ့သည်- နမူနာများ၊ တန်ဆာပလာများ၊ အစပျိုးမှုများ သို့မဟုတ် အရာများ။ ဝဘ်အင်တာဖေ့စ် API မှတဆင့် မက်ခရိုများကို အပ်ဒိတ်လုပ်နိုင်သည်။

Zabbix တွင် ကောင်းမွန်ပြီး အသေးစိတ်သော API စာရွက်စာတမ်းများရှိသည်။ api မှတစ်ဆင့် ဒေတာဖလှယ်ရန်အတွက် Json ဒေတာဖော်မတ်ကို အသုံးပြုသည်။ အသေးစိတ်ကို တွင် ကြည့်ရှုနိုင်ပါသည်။ တရားဝင်စာရွက်စာတမ်း.

ကျွန်ုပ်တို့လိုအပ်သောဒေတာကိုရယူပြီး ၎င်းတို့ကို မက်ခရိုတွင် မှတ်တမ်းတင်ခြင်းအတွက် လုပ်ဆောင်ချက်များ အဆင့်ဆင့်ကို အောက်ဖော်ပြပါပုံတွင် ပြထားသည်။

Zabbix - မက်ခရိုနယ်နိမိတ်များကို ချဲ့ထွင်ခြင်း။

ခြေလှမ်း 1

ပထမအဆင့်တွင် လုပ်ဆောင်ချက်တစ်ခုတည်း သို့မဟုတ် လုပ်ဆောင်ချက်များစွာ ပါဝင်နိုင်သည်။ ပင်မယုတ္တိဗေဒအားလုံးကို ပထမအဆင့်တွင် ထည့်သွင်းထားပြီး နောက်ဆုံးအဆင့် 3 ဆင့်သည် အဓိကဖြစ်သည်။

ကျွန်ုပ်၏နမူနာတွင်၊ ပထမအဆင့်မှာ ပထမဆုံးလုပ်ဆောင်စရာအတွက် PBX တွင် ခွင့်ပြုချက်ကွတ်ကီးများကို ရယူရန်ဖြစ်သည်။ ဒုတိယတာဝန်အတွက်၊ Mikrotik firmware ၏ လက်ရှိဗားရှင်းနံပါတ်ကို ကျွန်ုပ်ရရှိပါသည်။

Mikrotik firmware ၏ လက်ရှိဗားရှင်းများ၏ URL

နောက်ဆုံးရနိုင်သော ဖိုင်းဝဲဗားရှင်းကို လက်ခံရရှိသောအခါတွင် အဆိုပါလိပ်စာများကို Mikrotik စက်ပစ္စည်းကိုယ်တိုင်က ဝင်ရောက်ကြည့်ရှုသည်။

ပထမအဆင့်သည် ကိစ္စတစ်ခုစီအတွက် လုံးဝတစ်ဦးချင်းဖြစ်ပြီး ၎င်း၏အလုပ်၏ယုတ္တိမှာ ကွဲပြားနိုင်သည်။ ဒါတွေအားလုံးက မင်းရဲ့တာဝန်ပေါ်မှာ မူတည်တယ်။

ဝဘ် scripting ဖြင့်အလုပ်လုပ်သောအခါ၊ သင်လိုအပ်သောတုံ့ပြန်မှုနည်းလမ်းကိုခြေရာခံပါ။ ဘွဲ့တံဆိပ်များ HTTP တုံ့ပြန်မှု သို့မဟုတ် မိမိကိုယ်ကို ကိုယ်ခန္ဓာ ခေါင်းစီးမပါဘဲ တုံ့ပြန်မှုလား။
ခွင့်ပြုချက်ကွတ်ကီးများ လိုအပ်ပါက၊ ထို့နောက် တုံ့ပြန်မှုနည်းလမ်းကို သတ်မှတ်ပါ။ ဘွဲ့တံဆိပ်များ Asterisk ၏ကိစ္စတွင်ကဲ့သို့ပင်။

အကယ်၍ သင်သည် mikrotik ဆာဗာတုံ့ပြန်မှုတွင်ကဲ့သို့ ဒေတာကို လိုအပ်ပါက ထားလိုက်ပါ။ ကိုယ်ခန္ဓာ ခေါင်းစီးများမပါဘဲ တုံ့ပြန်မှု။

ခြေလှမ်း 2

ဒုတိယအဆင့်ကို ဆက်သွားရအောင်။ ခွင့်ပြုချက် သတ်မှတ်ချိန်ကို ရယူခြင်း-

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 သည် အသုံးပြုနေသော JSON-RPC ပရိုတိုကော၏ ဗားရှင်းဖြစ်သည်။
Zabbix သည် JSON-RPC ဗားရှင်း 2.0 ကို အကောင်အထည်ဖော်သည်။

  • method - ဟုခေါ်သောနည်းလမ်း၊
  • params - နည်းလမ်းအားဖြင့်ဖြတ်သန်းသော parameters များ;
  • id သည် မတရားတောင်းဆိုမှု identifier တစ်ခုဖြစ်သည်။
  • auth - အသုံးပြုသူ စစ်မှန်ကြောင်းအထောက်အထားပြသော့၊ ကျွန်တော်တို့မှာ မရှိသေးတဲ့အတွက် null လို့ သတ်မှတ်လိုက်ကြရအောင်။

API နှင့်အလုပ်လုပ်ရန်၊ ကျွန်ုပ်သည် အကန့်အသတ်ရှိသော အခွင့်အရေးများဖြင့် သီးခြားအကောင့်တစ်ခုကို ဖန်တီးခဲ့သည်။ ပထမဦးစွာ၊ သင်မလိုအပ်သောနေရာများသို့ဝင်ရောက်ခွင့်ပေးရန်မလိုအပ်ပါ။ ဒုတိယအနေနှင့်၊ ဗားရှင်း 5.0 မတိုင်မီ၊ macro မှတဆင့်သတ်မှတ်ထားသောစကားဝှက်ကိုဖတ်နိုင်သည်။ ထို့ကြောင့် သင်သည် Zabbix စီမံခန့်ခွဲသူ စကားဝှက်ကို အသုံးပြုပါက၊ စီမံခန့်ခွဲသူအကောင့်ကို ခိုးယူရန် လွယ်ကူသည်။

ပြင်ပကုမ္ပဏီ scripts များမှတဆင့် API နှင့်အလုပ်လုပ်ပြီးဘေးတွင်အထောက်အထားများကိုသိမ်းဆည်းသောအခါ၎င်းသည်အထူးသဖြင့်မှန်လိမ့်မည်။

ဗားရှင်း 5.0 ဖြစ်သောကြောင့် မက်ခရိုတွင်သိမ်းဆည်းထားသော စကားဝှက်ကို ဖျောက်ရန် ရွေးချယ်ခွင့်ရှိပါသည်။

Zabbix - မက်ခရိုနယ်နိမိတ်များကို ချဲ့ထွင်ခြင်း။

API မှတစ်ဆင့် ဒေတာမွမ်းမံခြင်းအတွက် သီးခြားအကောင့်တစ်ခုကို ဖန်တီးသည့်အခါ၊ သင်လိုအပ်သောဒေတာကို ဝဘ်အင်တာဖေ့စ်မှတစ်ဆင့် ရရှိနိုင်သည်ရှိမရှိနှင့် ၎င်းကို အပ်ဒိတ်လုပ်ရန် ဖြစ်နိုင်ချေရှိမရှိ စစ်ဆေးပါ။ ကျွန်တော် မစစ်ဆေးခဲ့ဘဲ API တွင် ကျွန်ုပ်လိုအပ်သော macro ကို အဘယ်ကြောင့် မမြင်နိုင်သည်ကို အချိန်အတော်ကြာ နားမလည်နိုင်ခဲ့ပါ။

Zabbix - မက်ခရိုနယ်နိမိတ်များကို ချဲ့ထွင်ခြင်း။

API တွင် ခွင့်ပြုချက်ရရှိပြီးနောက်၊ မက်ခရိုစာရင်းတစ်ခုရယူရန် ဆက်လက်လုပ်ဆောင်ပါသည်။

ခြေလှမ်း 3

API သည် သင့်အား အမည်ဖြင့် host macro တစ်ခုကို အပ်ဒိတ်လုပ်ရန် ခွင့်မပြုပါ၊ သင်သည် ပထမဆုံး macro ID ကို ရယူရပါမည်။ ထို့အပြင်၊ သီးခြား host တစ်ခုအတွက် macro စာရင်းတစ်ခုရရန်၊ သင်သည် ဤ host ၏ ID ကို သိရန်လိုအပ်ပြီး ၎င်းသည် အပိုတောင်းဆိုချက်တစ်ခုဖြစ်သည်။ မူရင်း မက်ခရိုကို သုံးပါ။ {HOST ID} တောင်းဆိုမှု၌ ခွင့်မပြုပါ။ ဤကဲ့သို့သောကန့်သတ်ချက်ကိုကျော်ဖြတ်ရန်ဆုံးဖြတ်ခဲ့သည်

Zabbix - မက်ခရိုနယ်နိမိတ်များကို ချဲ့ထွင်ခြင်း။

ကျွန်ုပ်သည် ဤအိမ်ရှင်၏ ID ဖြင့် ဒေသတွင်း မက်ခရိုတစ်ခုကို ဖန်တီးခဲ့သည်။ လက်ခံသူ ID ကိုရှာဖွေခြင်းသည် ဝဘ်အင်တာဖေ့စ်မှ အလွန်လွယ်ကူသည်။

ပေးထားသည့် host တစ်ခုရှိ မက်ခရိုအားလုံး၏စာရင်းတစ်ခုပါရှိသော တုံ့ပြန်မှုကို ပုံစံတစ်ခုဖြင့် စစ်ထုတ်နိုင်သည်-

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

Zabbix - မက်ခရိုနယ်နိမိတ်များကို ချဲ့ထွင်ခြင်း။

ထို့ကြောင့်၊ ကျွန်ုပ်တို့လိုအပ်သော macro ၏ ID ကိုရရှိသည်။ MIKROTIK_VERSION ကျွန်ုပ်တို့ရှာဖွေနေသော macro ၏အမည်ဖြစ်သည်။ ငါ့ကိစ္စတွင်၊ မက်ခရိုကိုရှာဖွေသည်။ MIKROTIK_VERSIONအဲဒါကို အိမ်ရှင်က တာဝန်ပေးတယ်။

တောင်းဆိုချက် ကိုယ်တိုင်က ဤကဲ့သို့ ဖြစ်သည်-

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 {တဖက်} ဒုတိယအဆင့်တွင်ရရှိသော API interface နှင့်အလုပ်လုပ်ရန်လိုအပ်သည့်နေရာတွင်အဆက်မပြတ်အသုံးပြုလိမ့်မည်။

နောက်ဆုံး 4 အဆင့် - မက်ခရိုကို အပ်ဒိတ်လုပ်ခြင်း။

ယခုအခါတွင် အပ်ဒိတ်လုပ်ရန် လိုအပ်သည့် မက်ခရို ID၊ ခွင့်ပြုချက် ကွက်ကီး သို့မဟုတ် router ၏ ဖိုင်းဝဲဗားရှင်းကို ကျွန်ုပ်တို့ သိပါသည်။ မက်ခရိုကိုယ်တိုင် အပ်ဒိတ်လုပ်နိုင်ပါသည်။

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} ပထမအဆင့်တွင်ရရှိသောတန်ဖိုးဖြစ်သည်။ ကျွန်ုပ်၏ဥပမာတွင်၊ လက်ရှိ mikrotik firmware ဗားရှင်း
{hostmacroid} - တတိယအဆင့်တွင် တန်ဖိုးကို ရရှိခဲ့သည် - ကျွန်ုပ်တို့ အပ်ဒိတ်လုပ်နေသော မက်ခရို၏ အိုင်ဒီ။

တွေ့ရှိချက်များ

စံလုပ်ဆောင်နိုင်စွမ်းဖြင့် ပြဿနာကို ဖြေရှင်းရန် ချဉ်းကပ်ပုံမှာ ပို၍ရှုပ်ထွေးပြီး ပိုရှည်သည်။ အထူးသဖြင့် သင်သည် ပရိုဂရမ်းမင်းကို သိပြီး script တွင် လိုအပ်သော logic ကို လျင်မြန်စွာ ထည့်နိုင်လျှင်။

ဤချဉ်းကပ်မှု၏ သိသာထင်ရှားသောအားသာချက်မှာ မတူညီသောဆာဗာများကြားရှိ ဖြေရှင်းချက်၏ "သယ်ဆောင်ရလွယ်ကူခြင်း" ဖြစ်သည်။

ကျွန်ုပ်အတွက်မူ၊ HTTP အေးဂျင့်သည် အခြားအရာတစ်ခု၏ဒေတာကို ဝင်ရောက်ပြီး တောင်းဆိုချက်ကိုယ်ထည် သို့မဟုတ် ခေါင်းစီးများတွင် အစားထိုး၍မရသည်မှာ ထူးဆန်းသည်မှာ ထူးဆန်းပါသည်။ ZBXNEXT-5993].

ပြီးသွားသော ပုံစံခွက်သည် လုပ်နိုင်သည်။ GitHub တွင်ဒေါင်းလုဒ်လုပ်ပါ။.

source: www.habr.com

မှတ်ချက် Add