Zabbix - васеъ кардани сарҳадҳои макро

Ҳангоми қабули қарор барои муштарӣ 2 вазифа ба миён омад, ки ман мехостам онро зебо ва бо функсияи муқаррарии Zabbix ҳал кунам.

Вазифаи 1. Пайгирии версияи ҷории нармафзор дар роутерҳои Mikrotik.

Вазифа ба осонӣ ҳал карда мешавад - бо илова кардани агент ба қолаби HTTP. Агент версияи ҷорӣро аз вебсайти Mikrotik қабул мекунад ва триггер версияи ҷорӣро бо версияи ҷорӣ муқоиса мекунад ва дар ҳолати номувофиқӣ огоҳӣ медиҳад.

Вақте ки шумо 10 роутер доред, чунин алгоритм муҳим нест, аммо бо 3000 роутер чӣ бояд кард? Ба сервер 3000 дархост фиристед? Албатта, чунин схема кор хоҳад кард, аммо худи идеяи 3000 дархост ба ман мувофиқ набуд, ман мехостам ҳалли дигаре пайдо кунам. Илова бар ин, дар чунин алгоритм ҳанӯз камбудие вуҷуд дошт: тарафи дигар метавонад ин қадар дархостҳоро аз як IP барои ҳамлаи DoS ҳисоб кунад, онҳо метавонанд онро танҳо манъ кунанд.

Вазифаи 2. Истифодаи сессияи авторизатсия дар агентҳои гуногуни HTTP.

Вақте ки агент лозим аст, ки маълумотро аз саҳифаҳои "пӯшида" тавассути HTTP қабул кунад, кукии иҷозатдиҳӣ лозим аст. Барои ин, одатан як варақаи иҷозатдиҳии стандартӣ бо ҷуфти "логин / парол" мавҷуд аст ва дар куки ID-и сессияро муқаррар мекунад.

Аммо мушкилот вуҷуд дорад, имконнопазир аст, ки ба маълумоти ашёи дигар аз як ҷузъи агенти HTTP барои иваз кардани ин арзиш дар Сарлавҳа дастрас шавад.

Инчунин "Веб скрипт" мавҷуд аст, он маҳдудияти дигаре дорад, он ба шумо имкон намедиҳад, ки мундариҷаро барои таҳлил ва захираи минбаъда гиред. Шумо метавонед танҳо мавҷудияти тағирёбандаҳои заруриро дар саҳифаҳо тафтиш кунед ё тағирёбандаҳои қаблан гирифташударо байни қадамҳои скрипти веб гузаред.

Пас аз каме дар бораи ин вазифаҳо фикр кардам, ман қарор додам, ки макросҳоеро истифода барам, ки дар ҳама қисмҳои системаи мониторинг комилан намоёнанд: дар қолибҳо, ҳостҳо, триггерҳо ё ашё. Ва шумо метавонед макросҳоро тавассути API интерфейси веб навсозӣ кунед.

Zabbix дорои ҳуҷҷатҳои хуб ва муфассали API мебошад. Барои мубодилаи маълумот тавассути api, формати додаҳои Json истифода мешавад. Тафсилотро метавон дар ҳуҷҷатҳои расмӣ.

Пайдарҳамии амалҳо барои ба даст овардани маълумоти ба мо лозим ва сабти онҳо дар макрос дар диаграммаи зер нишон дода шудааст.

Zabbix - васеъ кардани сарҳадҳои макро

қадам 1

Қадами аввал метавонад аз як амал ё якчанд амал иборат бошад. Ҳама мантиқи асосӣ дар қадамҳои аввал гузошта мешаванд ва 3 қадами охирин қадамҳои асосӣ мебошанд.

Дар мисоли ман, қадами аввал ин гирифтани кукиҳои иҷозатдиҳӣ дар PBX барои вазифаи аввал буд. Барои вазифаи дуюм, ман рақами версияи ҷории нармафзори Микротикро гирифтам.

URL-и версияҳои ҷории нармафзори Mikrotik

Ба ин суроғаҳо худи таҷҳизоти Mikrotik ҳангоми гирифтани версияи охирини нармафзори дастрас дастрас мешавад.

Қадами аввал барои ҳар як ҳолат комилан фардӣ аст ва мантиқи кори он метавонад гуногун бошад. Ҳамааш аз вазифаи шумо вобаста аст.

Ҳангоми кор бо скрипти веб, пайгирӣ кунед, ки кадом усули посух ба шумо лозим аст. Унвонҳо Ҷавоби 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-ро амалӣ мекунад;

  • усул - усуле, ки номида мешавад;
  • params - параметрҳое, ки бо усул гузаронида мешаванд;
  • id идентификатори дархости худсарона аст;
  • auth - калиди тасдиқи корбар; азбаски мо онро ҳоло надорем, биёед онро ба нул муқаррар кунем.

Барои кор бо API, ман ҳисоби алоҳида бо ҳуқуқҳои маҳдуд сохтам. Аввалан, ба шумо лозим нест, ки ба он ҷое, ки ба шумо лозим нест, дастрасӣ диҳед. Ва дуюм, пеш аз версияи 5.0, паролеро, ки тавассути макрос гузошта шудааст, хондан мумкин аст. Мувофиқи он, агар шумо пароли администратори Zabbix-ро истифода баред, ҳисоби администраторро дуздидан осон аст.

Ин махсусан ҳангоми кор бо API тавассути скриптҳои тарафи сеюм ва нигоҳ доштани эътимоднома дар паҳлӯ дуруст хоҳад буд.

Азбаски версияи 5.0 имкони пинҳон кардани пароли дар макро захирашуда мавҷуд аст.

Zabbix - васеъ кардани сарҳадҳои макро

Ҳангоми эҷод кардани ҳисоби алоҳида барои навсозии додаҳо тавассути API, боварӣ ҳосил кунед, ки оё маълумоте, ки ба шумо лозим аст, тавассути интерфейси веб дастрас аст ва оё имкони навсозии он вуҷуд дорад. Ман тафтиш накардам ва баъдан муддати тӯлонӣ ман фаҳмида наметавонистам, ки чаро макроси ба ман лозим дар API намоён нест.

Zabbix - васеъ кардани сарҳадҳои макро

Пас аз гирифтани иҷозат дар API, мо ба гирифтани рӯйхати макросҳо идома медиҳем.

қадам 3

API ба шумо имкон намедиҳад, ки макроси мизбонро бо ном навсозӣ кунед, шумо аввал бояд ID макросро гиред. Ғайр аз он, барои гирифтани рӯйхати макросҳо барои мизбони мушаххас, шумо бояд ID-и ин ҳостро донед ва ин дархости иловагӣ аст. Макроси пешфарзро истифода баред {HOST ID} дар дархост иҷозат дода намешавад. Ман қарор додам, ки ин маҳдудиятро паси сар кунам:

Zabbix - васеъ кардани сарҳадҳои макро

Ман макроси маҳаллӣ бо ID-и ин мизбон сохтам. Дарёфт кардани ID-и мизбон аз интерфейси веб хеле осон аст.

Ҷавобро бо рӯйхати ҳамаи макросҳои ҳости додашуда метавон бо намуна филтр кард:

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

Zabbix - васеъ кардани сарҳадҳои макро

Ҳамин тариқ, мо 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
}

Тағйирёбанда {сид} дар қадами дуюм ба даст оварда мешавад ва ҳамеша истифода мешавад, ки дар он шумо бояд бо интерфейси 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 зеркашӣ кунед.

Манбаъ: will.com

Илова Эзоҳ