Чӣ гуна мо мониторингро дар Prometheus, Clickhouse ва ELK сохтаем

Номи ман Антон Бадерин аст. Ман дар Маркази технологияҳои баланд кор мекунам ва ба идоракунии система машғулам. Як моҳ пеш конфронси корпоративии мо анҷом ёфт, ки дар он мо таҷрибаи андӯхтаамонро бо ҷомеаи IT-и шаҳри худ мубодила кардем. Ман дар бораи мониторинги барномаҳои веб сӯҳбат кардам. Мавод барои синфҳои хурд ё миёна пешбинӣ шуда буд, ки ин равандро аз сифр бунёд накардаанд.

Чӣ гуна мо мониторингро дар Prometheus, Clickhouse ва ELK сохтаем

Санги асосие, ки дар ҳама гуна системаи мониторинг қарор дорад, ҳалли мушкилоти тиҷорат аст. Мониторинг ба хотири назорат ба касе манфиатдор нест. Бизнес чӣ мехоҳад? То ки ҳама чиз зуд ва бе хато кор кунад. Соҳибкорон мехоҳанд фаъол бошанд, то мо худамон мушкилотро дар хидмат муайян кунем ва онҳоро ҳарчи зудтар ислоҳ кунем. Дар асл, инҳо мушкилоте ҳастанд, ки ман соли гузашта дар лоиҳаи яке аз муштариёни мо ҳал кардам.

Дар бораи лоиҳа

Лоиҳа яке аз бузургтарин барномаҳои вафодорӣ дар кишвар мебошад. Мо ба занҷирҳои чакана дар зиёд кардани басомади фурӯш тавассути воситаҳои гуногуни маркетинг, аз қабили кортҳои бонусӣ кӯмак мерасонем. Дар маҷмӯъ, лоиҳа 14 барномаро дар бар мегирад, ки дар даҳ сервер кор мекунанд.

Дар ҷараёни мусоҳиба, ман борҳо мушоҳида кардам, ки маъмурон на ҳамеша ба мониторинги барномаҳои веб дуруст муносибат мекунанд: бисёриҳо то ҳол ба ченакҳои системаи амалиётӣ тамаркуз мекунанд ва баъзан хидматҳоро назорат мекунанд.

Дар ҳолати ман, системаи мониторинги муштарӣ қаблан ба Icinga асос ёфтааст. Вай проблемахои дар боло зикршударо ба хеч вачх хал накард. Аксар вақт худи муштарӣ ба мо дар бораи мушкилот хабар медод ва аксар вақт мо барои фаҳмидани сабаб маълумоти кофӣ надорем.

Илова бар ин, бефоида будани инкишофи минбаъдаи он равшан фахмида мешуд. Фикр мекунам, онҳое, ки бо Исинга ошно ҳастанд, маро мефаҳманд. Ҳамин тавр, мо тасмим гирифтем, ки системаи мониторинги барномаҳои вебро барои лоиҳа комилан аз нав тарҳрезӣ кунем.

Prometheus

Мо Прометейро дар асоси се нишондиҳандаи асосӣ интихоб кардем:

  1. Шумораи зиёди ченакҳои дастрас. Дар мо 60 хазор нафари онхо. Албатта, бояд гуфт, ки мо аксарияти куллии онҳоро (шояд тақрибан 95%) истифода намебарем. Аз тарафи дигар, ҳамаи онҳо нисбатан арзон мебошанд. Барои мо, ин дигар дар муқоиса бо Icinga, ки қаблан истифода мешуд, аст. Дар он, илова кардани ченакҳо як дарди махсус буд: мавҷуда гарон буданд (танҳо ба коди сарчашмаи ҳама плагин нигаред). Ҳама гуна плагин скрипт дар Bash ё Python буд, ки оғози он аз ҷиҳати захираҳои истеъмолшуда гарон аст.
  2. Ин система миқдори нисбатан ками захираҳоро истеъмол мекунад. 600 МБ RAM, 15% як ядро ​​​​ва якчанд даҳҳо IOPS барои ҳама ченакҳои мо кифояанд. Албатта, шумо бояд содиркунандагони метрикаро идора кунед, аммо онҳо ҳама дар Go навишта шудаанд ва инчунин ба нерӯи барқ ​​​​гурусна нестанд. Ман фикр намекунам, ки дар воқеияти муосир ин мушкилот аст.
  3. Қобилияти муҳоҷират ба Кубернетесро фароҳам меорад. Бо назардошти нақшаҳои муштарӣ, интихоб равшан аст.

ELK

Пештар мо журналҳоро ҷамъоварӣ ва коркард намекардем. Камбудихо ба хама маълуманд. Мо ELK-ро интихоб кардем, зеро мо аллакай бо ин система таҷриба доштем. Мо дар он ҷо танҳо гузоришҳои барномаҳоро нигоҳ медорем. Меъёрҳои асосии интихоб ҷустуҷӯи пурраи матн ва суръати он буданд.

Сlickhouse

Дар аввал, интихоб ба InfluxDB афтод. Мо зарурати ҷамъоварии гузоришҳои Nginx, омор аз pg_stat_statements ва нигоҳ доштани маълумоти таърихии Prometheusро дарк кардем. Мо Influx-ро дӯст намедоштем, зеро он давра ба давра миқдори зиёди хотираро истеъмол мекард ва ба садама дучор мешуд. Илова бар ин, ман мехостам, ки дархостҳоро тавассути remote_addr гурӯҳбандӣ кунам, аммо гурӯҳбандӣ дар ин DBMS танҳо аз рӯи тегҳо аст. Тегҳо гарон ҳастанд (хотира), шумораи онҳо шартан маҳдуд аст.

Мо боз ҷустуҷӯи худро оғоз кардем. Он чизе ки лозим буд, махзани таҳлилӣ бо истеъмоли ҳадди ақали захираҳо, беҳтараш бо фишурдани маълумот дар диск буд.

Clickhouse ба ҳамаи ин меъёрҳо мувофиқат мекунад ва мо ҳеҷ гоҳ аз интихоби худ пушаймон нестем. Мо ба он ягон миқдори ғайриоддии маълумот наменависем (шумораи воридкунӣ танҳо тақрибан панҷ ҳазор дар як дақиқа аст).

NewRelic

NewRelic таърихан бо мо буд, зеро ин интихоби муштарӣ буд. Мо онро ҳамчун APM истифода мебарем.

Зарифӣ

Мо Zabbix-ро танҳо барои назорат кардани қуттии сиёҳи API-ҳои гуногун истифода мебарем.

Муайян кардани равиши мониторинг

Мо мехостем, ки вазифаро тақсим кунем ва бо ин роҳ муносибати мониторингро ба низом оварем.

Барои ин ман системаи моро ба сатҳҳои зерин тақсим кардам:

  • сахтафзор ва VMS;
  • низоми амал;
  • хадамоти системавӣ, стеки нармафзор;
  • ариза;
  • мантиқи тиҷорат.

Чаро ин равиш қулай аст:

  • мо медонем, ки барои кори ҳар як сатҳ кӣ масъул аст ва дар асоси ин мо метавонем огоҳӣ фиристем;
  • мо метавонем сохторро ҳангоми пахш кардани огоҳиҳо истифода барем - вақте ки мошини виртуалӣ дар маҷмӯъ дастрас нест, фиристодани огоҳӣ дар бораи мавҷуд набудани пойгоҳи додаҳо аҷиб аст.

Азбаски вазифаи мо муайян кардани вайронкуниҳо дар кори система аст, мо бояд дар ҳар сатҳ маҷмӯи муайяни ченакҳоро қайд кунем, ки ҳангоми навиштани қоидаҳои огоҳӣ ба онҳо диққат додан лозим аст. Минбаъд, биёед сатҳҳои "VMS", "Системаи амалиётӣ" ва "Хидматҳои системавӣ, стеки нармафзор" -ро гузарем.

Мошинҳои виртуалӣ

Хостинг ба мо протсессор, диск, хотира ва шабака ҷудо мекунад. Ва мо бо дуи аввал мушкилот доштем. Ҳамин тавр, нишондиҳандаҳо:

Вақти дуздидашудаи CPU - вақте ки шумо дар Amazon як мошини виртуалӣ мехаред (масалан, t2.micro), шумо бояд фаҳмед, ки ба шумо як ядрои протсессори пурра ҷудо карда нашудааст, балки танҳо квотаи вақти он. Ва вақте ки шумо онро тамом мекунед, протсессор аз шумо гирифта мешавад.

Ин метрика ба шумо имкон медиҳад, ки чунин лаҳзаҳоро пайгирӣ кунед ва қарор қабул кунед. Масалан, оё гирифтани тарифи фарбеҳ ё тақсим кардани коркарди вазифаҳои пасзамина ва дархостҳои API ба серверҳои гуногун лозим аст?

IOPS + CPU вақти iowait - бо баъзе сабабҳо, бисёре аз хостингҳои абрӣ бо таъмин накардани IOPS кофӣ гуноҳ мекунанд. Гузашта аз ин, ҷадвали дорои IOPS паст барои онҳо далел нест. Аз ин рӯ, он ба маблағи ҷамъоварии CPU iowait аст. Бо ин ҷуфти графикҳо - бо IOPS паст ва интизории баланди I/O - шумо аллакай метавонед бо хостинг сӯҳбат кунед ва мушкилотро ҳал кунед.

системаи пардозанда

Меъёрҳои системаи амалиётӣ:

  • ҳаҷми хотираи дастрас бо %;
  • фаъолияти истифодаи своп: swapin vmstat, swapout;
  • шумораи инодҳои дастрас ва фазои холӣ дар системаи файлӣ бо %
  • сарбории миёна;
  • шумораи пайвастҳо дар ҳолати ду;
  • пуррагии ҷадвал;
  • Сифати шабакаро бо истифода аз утилитаи ss, бастаи iproute2 назорат кардан мумкин аст - аз баромади он нишондиҳандаи пайвастҳои RTT гиред ва онро аз рӯи бандари таъинот гурӯҳбандӣ кунед.

Инчунин дар сатҳи системаи амалиётӣ мо чунин объект дорем, ба монанди равандҳо. Дар система муайян кардани мачмуи процессхое, ки дар кори он роли мухим мебозанд, мухим аст. Агар, масалан, шумо якчанд pgpool дошта бошед, пас шумо бояд барои ҳар яки онҳо маълумот ҷамъ кунед.

Маҷмӯи нишондиҳандаҳо чунин аст:

  • ВПМ - ВОҲИДИ ПАРДОЗИШИ МАРКАЗӢ;
  • хотира асосан резидент аст;
  • IO - беҳтараш дар IOPS;
  • FileFd - кушода ва маҳдуд;
  • нокомиҳои назарраси саҳифа - бо ин роҳ шумо метавонед фаҳмед, ки кадом раванд иваз карда мешавад.

Мо ҳама мониторингро дар Docker ҷойгир мекунем ва барои ҷамъоварии маълумоти метрикӣ Advisor-ро истифода мебарем. Дар дигар мошинҳо мо коркарди содиротро истифода мебарем.

Хидматҳои система, стек нармафзор

Ҳар як барнома хусусиятҳои худро дорад ва ҷудо кардани маҷмӯи мушаххаси ченакҳо душвор аст.

Маҷмӯи универсалӣ ин аст:

  • меъёри дархост;
  • шумораи хатогиҳо;
  • таъхир;
  • сершавӣ.

Намунаҳои барҷастатарини мониторинги мо дар ин сатҳ Nginx ва PostgreSQL мебошанд.

Хизматрасонии пурборшуда дар системаи мо ин пойгоҳи додаҳост. Дар гузашта, мо аксар вақт дар фаҳмидани он, ки база чӣ кор мекунад, душворӣ мекашидем.

Мо бори зиёдро дар дискҳо дидем, аммо гузоришҳои суст воқеан чизе нишон намедоданд. Мо ин мушкилотро бо истифода аз pg_stat_statements, намоише, ки омори дархостҳоро ҷамъ мекунад, ҳал кардем.

Ин ҳама ба администратор лозим аст.

Мо графикҳои фаъолияти дархостҳои хондан ва навиштанро месозем:

Чӣ гуна мо мониторингро дар Prometheus, Clickhouse ва ELK сохтаем
Чӣ гуна мо мониторингро дар Prometheus, Clickhouse ва ELK сохтаем

Ҳама чиз оддӣ ва равшан аст, ҳар як дархост ранги худро дорад.

Мисоли якхела аҷиб ин гузоришҳои Nginx мебошад. Тааҷҷубовар нест, ки шумораи ками одамон онҳоро таҳлил мекунанд ё дар рӯйхати чизҳои ҳатмӣ зикр мекунанд. Формати стандартӣ чандон иттилоотӣ нест ва бояд васеъ карда шавад.

Шахсан ман request_time, upstream_response_time, body_bytes_sent, request_length, request_id илова кардам. Мо вақти вокуниш ва шумораи хатоҳоро тартиб медиҳем:

Чӣ гуна мо мониторингро дар Prometheus, Clickhouse ва ELK сохтаем
Чӣ гуна мо мониторингро дар Prometheus, Clickhouse ва ELK сохтаем

Мо графикҳои вақти ҷавоб ва шумораи хатогиҳоро месозем. Дар хотир доред? Оё ман дар бораи вазифаҳои тиҷоратӣ сӯҳбат кардам? Барои зуд ва бе хато? Мо аллакай ин масъалаҳоро бо ду диаграмма фаро гирифтем. Ва шумо аллакай метавонед ба маъмурони навбатдор бо истифода аз онҳо занг занед.

Аммо як проблемаи дигар — таъмин намудани зуд бартараф намудани сабабхои руй додани ходиса мебошад.

Ҳалли ҳодиса

Тамоми равандро аз муайян кардан то ҳалли мушкилот ба якчанд марҳила тақсим кардан мумкин аст:

  • муайян кардани мушкилот;
  • огоҳинома ба мудири навбатдор;
  • вокуниш ба ҳодиса;
  • бартараф намудани сабабхо.

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

Тасаввур кунем, ки телефони навбатдор занг зад. Ӯ чӣ кор хоҳад кард? Ҷавобҳоро ба саволҳо ҷустуҷӯ кунед - чӣ шикаст, дар куҷо шикастааст, чӣ гуна муносибат кардан мумкин аст? Ин аст, ки мо ба ин саволҳо чӣ гуна ҷавоб медиҳем:

Чӣ гуна мо мониторингро дар Prometheus, Clickhouse ва ELK сохтаем

Мо танҳо ҳамаи ин маълумотро ба матни огоҳинома дохил мекунем, ба он истинод ба саҳифаи вики медиҳем, ки чӣ гуна вокуниш ба ин мушкилот, чӣ гуна ҳалли онро ва вусъат додани онро тавсиф мекунад.

Ман то ҳол дар бораи қабати барнома ва мантиқи тиҷорат чизе нагуфтаам. Мутаассифона, барномаҳои мо то ҳол ҷамъоварии метрикаро амалӣ намекунанд. Ягона манбаи ҳама гуна маълумот аз ин сатҳҳо гузоришҳо мебошанд.

Якчанд нукта.

Аввалан, гузоришҳои сохториро нависед. Ба матни паём дохил кардани контекст лозим нест. Ин барои гурӯҳбандӣ ва таҳлили онҳоро мушкил мекунад. Logstash барои ба эътидол овардани ҳамаи ин вақти зиёд лозим аст.

Дуюм, дараҷаи вазниниро дуруст истифода баред. Ҳар як забон стандарти худро дорад. Шахсан ман чор сатҳро ҷудо мекунам:

  1. хато нест;
  2. хатои ҷониби муштарӣ;
  3. иштибоҳ аз ҷониби мост, мо пулро аз даст намедиҳем, хавфро ба дӯш намегирем;
  4. Хатогӣ аз ҷониби мост, мо пулро аз даст медиҳем.

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

Агар тамоми тиҷорати шумо як тугма дар браузер бошад, шумо бояд назорат кунед, ки оё он клик мекунад ва дуруст кор мекунад. Ҳама чизи боқимонда муҳим нест.

Агар шумо ин надошта бошед, шумо метавонед кӯшиш кунед, ки онро дар гузоришҳои барномаҳо, гузоришҳои Nginx ва ғайра, тавре ки мо кардем, ба даст оред. Шумо бояд то ҳадди имкон ба барнома наздик бошед.

Метрикҳои системаи амалиётӣ албатта муҳиманд, аммо тиҷорат ба онҳо таваҷҷӯҳ надорад, мо барои онҳо музд намегирем.

Манбаъ: will.com

Илова Эзоҳ