Zabbix - සාර්ව මායිම් පුළුල් කිරීම

සේවාදායකයෙකු සඳහා විසඳුමක් සෑදීමේදී, මට අලංකාර ලෙස සහ නිතිපතා Zabbix ක්‍රියාකාරීත්වය සමඟ විසඳීමට අවශ්‍ය කාර්යයන් 2 ක් මතු විය.

කාර්යය 1 Mikrotik රවුටරවල වත්මන් ස්ථිරාංග අනුවාදය නිරීක්ෂණය කිරීම.

කාර්යය පහසුවෙන් විසඳනු ලැබේ - HTTP ආකෘතියට නියෝජිතයෙකු එකතු කිරීමෙන්. නියෝජිතයාට Mikrotik වෙබ් අඩවියෙන් වත්මන් අනුවාදය ලැබෙන අතර, ප්‍රේරකය වත්මන් අනුවාදය වත්මන් අනුවාදය සමඟ සංසන්දනය කර විෂමතාවයක් ඇති විට අනතුරු ඇඟවීමක් නිකුත් කරයි.

ඔබට රවුටර 10 ක් ඇති විට, එවැනි ඇල්ගොරිතමයක් විවේචනාත්මක නොවේ, නමුත් රවුටර 3000 ක් සමඟ කුමක් කළ යුතුද? සේවාදායකයට ඉල්ලීම් 3000ක් යවන්නද? ඇත්ත වශයෙන්ම, එවැනි යෝජනා ක්රමයක් ක්රියාත්මක වනු ඇත, නමුත් 3000 ඉල්ලීම් පිළිබඳ අදහස මට නොගැලපේ, මට වෙනත් විසඳුමක් සොයා ගැනීමට අවශ්ය විය. ඊට අමතරව, එවැනි ඇල්ගොරිතමයක තවමත් අඩුපාඩුවක් විය: අනෙක් පැත්තට DoS ප්‍රහාරයක් සඳහා එක් IP එකකින් එවැනි ඉල්ලීම් ගණනාවක් ගණන් කළ හැකිය, ඔවුන්ට එය සරලව තහනම් කළ හැකිය.

කාර්යය 2 විවිධ HTTP නියෝජිතයන් තුළ අවසර සැසියක් භාවිතා කිරීම.

නියෝජිතයෙකුට HTTP හරහා "වසා දැමූ" පිටු වලින් තොරතුරු ලබා ගැනීමට අවශ්‍ය වූ විට, අවසර කුකියක් අවශ්‍ය වේ. මෙය සිදු කිරීම සඳහා, සාමාන්යයෙන් "පිවිසුම් / මුරපදය" යුගලයක් සහිත සම්මත අවසර පත්රයක් සහ කුකියේ සැසි හැඳුනුම්පත සැකසීම.

නමුත් ගැටලුවක් ඇත, මෙම අගය Header හි ආදේශ කිරීම සඳහා එක් HTTP නියෝජිත අයිතමයකින් වෙනත් අයිතමයක දත්ත වෙත ප්‍රවේශ විය නොහැක.

"වෙබ් ස්ක්‍රිප්ට්" ද ඇත, එයට තවත් සීමාවක් ඇත, එය විශ්ලේෂණය සහ තවදුරටත් සුරැකීම සඳහා අන්තර්ගතය ලබා ගැනීමට ඔබට ඉඩ නොදේ. ඔබට පිටු මත අවශ්‍ය විචල්‍ය තිබේ දැයි පරීක්ෂා කළ හැක්කේ හෝ කලින් ලැබුණු විචල්‍යයන් වෙබ් ස්ක්‍රිප්ට් පියවර අතරට යැවීම පමණි.

මෙම කාර්යයන් ගැන ටිකක් සිතා බැලීමෙන් පසු, මම අධීක්ෂණ පද්ධතියේ ඕනෑම කොටසක පරිපූර්ණව පෙනෙන මැක්රෝ භාවිතා කිරීමට තීරණය කළෙමි: සැකිලි, ධාරක, ප්‍රේරක හෝ අයිතමවල. තවද ඔබට වෙබ් අතුරුමුහුණත් API හරහා මැක්‍රෝ යාවත්කාලීන කළ හැක.

Zabbix සතුව හොඳ සහ සවිස්තරාත්මක API ලේඛන ඇත. api හරහා දත්ත හුවමාරුව සඳහා, Json දත්ත ආකෘතිය භාවිතා වේ. විස්තර සොයා ගත හැක නිල ලියකියවිලි.

අපට අවශ්‍ය දත්ත ලබා ගැනීම සහ ඒවා මැක්‍රෝ එකක සටහන් කිරීම සඳහා වන ක්‍රියා අනුපිළිවෙල පහත රූප සටහනේ දැක්වේ.

Zabbix - සාර්ව මායිම් පුළුල් කිරීම

පියවරක් 1

පළමු පියවර තනි ක්‍රියාවකින් හෝ ක්‍රියා කිහිපයකින් සමන්විත විය හැක. සියලුම ප්‍රධාන තර්ක පළමු පියවර තුළ තබා ඇති අතර අවසාන පියවර 3 ප්‍රධාන ඒවා වේ.

මගේ උදාහරණයේ, පළමු පියවර වූයේ පළමු කාර්යය සඳහා PBX මත අවසර කුකීස් ලබා ගැනීමයි. දෙවන කාර්යය සඳහා, මම Mikrotik ස්ථිරාංගයේ වත්මන් අනුවාදයේ අංකය ලබා ගත්තා.

Mikrotik ස්ථිරාංගයේ වත්මන් අනුවාද වල URL

පවතින නවතම ස්ථිරාංග අනුවාදය ලැබුණු විට මෙම ලිපින Mikrotik උපකරණ මගින්ම ප්‍රවේශ වේ.

පළමු පියවර එක් එක් සිද්ධිය සඳහා සම්පූර්ණයෙන්ම තනි පුද්ගලයෙකු වන අතර එහි කාර්යයේ තර්කනය වෙනස් විය හැකිය. ඒ සියල්ල ඔබගේ කාර්යය මත රඳා පවතී.

වෙබ් ස්ක්‍රිප්ටින් සමඟ වැඩ කරන විට, ඔබට අවශ්‍ය ප්‍රතිචාර ක්‍රමය නිරීක්ෂණය කරන්න. මාතෘකා HTTP ප්‍රතිචාරය හෝ ස්වයං ශරීරය ශීර්ෂ නොමැතිව ප්‍රතිචාරය?
අවසර කුකීස් අවශ්‍ය නම්, ප්‍රතිචාර ක්‍රමය සකසන්න මාතෘකා Asterisk හි දී මෙන්.

ඔබට දත්ත අවශ්‍ය නම්, මයික්‍රොටික් සේවාදායකයේ ප්‍රතිචාරයේ දී මෙන්, දමන්න ශරීරය ශීර්ෂයකින් තොරව ප්රතිචාර.

පියවරක් 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 ක්‍රියාත්මක කරයි;

  • ක්‍රමය - කියන ක්‍රමය;
  • පරාමිති - ක්රමය මගින් සම්මත කරන ලද පරාමිතීන්;
  • id යනු අත්තනෝමතික ඉල්ලීම් හඳුනාගැනීමකි;
  • auth - පරිශීලක සත්‍යාපන යතුර; අප සතුව එය තවමත් නොමැති බැවින්, අපි එය ශුන්‍ය ලෙස සකසමු.

API සමඟ වැඩ කිරීමට, මම සීමිත අයිතිවාසිකම් සහිත වෙනම ගිණුමක් නිර්මාණය කළෙමි. පළමුව, ඔබට අවශ්‍ය නොවන තැනට ප්‍රවේශය ලබා දීමට ඔබට අවශ්‍ය නැත. දෙවනුව, 5.0 අනුවාදයට පෙර, සාර්ව හරහා සකසා ඇති මුරපදය කියවිය හැකිය. ඒ අනුව, ඔබ Zabbix පරිපාලක මුරපදය භාවිතා කරන්නේ නම්, පරිපාලක ගිණුම සොරකම් කිරීමට පහසුය.

තෙවන පාර්ශවීය ස්ක්‍රිප්ට් හරහා API සමඟ වැඩ කිරීමේදී සහ අක්තපත්‍ර පැත්තේ ගබඩා කිරීමේදී මෙය විශේෂයෙන්ම සත්‍ය වනු ඇත.

අනුවාදය 5.0 සිට macro තුළ සුරකින ලද මුරපදය සැඟවීමට විකල්පයක් ඇත.

Zabbix - සාර්ව මායිම් පුළුල් කිරීම

API හරහා දත්ත යාවත්කාලීන කිරීම සඳහා වෙනම ගිණුමක් නිර්මාණය කිරීමේදී, ඔබට අවශ්‍ය දත්ත වෙබ් අතුරු මුහුණත හරහා තිබේද යන්න සහ එය යාවත්කාලීන කළ හැකිද යන්න පරීක්ෂා කිරීමට වග බලා ගන්න. මම පරීක්‍ෂා කළේ නැත, පසුව මට අවශ්‍ය මැක්‍රෝ එක API හි නොපෙනෙන්නේ මන්දැයි මට බොහෝ කාලයක් තේරුම් ගත නොහැකි විය.

Zabbix - සාර්ව මායිම් පුළුල් කිරීම

අපට API හි අවසරය ලැබුණු පසු, අපි මැක්‍රෝ ලැයිස්තුවක් ලබා ගැනීමට ඉදිරියට යමු.

පියවරක් 3

API ඔබට ධාරක මැක්‍රෝ එකක් නමින් යාවත්කාලීන කිරීමට ඉඩ නොදේ, ඔබ ප්‍රථමයෙන් සාර්ව හැඳුනුම්පත ලබා ගත යුතුය. එපමනක් නොව, විශේෂිත සත්කාරක සමාගමක් සඳහා මැක්රෝ ලැයිස්තුවක් ලබා ගැනීම සඳහා, ඔබ මෙම සත්කාරකයේ හැඳුනුම්පත දැනගත යුතු අතර, මෙය අතිරේක ඉල්ලීමකි. පෙරනිමි මැක්රෝ භාවිතා කරන්න {HOST ID} ඉල්ලීම තුළ අවසර නැත. මම මේ වගේ සීමාව මඟ හැරීමට තීරණය කළා:

Zabbix - සාර්ව මායිම් පුළුල් කිරීම

මම මෙම සත්කාරක හැඳුනුම්පත සමඟ දේශීය මැක්‍රෝ එකක් සෑදුවෙමි. වෙබ් අතුරු මුහුණතෙන් සත්කාරක හැඳුනුම්පත සොයා ගැනීම ඉතා පහසුය.

දී ඇති ධාරකයක ඇති සියලුම මැක්‍රෝ ලැයිස්තුවක් සහිත ප්‍රතිචාරයක් රටාවකින් පෙරීමට හැකිය:

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

Zabbix - සාර්ව මායිම් පුළුල් කිරීම

මේ අනුව, අපට අවශ්‍ය මැක්‍රෝ හි හැඳුනුම්පත අපට ලැබේ 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 පියවර - සාර්ව යාවත්කාලීන කිරීම

දැන් අපි යාවත්කාලීන කළ යුතු මැක්‍රෝ හැඳුනුම්පත, අවසර කුකී හෝ රවුටරයේ ස්ථිරාංග අනුවාදය දනිමු. ඔබට මැක්‍රෝව යාවත්කාලීන කළ හැකිය.

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

අදහස් එක් කරන්න