زیبکس - د میکرو حدود پراخول

کله چې د پیرودونکي لپاره حل کول ، 2 دندې رامینځته شوې چې ما غوښتل په ښکلي او منظم زیبکس فعالیت سره حل کړم.

دنده 1. په مایکروټیک روټرونو کې د اوسني فرم ویئر نسخه تعقیب کول.

دنده په اسانۍ سره حل کیږي - د HTTP ټیمپلیټ ته د اجنټ اضافه کولو سره. اجنټ د مایکروټیک ویب پا onې څخه اوسنی نسخه ترلاسه کوي ، او محرک اوسنۍ نسخه له اوسني نسخې سره پرتله کوي او د توپیر په صورت کې خبرداری ورکوي.

کله چې تاسو 10 روټرونه لرئ، دا ډول الګوریتم مهم ندی، مګر د 3000 روټرونو سره څه وکړي؟ سرور ته 3000 غوښتنې واستوئ؟ البته، دا ډول سکیم به کار وکړي، مګر د 3000 غوښتنو خورا نظر زما سره مناسب نه و، ما غوښتل یو بل حل پیدا کړم. سربیره پردې ، په داسې الګوریتم کې لاهم نیمګړتیا شتون لري: بل اړخ کولی شي د DoS برید لپاره د یو IP څخه ورته ډیری غوښتنې حساب کړي ، دوی کولی شي په ساده ډول دا منع کړي.

دنده 2. په مختلف HTTP اجنټانو کې د واک ورکولو ناستې کارول.

کله چې یو اجنټ د HTTP له لارې د "تړلو" پاڼو څخه معلومات ترلاسه کولو ته اړتیا لري، د اختیار کولو کوکي ته اړتیا ده. د دې کولو لپاره، معمولا د "ننوتل / پټنوم" جوړه سره د معیاري جواز فورمه شتون لري او په کوکي کې د سیشن ID ترتیبوي.

مګر یوه ستونزه شتون لري، دا ناشونې ده چې د HTTP اجنټ توکي څخه د بل توکي ډیټا ته لاسرسی ومومئ ترڅو دا ارزښت په سرلیک کې ځای په ځای کړي.

دلته یو "ویب سکریپټ" هم شتون لري، دا یو بل محدودیت لري، دا تاسو ته اجازه نه ورکوي چې د تحلیل او نور خوندي کولو لپاره مواد ترلاسه کړئ. تاسو کولی شئ یوازې په پاڼو کې د اړین متغیرونو شتون وګورئ یا د ویب سکریپټ مرحلو تر مینځ مخکې ترلاسه شوي متغیرونه تیر کړئ.

د دې دندو په اړه د لږ فکر کولو وروسته، ما پریکړه وکړه چې ماکرو وکاروم چې د څارنې سیسټم په هره برخه کې په بشپړه توګه لیدل کیږي: په ټیمپلیټونو، کوربه، محرکاتو یا توکو کې. او تاسو کولی شئ د ویب انٹرفیس API له لارې میکرو تازه کړئ.

Zabbix ښه او مفصل API اسناد لري. د API له لارې د معلوماتو تبادلې لپاره، د Json ډیټا بڼه کارول کیږي. جزئیات په کې موندل کیدی شي رسمي اسناد.

د هغه معلوماتو ترلاسه کولو لپاره چې موږ ورته اړتیا لرو او په میکرو کې ثبتولو لپاره د عملونو ترتیب په لاندې ډیاګرام کې ښودل شوی.

زیبکس - د میکرو حدود پراخول

1 ګام

لومړی ګام کیدای شي د یو واحد عمل یا څو کړنو څخه جوړ وي. ټول اصلي منطق په لومړیو مرحلو کې ایښودل شوی، او وروستي 3 مرحلې اصلي دي.

زما په مثال کې، لومړی ګام د لومړي کار لپاره په PBX کې د اختیار کوکیز ترلاسه کول وو. د دوهم کار لپاره ، ما د مایکروټیک فرم ویئر د اوسني نسخې شمیره ترلاسه کړه.

د مایکروټیک فرم ویئر د اوسني نسخو URL

دا پتې پخپله د مایکروټیک تجهیزاتو لخوا لاسرسی کیږي کله چې د فرم ویئر وروستۍ نسخه ترلاسه شي.

لومړی ګام د هرې قضیې لپاره په بشپړه توګه انفرادي دی او د کار منطق ممکن توپیر ولري. دا ټول ستاسو په دنده پورې اړه لري.

کله چې د ویب سکریپټینګ سره کار کوئ، تعقیب کړئ چې د غبرګون کوم میتود ته اړتیا لرئ. عنوانونه د HTTP ځواب یا ځان بدن د سرلیک پرته ځواب؟
که د اجازې کوکیز ته اړتیا وي، نو د ځواب طریقه ترتیب کړئ عنوانونه لکه څنګه چې د ستوري په قضیه کې.

که تاسو ډیټا ته اړتیا لرئ، لکه څنګه چې د مایکروټیک سرور ځواب په صورت کې، واچوئ بدن د سرلیک پرته ځواب.

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 پروتوکول نسخه ده چې کارول کیږي؛
زیبکس د JSON-RPC نسخه 2.0 پلي کوي؛

  • میتود - هغه طریقه چې ویل کیږي؛
  • پارامونه - هغه پیرامیټونه چې د میتود لخوا تیریږي؛
  • id یو خپلسري غوښتنه پیژندونکی دی؛
  • auth - د کارونکي تصدیق کیلي؛ ځکه چې موږ دا تر اوسه نه لرو، راځئ چې دا په null کې تنظیم کړو.

د API سره کار کولو لپاره، ما د محدودو حقونو سره جلا حساب جوړ کړ. لومړی، تاسو اړتیا نلرئ چیرې چې تاسو ورته اړتیا نلرئ لاسرسی ورکړئ. او دوهم ، د 5.0 نسخه دمخه ، د میکرو له لارې ټاکل شوی پاسورډ لوستل کیدی شي. په دې اساس، که تاسو د زیبکس مدیر پاسورډ وکاروئ، د مدیر حساب غلا کول اسانه دي.

دا به په ځانګړي توګه ریښتیا وي کله چې د دریمې ډلې سکریپټونو له لارې د API سره کار کول او په اړخ کې اسناد ذخیره کول.

د 5.0 نسخه راهیسې په میکرو کې خوندي شوي پټنوم پټولو لپاره اختیار شتون لري.

زیبکس - د میکرو حدود پراخول

کله چې د API له لارې د معلوماتو تازه کولو لپاره جلا حساب رامینځته کړئ ، ډاډ ترلاسه کړئ چې ایا هغه معلومات چې تاسو ورته اړتیا لرئ د ویب انٹرفیس له لارې شتون لري او ایا دا ممکنه ده چې دا تازه کړئ. ما چک نه کړ، او بیا د اوږدې مودې لپاره زه نشم پوهیدلی چې ولې هغه میکرو ته اړتیا لرم چې په API کې نه لیدل کیږي.

زیبکس - د میکرو حدود پراخول

وروسته له دې چې موږ په API کې اجازه ترلاسه کړه، موږ د میکرو لیست ترلاسه کولو ته دوام ورکوو.

3 ګام

API تاسو ته اجازه نه ورکوي چې د نوم په واسطه کوربه میکرو تازه کړئ، تاسو باید لومړی د میکرو ID ترلاسه کړئ. سربیره پردې ، د ځانګړي کوربه لپاره د میکرو لیست ترلاسه کولو لپاره ، تاسو اړتیا لرئ د دې کوربه ID پیژنئ ، او دا اضافي غوښتنه ده. ډیفالټ میکرو وکاروئ {د کوربه ID} په غوښتنلیک کې اجازه نشته. ما پریکړه وکړه چې د دې په څیر محدودیت پریږدم:

زیبکس - د میکرو حدود پراخول

ما د دې کوربه ID سره محلي میکرو جوړ کړ. د کوربه ID موندل د ویب انٹرفیس څخه خورا اسانه دي.

په ورکړل شوي کوربه کې د ټولو میکرو لیست سره ځواب د نمونې لخوا فلټر کیدی شي:

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

زیبکس - د میکرو حدود پراخول

په دې توګه، موږ د هغه میکرو ID ترلاسه کوو چې موږ ورته اړتیا لرو، چیرته MIKROTIK_VERSION د هغه میکرو نوم دی چې موږ یې په لټه کې یو. زما په قضیه کې، میکرو لټون کیږي 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
}

متغیر {sid} په دوهم ګام کې ترلاسه شوی او په دوامداره توګه به وکارول شي ، چیرې چې تاسو اړتیا لرئ د API انٹرفیس سره کار وکړئ.

وروستی 4 ګام - د میکرو تازه کول

اوس موږ د میکرو ID پیژنو چې تازه کولو ته اړتیا لري ، د اختیار کوکي یا د روټر فرم ویئر نسخه. تاسو کولی شئ پخپله میکرو تازه کړئ.

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} هغه ارزښت دی چې په لومړي ګام کې ترلاسه کیږي. زما په مثال کې، د اوسني مایکروټیک فرم ویئر نسخه
{hostmacroid} - ارزښت په دریم ګام کې ترلاسه شوی - د میکرو ID چې موږ یې تازه کوو.

موندنو

د معیاري فعالیت سره د ستونزې حل کولو لاره خورا پیچلې او اوږده ده. په ځانګړي توګه که تاسو برنامه پیژنئ او ژر تر ژره په سکریپټ کې اړین منطق اضافه کولی شئ.

د دې تګلارې ښکاره ګټه د مختلف سرورونو تر مینځ د حل "پورته کولو وړتیا" ده.

زما لپاره په شخصي توګه، دا عجیب خبره ده چې د HTTP اجنټ نشي کولی د بل توکي ډیټا ته لاسرسی ومومي او د غوښتنې په بدن یا سرلیکونو کې یې ځای په ځای کړي [ ZBXNEXT-5993].

بشپړ شوی ټیمپلیټ کولی شي په GitHub کې ډاونلوډ کړئ.

سرچینه: www.habr.com

Add a comment