{"id":31864,"date":"2019-10-31T21:43:33","date_gmt":"2019-10-31T18:43:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/monitoring-myortv-da-zdravstvuet-monitoring\/"},"modified":"2019-10-31T21:43:33","modified_gmt":"2019-10-31T18:43:33","slug":"monitoring-myortv-da-zdravstvuet-monitoring","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring","title":{"rendered":"Monitorovanie m\u0155tvych? \u2014 Nech \u017eije monitorovanie","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Monitorovanie m\u0155tvych? \u2014 Nech \u017eije monitorovanie\" src=\"\/wp-content\/uploads\/2019\/04\/13453bb7025a6bf3d1c7a3dc6d038d16.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa\u0161a spolo\u010dnos\u0165 sa od roku 2008 zaober\u00e1 predov\u0161etk\u00fdm spr\u00e1vou infra\u0161trukt\u00far a profesion\u00e1lnou technickou podporou webov\u00fdch projektov: m\u00e1me viac ako 400 klientov, \u010do predstavuje pribli\u017ene 15 % elektronick\u00e9ho obchodu v Rusku. Preto je na\u0161a technick\u00e1 podpora ve\u013emi r\u00f4znorod\u00e1. Ak nie\u010do spadne, sme povinn\u00ed to opravi\u0165 do 15 min\u00fat. Av\u0161ak, aby sme pochopili, \u017ee do\u0161lo k hav\u00e1rii, je potrebn\u00e9 monitorova\u0165 projekt a reagova\u0165 na incidenty. Ako to v\u0161ak robi\u0165? <\/p>\n<p>Mysl\u00edm si, \u017ee v organiz\u00e1cii spr\u00e1vneho syst\u00e9mu monitorovania nast\u00e1va probl\u00e9m. Keby probl\u00e9m neexistoval, m\u00f4j prejav by sa skladal z jedn\u00e9ho v\u00fdroku: \u201eNain\u0161talujte pros\u00edm Prometheus + Grafana a pluginy 1, 2, 3.\u201c Bohu\u017eia\u013e, dnes to tak nefunguje. A hlavn\u00fd probl\u00e9m spo\u010d\u00edva v tom, \u017ee v\u0161etci na\u010falej veria nie\u010domu, \u010do existovalo v roku 2008, pokia\u013e ide o softv\u00e9rov\u00e9 komponenty. <\/p>\n<p>Pokia\u013e ide o organizovanie syst\u00e9mu monitorovania, riskujem, \u017ee poviem, \u017ee... projekty s rozumn\u00fdm monitorovan\u00edm neexistuj\u00fa. A situ\u00e1cia je tak\u00e1 zl\u00e1, \u017ee ak nie\u010do spadne, existuje riziko, \u017ee to zostane bez pov\u0161imnutia \u2014 v\u0161etci s\u00fa presved\u010den\u00ed, \u017ee \"v\u0161etko je monitorovan\u00e9\".<br \/>\nMo\u017eno, \u017ee v\u0161etko je monitorovan\u00e9. Ale ako? <\/p>\n<p>V\u0161etci sme sa stretli s pr\u00edbehom podobn\u00fdm tomuto: pracuje nejak\u00fd devops, nejak\u00fd administr\u00e1tor, a k nim prich\u00e1dza t\u00edm v\u00fdvoj\u00e1rov a hovor\u00ed: \u201eUrobili sme release, teraz to zamonitoruj.\u201c \u010co zamonitoruj? Ako to funguje?<\/p>\n<p>Dobre. Monitorujeme star\u00fdm sp\u00f4sobom. A ono sa to u\u017e men\u00ed a zist\u00ed\u0161, \u017ee si monitoroval slu\u017ebu A, ktor\u00e1 sa stala slu\u017ebou B, ktor\u00e1 interaguje so slu\u017ebou C. Ale t\u00edm v\u00fdvoj\u00e1rov ti hovor\u00ed: \u201eNain\u0161taluj softv\u00e9r, ten by mal v\u0161etko zamonitorova\u0165!\u201c<\/p>\n<p>Tak \u010do sa zmenilo? \u2014 V\u0161etko sa zmenilo!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Rok 2008. V\u0161etko je skvel\u00e9.<\/h4>\n<p>\nS\u00fa tu dvaja v\u00fdvoj\u00e1ri, jeden server, jeden datab\u00e1zov\u00fd server. Odtia\u013e to v\u0161etko za\u010d\u00edna. M\u00e1me nejak\u00e9 inform\u00e1cie, nain\u0161talujeme Zabbix, Nagios, Cacti. A potom nastav\u00edme jasn\u00e9 alerty na CPU, na pr\u00e1cu diskov, na miesto na diskoch. E\u0161te rob\u00edme p\u00e1r manu\u00e1lnych kontrol, \u017ee str\u00e1nka reaguje, \u017ee objedn\u00e1vky prich\u00e1dzaj\u00fa do datab\u00e1zy. A to je v\u0161etko \u2013 sme viac-menej chr\u00e1nen\u00ed. <\/p>\n<p>Ak porovn\u00e1me objem pr\u00e1ce, ktor\u00fa administr\u00e1tor robil na zabezpe\u010denie monitorovania, bola na 98 % automatizovan\u00e1: \u010dlovek, ktor\u00fd sa zaober\u00e1 monitorovan\u00edm, mus\u00ed pochopi\u0165, ako nastavi\u0165 Zabbix, ako ho nakonfigurova\u0165 a nastavi\u0165 upozornenia. A 2 % s\u00fa na extern\u00e9 kontroly: \u010di str\u00e1nka odpoved\u00e1 a rob\u00ed dotazy do datab\u00e1zy, \u017ee nov\u00e9 objedn\u00e1vky pri\u0161li.<\/p>\n<p><img decoding=\"async\" alt=\"Monitorovanie m\u0155tvych? \u2014 Nech \u017eije monitorovanie\" src=\"\/wp-content\/uploads\/2019\/04\/3563dda4d025fd18200d6410d7d065ed.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h4>Rok 2010. Rastie za\u0165a\u017eenie.<\/h4>\n<p>\nZa\u010d\u00edna sa \u0161k\u00e1lovanie webov, prid\u00e1vame vyh\u013ead\u00e1vac\u00ed engine. Chceme si by\u0165 ist\u00ed, \u017ee katal\u00f3g produktov obsahuje v\u0161etky produkty. A \u017ee vyh\u013ead\u00e1vanie produktov funguje. \u010ci datab\u00e1za funguje, \u010di sa objedn\u00e1vky robia, \u010di str\u00e1nka odpoved\u00e1 zvonku a odpoved\u00e1 z dvoch. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sk\/server\/\"   title=\"serverov\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1314\">serverov<\/a> a pou\u017e\u00edvate\u013ea nevykopne zo str\u00e1nky, k\u00fdm sa neprebalancuje na in\u00fd server at\u010f. Ent\u00edt prib\u00fada. <\/p>\n<p>A entita spojen\u00e1 s infra\u0161trukt\u00farou st\u00e1le zost\u00e1va najv\u00e4\u010d\u0161ia v hlave mana\u017e\u00e9ra. St\u00e1le v hlave zost\u00e1va my\u0161lienka, \u017ee \u010dlovek, ktor\u00fd sa zaober\u00e1 monitorovan\u00edm, je ten, ktor\u00fd nain\u0161taluje Zabbix a dok\u00e1\u017ee ho konfigurova\u0165.<\/p>\n<p>Ale objavuj\u00fa sa aj \u00falohy na vykonanie extern\u00fdch kontrol, na vytvorenie s\u00faboru skriptov pre po\u017eiadavky vyh\u013ead\u00e1vacieho index\u00e1tora, s\u00faboru skriptov na kontrolu toho, \u017ee vyh\u013ead\u00e1vanie sa men\u00ed v procese indexovania, s\u00faboru skriptov, ktor\u00e9 kontroluj\u00fa, \u017ee sa predmety odovzd\u00e1vaj\u00fa slu\u017ebe doru\u010denia at\u010f.<\/p>\n<p><img decoding=\"async\" alt=\"Monitorovanie m\u0155tvych? \u2014 Nech \u017eije monitorovanie\" src=\"\/wp-content\/uploads\/2019\/04\/afa94a3156a24a81ab359b430341f27d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u0161imnite si: trikr\u00e1t som nap\u00edsal \"s\u00fabor skriptov\". To znamen\u00e1, \u017ee zodpovedn\u00fdm za monitorovanie u\u017e nie je ten, kto len in\u0161taluje Zabbix. Je to \u010dlovek, ktor\u00fd za\u010d\u00edna k\u00f3dova\u0165. Ale v hlav\u00e1ch t\u00edmu zatia\u013e ni\u010d nemen\u00ed. <\/p>\n<p>Ale svet sa men\u00ed a st\u00e1va sa st\u00e1le zlo\u017eitej\u0161\u00edm. Pribudol vrstva virtualiz\u00e1cie, nieko\u013eko nov\u00fdch syst\u00e9mov. Za\u010d\u00ednaj\u00fa spolu komunikova\u0165. Kto povedal \"c\u00edtim mikroservisy?\" Ale ka\u017ed\u00fd servis st\u00e1le vyzer\u00e1 ako samostatn\u00e1 str\u00e1nka. M\u00f4\u017eeme sa na to odvola\u0165 a pochopi\u0165, \u017ee poskytuje potrebn\u00e9 inform\u00e1cie a funguje s\u00e1m o sebe. A ak si administr\u00e1tor, ktor\u00fd sa neust\u00e1le zaober\u00e1 projektom, ktor\u00fd sa vyv\u00edja 5-7-10 rokov, tieto poznatky sa hromadia: objavuje sa nov\u00e1 \u00farove\u0148 \u2014 uvedom\u00ed\u0161 si to, objav\u00ed sa \u010fal\u0161ia \u00farove\u0148 \u2014 uvedom\u00ed\u0161 si to... <\/p>\n<p><img decoding=\"async\" alt=\"Monitorovanie m\u0155tvych? \u2014 Nech \u017eije monitorovanie\" src=\"\/wp-content\/uploads\/2019\/04\/3578182594d012732afde7849b75322a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAle zriedka sa niekto sna\u017e\u00ed udr\u017eiava\u0165 projekt 10 rokov.<\/p>\n<h3>Zhrnutie monitorovania<\/h3>\n<p>\nPredpokladajme, \u017ee ste pri\u0161li do nov\u00e9ho startupu, ktor\u00fd r\u00fdchlo nabral 20 v\u00fdvoj\u00e1rov, nap\u00edsal 15 mikroslu\u017eieb a vy ste administr\u00e1tor, ktor\u00e9mu hovoria: \u201ePostav CI\/CD. Pros\u00edm.\u201c Vy ste vybudovali CI\/CD a zrazu po\u010dujete: \u201e\u0164a\u017eko sa n\u00e1m pracuje s produkciou v 'kube', ke\u010f nevieme, ako v \u0148om bude fungova\u0165 aplik\u00e1cia. Urob n\u00e1m pieskovisko v tomto 'kube'.<br \/>\n Vy vytv\u00e1rate pieskovisko v tomto kube. Ihne\u010f v\u00e1m povedia: \u201eChceme staging datab\u00e1zu, ktor\u00e1 sa ka\u017ed\u00fd de\u0148 aktualizuje z produkcie, aby sme ch\u00e1pali, \u017ee to funguje na datab\u00e1ze, ale pritom nepo\u0161kodilo produk\u010dn\u00fa datab\u00e1zu.\u201c<\/p>\n<p>\u017dijete vo v\u0161etkom tomto. Zost\u00e1vaj\u00fa 2 t\u00fd\u017edne do vydania, hovoria v\u00e1m: \u201eTeraz by to v\u0161etko bolo dobr\u00e9 monitorova\u0165\u2026\u201c T.j. monitorova\u0165 klastrov\u00fa infra\u0161trukt\u00faru, monitorova\u0165 mikroslu\u017ebov\u00fa architekt\u00faru, monitorova\u0165 pr\u00e1cu s vonkaj\u0161\u00edmi slu\u017ebami\u2026 <\/p>\n<p>A kolegovia vytiahnu z hlavy obvykl\u00fa sch\u00e9mu a hovoria: \u201eVe\u010f tu je v\u0161etko jasn\u00e9! Nain\u0161taluj program, ktor\u00fd to v\u0161etko monitoruje.\u201c \u00c1no-\u00e1d: Prometheus + Grafana + pluginy. <br \/>\nA prid\u00e1vaj\u00fa: \u201eM\u00e1\u0161 dva t\u00fd\u017edne, urob to tak, aby to bolo spo\u013eahliv\u00e9.\u201c<\/p>\n<p>V mno\u017estve projektov, ktor\u00e9 vid\u00edme, je na monitorovanie vy\u010dlenen\u00fd jeden \u010dlovek. Predstavte si, \u017ee chceme na 2 t\u00fd\u017edne zamestna\u0165 osobu, ktor\u00e1 sa bude zaobera\u0165 monitorovan\u00edm, a zostavujeme jej \u017eivotopis. Ak\u00e9 zru\u010dnosti by mala t\u00e1to osoba ma\u0165 \u2014 ak zoh\u013eadn\u00edme v\u0161etko, \u010do sme predt\u00fdm povedali?<\/p>\n<ul>\n<li>Mus\u00ed rozumie\u0165 monitorovaniu a \u0161pecifike fungovania hardv\u00e9rovej infra\u0161trukt\u00fary.<\/li>\n<li>Mus\u00ed rozumie\u0165 \u0161pecifik\u00e1m monitorovania Kubernetes (v\u0161etci chc\u00fa do 'kube', preto\u017ee sa d\u00e1 abstrahova\u0165 od v\u0161etk\u00e9ho, schova\u0165 sa, ve\u010f s ostatn\u00fdm si porad\u00ed administr\u00e1tor) \u2014 samotn\u00e9ho o sebe, jeho infra\u0161trukt\u00fary a ch\u00e1pa\u0165, ako monitorova\u0165 aplik\u00e1cie vn\u00fatri.<\/li>\n<li>Mus\u00ed ch\u00e1pa\u0165, \u017ee slu\u017eby medzi sebou komunikuj\u00fa \u0161peci\u00e1lnymi sp\u00f4sobmi a pozna\u0165 \u0161pecifik\u00e1 interakcie slu\u017eieb medzi sebou. Celkom re\u00e1lne je vidie\u0165 projekt, kde \u010das\u0165 slu\u017eieb komunikuje synchronne, preto\u017ee inak to nejde. Napr\u00edklad, backend ide cez REST, cez gRPC k slu\u017ebe katal\u00f3gu, z\u00edska zoznam produktov a vr\u00e1ti sp\u00e4\u0165. Tu sa ned\u00e1 \u010daka\u0165. A s in\u00fdmi slu\u017ebami pracuje asynchr\u00f3nne. Prenies\u0165 objedn\u00e1vku do slu\u017eby doru\u010denia, posla\u0165 e-mail at\u010f.<br \/>\nU\u017e ste sa asi od v\u0161etk\u00e9ho tohto zamotali? A administr\u00e1tor, ktor\u00e9mu je to potrebn\u00e9 monitorova\u0165, sa zamotal e\u0161te viac. <\/li>\n<li>Mus\u00ed by\u0165 schopn\u00fd pl\u00e1nova\u0165 a pl\u00e1nova\u0165 spr\u00e1vne \u2014 preto\u017ee pr\u00e1ce prib\u00fada st\u00e1le viac a viac. <\/li>\n<li>Mus\u00ed teda vytvori\u0165 strat\u00e9giu z vytvoren\u00e9ho servisu, aby pochopil, ako to konkr\u00e9tne monitorova\u0165. Potrebuje rozumie\u0165 architekt\u00fare projektu a jeho rozvoju + porozumeniu technol\u00f3gi\u00ed pou\u017e\u00edvan\u00fdch pri v\u00fdvoji. <\/li>\n<\/ul>\n<p>\nSpome\u0148me si na \u00faplne be\u017en\u00fd pr\u00edpad: \u010das\u0165 servisov na PHP, \u010das\u0165 servisov na Go, \u010das\u0165 servisov na JS. Nejak\u00fdm sp\u00f4sobom medzi sebou spolupracuj\u00fa. Odtia\u013e poch\u00e1dza pojem \u201emikroslu\u017eba\u201c: oddelen\u00fdch syst\u00e9mov sa stalo to\u013eko, \u017ee v\u00fdvoj\u00e1ri nedok\u00e1\u017eu pochopi\u0165 projekt ako celok. Jedna \u010das\u0165 t\u00edmu p\u00ed\u0161e slu\u017eby na JS, ktor\u00e9 funguj\u00fa samostatne a nevedia, ako funguje zvy\u0161ok syst\u00e9mu. Druh\u00e1 \u010das\u0165 p\u00ed\u0161e slu\u017eby na Pythone a nezauj\u00edma sa o to, ako funguj\u00fa in\u00e9 slu\u017eby, s\u00fa izolovan\u00e9 vo svojej oblasti. Tretia \u2014 p\u00ed\u0161e slu\u017eby na PHP alebo nie\u010dom inom. <br \/>\nV\u0161etk\u00fdch t\u00fdchto 20 \u013eud\u00ed je rozdelen\u00fdch do 15 slu\u017eieb a je len jeden administr\u00e1tor, ktor\u00fd to v\u0161etko mus\u00ed pochopi\u0165. Stop! pr\u00e1ve sme rozdelili syst\u00e9m na 15 mikroslu\u017eieb, preto\u017ee 20 \u013eud\u00ed nem\u00f4\u017ee pochopi\u0165 cel\u00fa syst\u00e9m. <\/p>\n<p>Ale je potrebn\u00e9 to nejak\u00fdm sp\u00f4sobom monitorova\u0165\u2026<\/p>\n<p>A \u010do nakoniec? Nakoniec je tu jeden \u010dlovek, do ktor\u00e9ho sa dost\u00e1va v\u0161etko, \u010do cel\u00e1 t\u00edm v\u00fdvoj\u00e1rov nem\u00f4\u017ee pochopi\u0165, a pritom by mal tie\u017e vedie\u0165 a ovl\u00e1da\u0165 to, \u010do sme uviedli vy\u0161\u0161ie \u2014 hardv\u00e9rov\u00fa infra\u0161trukt\u00faru, infra\u0161trukt\u00faru Kubernetes at\u010f.<\/p>\n<p>\u010co tu poveda\u0165\u2026 Houston, m\u00e1me probl\u00e9m.<\/p>\n<h3>Monitorovanie modern\u00e9ho softv\u00e9rov\u00e9ho projektu je samo o sebe softv\u00e9rov\u00fd projekt.<\/h3>\n<p>\nZ falo\u0161nej istoty, \u017ee monitorovanie je len softv\u00e9r, sa u n\u00e1s objavuje viera v z\u00e1zraky. A z\u00e1zraky sa, \u017eia\u013e, nekonaj\u00fa. Nen\u00ed mo\u017en\u00e9 nasadi\u0165 Zabbix a \u010daka\u0165, \u017ee v\u0161etko za\u010dne fungova\u0165. Nie je zmysel nasadi\u0165 Grafanu a d\u00fafa\u0165, \u017ee v\u0161etko bude v poriadku. V\u00e4\u010d\u0161ina \u010dasu bude str\u00e1ven\u00e1 organizovan\u00edm kontrol pr\u00e1ce slu\u017eieb a ich vz\u00e1jomnej interakcie, kontrolovan\u00edm, ako funguj\u00fa extern\u00e9 syst\u00e9my. Fakticky 90% \u010dasu p\u00f4jde nie na p\u00edsanie skriptov, ale na v\u00fdvoj softv\u00e9ru. A t\u00edm, ktor\u00fd rozumie pr\u00e1ci projektu, by sa mal touto \u010dinnos\u0165ou zaobera\u0165. <br \/>\nAk v tejto situ\u00e1cii hod\u00edme jedn\u00e9ho \u010dloveka na monitorovanie, stane sa trag\u00e9dia. A to sa deje v\u0161ade.<\/p>\n<p>Napr\u00edklad existuje nieko\u013eko slu\u017eieb, ktor\u00e9 medzi sebou komunikuj\u00fa cez Kafka. Pri\u0161iel objedn\u00e1vka, poslali sme spr\u00e1vu o objedn\u00e1vke do Kafky. Existuje slu\u017eba, ktor\u00e1 po\u010d\u00fava inform\u00e1cie o objedn\u00e1vke a realizuje dod\u00e1vku tovaru. Existuje slu\u017eba, ktor\u00e1 po\u010d\u00fava inform\u00e1cie o objedn\u00e1vke a posiela email pou\u017e\u00edvate\u013eovi. A potom sa objav\u00ed e\u0161te mno\u017estvo slu\u017eieb a za\u010dneme sa v tom zamot\u00e1va\u0165.<\/p>\n<p>A ak to e\u0161te odovzd\u00e1te adminovi a v\u00fdvoj\u00e1rom v etape, ke\u010f do vydania zost\u00e1va kr\u00e1tky \u010das, \u010dlovek bude musie\u0165 pochopi\u0165 cel\u00fd tento protokol. T.j. projekt takejto ve\u013ekosti zaber\u00e1 zna\u010dn\u00fd \u010das a pri v\u00fdvoji syst\u00e9mu by to malo by\u0165 zoh\u013eadnen\u00e9. <br \/>\nAle ve\u013emi \u010dasto, najm\u00e4 v startupoch, vid\u00edme, ako sa monitorovanie odklad\u00e1 na nesk\u00f4r. \"Teraz sprav\u00edme Proof of Concept, s n\u00edm sa spust\u00edme, nech sa to rozpadne \u2013 sme ochotn\u00ed obetova\u0165. A potom to v\u0161etko monitorujeme.\" Ke\u010f (alebo ak) projekt za\u010dne prin\u00e1\u0161a\u0165 peniaze, biznis chce prida\u0165 e\u0161te viac funkci\u00ed \u2014 preto\u017ee to za\u010dalo fungova\u0165, znamen\u00e1 to, \u017ee treba prid\u00e1va\u0165 \u010falej! A vy ste na mieste, kde je najprv potrebn\u00e9 monitorova\u0165 v\u0161etko predch\u00e1dzaj\u00face, \u010do nezaber\u00e1 1% \u010dasu, ale ove\u013ea viac. A mimochodom na monitorovanie bud\u00fa potrebn\u00ed v\u00fdvoj\u00e1ri, a t\u00fdch je jednoduch\u0161ie pusti\u0165 na nov\u00e9 funkcie. Nakoniec sa p\u00ed\u0161u nov\u00e9 funkcie, v\u0161etko sa zvy\u0161uje a vy ste v nekone\u010dnom deadlocku.<\/p>\n<p>Ako teda monitorova\u0165 projekt od za\u010diatku a \u010do robi\u0165, ak dostanete projekt, ktor\u00fd treba monitorova\u0165, a neviete, odkia\u013e za\u010da\u0165?<\/p>\n<p>Po prv\u00e9, treba pl\u00e1nova\u0165. <\/p>\n<p><i>Lyrick\u00e1 pozn\u00e1mka: ve\u013emi \u010dasto za\u010d\u00ednaj\u00fa s monitorovan\u00edm infra\u0161trukt\u00fary. Napr\u00edklad m\u00e1me Kubernetes. Za\u010dneme s t\u00fdm, \u017ee nain\u0161talujeme Prometheus s Grafanou, nain\u0161talujeme pluginy na monitorovanie \"kocky\". Nie len u v\u00fdvoj\u00e1rov, ale aj u adminov existuje smutn\u00e1 prax: \"Nain\u0161talujeme tento plugin, a plugin asi vie, ako to urobi\u0165.\" \u013dudia radi za\u010d\u00ednaj\u00fa s jednoduch\u00fdmi a zrozumite\u013en\u00fdmi, nie s d\u00f4le\u017eit\u00fdmi \u010dinnos\u0165ami. A monitorovanie infra\u0161trukt\u00fary je jednoduch\u00e9.<\/i><\/p>\n<p>Na za\u010diatok sa rozhodnite, \u010do a ako chcete monitorova\u0165, a potom vyberte n\u00e1stroj, preto\u017ee in\u00ed \u013eudia za v\u00e1s nem\u00f4\u017eu myslie\u0165. A mali by? In\u00ed \u013eudia mysleli na seba, na univerz\u00e1lny syst\u00e9m \u2014 alebo v\u00f4bec nemysleli, ke\u010f tento plugin p\u00edsali. A to, \u017ee tento plugin m\u00e1 5000 pou\u017e\u00edvate\u013eov, neznamen\u00e1, \u017ee m\u00e1 nejak\u00fa hodnotu. Mo\u017eno sa stanete 5001. len preto, \u017ee predt\u00fdm tam u\u017e bolo 5000 \u013eud\u00ed. <\/p>\n<p>Ak ste za\u010dali monitorova\u0165 infra\u0161trukt\u00faru a backend va\u0161ej aplik\u00e1cie prestal odpoveda\u0165, v\u0161etci pou\u017e\u00edvatelia stratia spojenie s mobilnou aplik\u00e1ciou. Vyskytne sa chyba. Pr\u00eddu k v\u00e1m a povedia: \u201eAplik\u00e1cia nefunguje, \u010do tu rob\u00edte?\u201c \u2014 \u201eMonitorujeme.\u201c \u2014 \u201eAko monitorujete, ak nevid\u00edte, \u017ee aplik\u00e1cia nefunguje?!\u201c <\/p>\n<ol>\n<li>Mysl\u00edm si, \u017ee sledova\u0165 treba za\u010da\u0165 presne od vstupn\u00e9ho bodu pou\u017e\u00edvate\u013ea. Ak pou\u017e\u00edvate\u013e nevid\u00ed, \u017ee aplik\u00e1cia funguje \u2014 v\u0161etko, to je zlyhanie. A syst\u00e9m monitorovania by mal na to varova\u0165 predov\u0161etk\u00fdm. <\/li>\n<li>A len potom m\u00f4\u017eeme monitorova\u0165 infra\u0161trukt\u00faru. Alebo to urobi\u0165 paralelne. S infra\u0161trukt\u00farou je to jednoduch\u0161ie \u2014 kone\u010dne m\u00f4\u017eeme jednoducho nain\u0161talova\u0165 Zabbix. <\/li>\n<li>A teraz je potrebn\u00e9 \u00eds\u0165 do kore\u0148ov aplik\u00e1cie, aby sme pochopili, kde nie\u010do nefunguje.<\/li>\n<\/ol>\n<p>\nHlavn\u00e1 my\u0161lienka je, \u017ee monitorovanie by malo prebieha\u0165 s\u00fa\u010dasne s procesom v\u00fdvoja. Ak odtrhnete t\u00edm na monitorovanie na in\u00e9 \u00falohy (tvorba CI\/CD, pieskovisko, reorganiz\u00e1cia infra\u0161trukt\u00fary), monitorovanie za\u010dne zaost\u00e1va\u0165 a mo\u017eno ho u\u017e nikdy nedobehnete (alebo nakoniec budete musie\u0165 zastavi\u0165 v\u00fdvoj).<\/p>\n<h3>V\u0161etko na \u00farovniach<\/h3>\n<p>\nTakto vid\u00edm organiz\u00e1ciu syst\u00e9mu monitorovania.<\/p>\n<p>1) \u00darove\u0148 aplik\u00e1cie:<\/p>\n<ul>\n<li>monitorova\u0165 biznis logiku aplik\u00e1cie;<\/li>\n<li>monitorova\u0165 health metriky slu\u017eieb;<\/li>\n<li>integra\u010dn\u00e9 monitorovanie.<\/li>\n<\/ul>\n<p>\n2) \u00darove\u0148 infra\u0161trukt\u00fary:<\/p>\n<ul>\n<li>monitorova\u0165 \u00farove\u0148 orchestrace;<\/li>\n<li>monitorova\u0165 syst\u00e9mov\u00fd softv\u00e9r;<\/li>\n<li>monitorova\u0165 \u00farove\u0148 \u201ehardv\u00e9ru\u201c.<\/li>\n<\/ul>\n<p>\n3) Op\u00e4\u0165 \u00farove\u0148 aplik\u00e1cie \u2014 ale u\u017e ako in\u017einierskeho produktu:<\/p>\n<ul>\n<li>zbiera\u0165 a sledova\u0165 denn\u00edky aplik\u00e1cie;<\/li>\n<li>APM;<\/li>\n<li>trasovanie.<\/li>\n<\/ul>\n<p>\n4) Upozornenie:<\/p>\n<ul>\n<li>organizova\u0165 syst\u00e9m upozornen\u00ed;<\/li>\n<li>organizova\u0165 syst\u00e9m pohotovosti;<\/li>\n<li>organizova\u0165 \u201ez\u00e1klad\u0148u poznania\u201c a workflow spracovania incidentov.<\/li>\n<\/ul>\n<p>\n<b>D\u00f4le\u017eit\u00e9<\/b>: Prejdeme k alertingu nie a\u017e potom, ale hne\u010f! Nesp\u00fa\u0161\u0165ajte monitoring a potom si nejak\u00fdm sp\u00f4sobom necha\u0165 vymyslie\u0165, komu bud\u00fa prich\u00e1dza\u0165 alerty. Ve\u010f v \u010dom spo\u010d\u00edva \u00faloha monitoringu: pochopi\u0165, kde v syst\u00e9me nie\u010do nefunguje, a informova\u0165 o tom potrebn\u00fdch \u013eud\u00ed. Ak to nech\u00e1te na koniec, tak potrebn\u00ed \u013eudia sa dozvedia, \u017ee nie\u010do nefunguje, iba ke\u010f zaznie telefon\u00e1t: \"u n\u00e1s ni\u010d nefunguje\".<\/p>\n<h3>\u00darove\u0148 aplik\u00e1cie \u2014 monitoring biznis logiky<\/h3>\n<p>\nTu ide o kontrolu samotnej skuto\u010dnosti, \u017ee aplik\u00e1cia funguje pre pou\u017e\u00edvate\u013ea.<\/p>\n<p>T\u00e1to \u00farove\u0148 by mala by\u0165 vytvoren\u00e1 u\u017e v etape v\u00fdvoja. Napr\u00edklad, m\u00e1me hypotetick\u00e9ho Promethea: ten sa pripoj\u00ed k serveru, ktor\u00fd sa zaober\u00e1 kontrolami, zavol\u00e1 endpoint a endpoint ide a kontroluje API.<\/p>\n<p>Ke\u010f \u010dasto \u017eiadaj\u00fa monitorova\u0165 hlavn\u00fa str\u00e1nku, aby sa ubezpe\u010dili, \u017ee web funguje, program\u00e1tori poskytuj\u00fa endpoint, ktor\u00fd m\u00f4\u017eu zavola\u0165 zaka\u017ed\u00fdm, ke\u010f si chc\u00fa overi\u0165, \u017ee API funguje. A program\u00e1tori pritom e\u0161te nap\u00ed\u0161u \/api\/test\/helloworld. <br \/>\nJe jedin\u00fd sp\u00f4sob, ako sa uisti\u0165, \u017ee v\u0161etko funguje? \u2014 Nie!<\/p>\n<ul>\n<li>Vytvorenie tak\u00fdchto kontrol je v podstate \u00falohou v\u00fdvoj\u00e1rov. Unit testy by mali p\u00edsa\u0165 program\u00e1tori, ktor\u00ed p\u00ed\u0161u k\u00f3d. Preto\u017ee, ak to zver\u00edte adminovi: \"Kamar\u00e1d, tu m\u00e1\u0161 zoznam protokolov API v\u0161etk\u00fdch 25 funkci\u00ed, pros\u00edm \u0165a, monitoruj v\u0161etko!\" \u2014 ni\u010d z toho nevzi\u0161lo. <\/li>\n<li>Ak sprav\u00edte print \"hello world\", nikto sa nikdy nedozvie, \u017ee API by malo a skuto\u010dne funguje. Ka\u017ed\u00e1 zmena API by mala vies\u0165 k zmene kontrol. <\/li>\n<li>Ak m\u00e1te u\u017e tak\u00fd probl\u00e9m \u2014 zastavte funkcie a vy\u010dle\u0148te v\u00fdvoj\u00e1rov, ktor\u00ed nap\u00ed\u0161u tieto kontroly, alebo sa zmierte so stratami, zmierte sa s t\u00fdm, \u017ee ni\u010d sa nekontroluje a bude pada\u0165.<\/li>\n<\/ul>\n<p>\nTechnick\u00e9 tipy:<\/p>\n<ul>\n<li>Nezabudnite zorganizova\u0165 extern\u00fd server pre vykon\u00e1vanie kontrol \u2014 mus\u00edte si by\u0165 ist\u00ed, \u017ee v\u00e1\u0161 projekt je pr\u00edstupn\u00fd pre svet vonku.<\/li>\n<li>Organizujte kontrolu cez cel\u00fd protokol API, a nie iba cez jednotliv\u00e9 endpointy.<\/li>\n<li>Vytvorte prometheus-endpoint s v\u00fdsledkami kontrol.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00darove\u0148 aplik\u00e1cie \u2014 monitoring health metrik<\/h3>\n<p>\nTeraz hovor\u00edme o extern\u00fdch health metrik\u00e1ch slu\u017eieb. <\/p>\n<p>Rozhodli sme sa, \u017ee v\u0161etky \"p\u00e1\u010dky\" aplik\u00e1cie monitorujeme pomocou extern\u00fdch kontrol, ktor\u00e9 vol\u00e1me z extern\u00e9ho monitorovacieho syst\u00e9mu. Ale to s\u00fa pr\u00e1ve \"p\u00e1\u010dky\", ktor\u00e9 \"vid\u00ed\" pou\u017e\u00edvate\u013e. Chceme si by\u0165 ist\u00ed, \u017ee na\u0161e slu\u017eby funguj\u00fa. V tomto pr\u00edpade je to lep\u0161ie: v K8s s\u00fa health checky, aby sa aspo\u0148 \"kocka\" uistila, \u017ee slu\u017eba funguje. Ale polovica checkov, ktor\u00e9 som videl, je len ten ist\u00fd print \"hello world\". T.j. vol\u00e1 sa jedenkr\u00e1t po nasaden\u00ed, dostane odpove\u010f, \u017ee v\u0161etko je v poriadku \u2014 a hotovo. A ak slu\u017eba poskytuje svoj API cez REST, existuje obrovsk\u00e9 mno\u017estvo vstupn\u00fdch bodov tohto API, ktor\u00e9 tie\u017e potrebujeme monitorova\u0165, preto\u017ee chceme vedie\u0165, \u017ee funguje. A ten monitorujeme u\u017e vo vn\u00fatri. <\/p>\n<p>Ako to spr\u00e1vne technicky realizova\u0165: ka\u017ed\u00e1 slu\u017eba vystavuje endpoint o svojej aktu\u00e1lnej funk\u010dnosti a v grafoch Grafana (alebo ak\u00e9hoko\u013evek in\u00e9ho aplik\u00e1cie) vid\u00edme stav v\u0161etk\u00fdch slu\u017eieb.<\/p>\n<ul>\n<li>Ka\u017ed\u00e1 zmena API by mala vies\u0165 k zmene kontrol. <\/li>\n<li>Nov\u00fa slu\u017ebu vytv\u00e1rajte hne\u010f s health metrikami.<\/li>\n<li>Admin m\u00f4\u017ee pr\u00eds\u0165 k v\u00fdvoj\u00e1rom a po\u017eiada\u0165 \"nap\u00ed\u0161te mi p\u00e1r funkci\u00ed, aby som v\u0161etko ch\u00e1pal a do svojej monitorovacej syst\u00e9m pridal inform\u00e1cie o tom\". Ale v\u00fdvoj\u00e1ri zvy\u010dajne odpovedaj\u00fa \"Dva t\u00fd\u017edne pred vydan\u00edm ni\u010d neprid\u00e1me\".<br \/>\nNech mana\u017e\u00e9ri v\u00fdvoja vedia, \u017ee bud\u00fa tak\u00e9to straty, nech vedenie mana\u017e\u00e9rov v\u00fdvoja tie\u017e vie. Preto\u017ee, ke\u010f v\u0161etko padne, niekto sa aj tak ozve a bude po\u017eadova\u0165 monitorova\u0165 \"neust\u00e1le padaj\u00facu slu\u017ebu\". <\/li>\n<li>Mimochodom, vy\u010dle\u0148te v\u00fdvoj\u00e1rov na p\u00edsanie pluginov pre Grafanu \u2014 to bude dobr\u00e1 pomoc pre adminov.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00darove\u0148 aplik\u00e1cie \u2014 Integra\u010dn\u00e9 monitorovanie<\/h3>\n<p>\nIntegra\u010dn\u00e9 monitorovanie sa zameriava na monitorovanie komunik\u00e1cie medzi kritick\u00fdmi pre biznis syst\u00e9mami.<\/p>\n<p>Napr\u00edklad existuje 15 slu\u017eieb, ktor\u00e9 medzi sebou komunikuj\u00fa. U\u017e to nie s\u00fa samostatn\u00e9 weby. T.j. nem\u00f4\u017eeme zavola\u0165 slu\u017ebu samostatne, z\u00edska\u0165 \/helloworld a pochopi\u0165, \u017ee slu\u017eba funguje. Preto\u017ee webov\u00e1 slu\u017eba na spracovanie objedn\u00e1vok mus\u00ed odosla\u0165 inform\u00e1cie o objedn\u00e1vke do zbernice \u2014 z zbernice mus\u00ed slu\u017eba spr\u00e1vy skladu t\u00fato spr\u00e1vu z\u00edska\u0165 a \u010falej s \u0148ou pracova\u0165. A slu\u017eba na odosielanie e-mailov to mus\u00ed \u010falej spracova\u0165, at\u010f. <\/p>\n<p>Preto nem\u00f4\u017eeme pochopi\u0165, ke\u010f sa sna\u017e\u00edme ka\u017ed\u00e9mu jednotliv\u00e9mu servisu, \u010di v\u0161etko funguje. Preto\u017ee m\u00e1me ak\u00fasi zbernicu, cez ktor\u00fa v\u0161etko komunikuje a interaguje.<br \/>\nTento krok by preto mal predstavova\u0165 testovac\u00ed proces slu\u017eieb na interakciu s in\u00fdmi slu\u017ebami. Nie je mo\u017en\u00e9 monitorova\u0165 messaging broker a organizova\u0165 monitorovanie komunik\u00e1cie. Ak existuje slu\u017eba, ktor\u00e1 poskytuje d\u00e1ta, a slu\u017eba, ktor\u00e1 ich prij\u00edma, pri monitorovan\u00ed brokera uvid\u00edme len d\u00e1ta, ktor\u00e9 prech\u00e1dzaj\u00fa z jednej strany na druh\u00fa. Aj ke\u010f sa n\u00e1m nejak\u00fdm sp\u00f4sobom podar\u00ed monitorova\u0165 interakciu t\u00fdchto d\u00e1t, - \u017ee nejak\u00fd producent posiela d\u00e1ta, niekto ich \u010d\u00edta, tento tok pokra\u010duje do Kafka - aj tak n\u00e1m to ned\u00e1 inform\u00e1ciu, ak jedna slu\u017eba odovzdala spr\u00e1vu v jednej verzii, zatia\u013e \u010do druh\u00e1 slu\u017eba ne\u010dakala t\u00fato verziu a vynechala ju. O tom sa nedozvieme, preto\u017ee n\u00e1m slu\u017eby povedia, \u017ee v\u0161etko funguje. <\/p>\n<p>Tu je moje odpor\u00fa\u010danie:<\/p>\n<ul>\n<li>Pre synchronn\u00fa komunik\u00e1ciu: endpoint vykon\u00e1va po\u017eiadavky na s\u00favisiace slu\u017eby. T.j. vezmeme tento endpoint, spust\u00edme skript vo vn\u00fatri slu\u017eby, ktor\u00fd prech\u00e1dza v\u0161etk\u00fdmi bodmi a hovor\u00ed: \"M\u00f4\u017eem tu dotiahnu\u0165, a tam dotiahnu\u0165, m\u00f4\u017eem tam dotiahnu\u0165...\"<\/li>\n<li>Pre asynchr\u00f3nnu komunik\u00e1ciu: prich\u00e1dzaj\u00face spr\u00e1vy - endpoint kontroluje zbernicu na existenciu testovac\u00edch spr\u00e1v a vyd\u00e1va stav spracovania. <\/li>\n<li>Pre asynchr\u00f3nnu komunik\u00e1ciu: odch\u00e1dzaj\u00face spr\u00e1vy - endpoint posiela testovacie spr\u00e1vy na zbernicu.<\/li>\n<\/ul>\n<p>\nAko to obvykle prebieha: m\u00e1me slu\u017ebu, ktor\u00e1 posiela d\u00e1ta na zbernicu. Pr\u00eddeme do tejto slu\u017eby a po\u017eiada\u0165 ju, aby n\u00e1m povedala o jej integra\u010dnom zdrav\u00ed. A ak slu\u017eba mus\u00ed posla\u0165 nejak\u00fa spr\u00e1vu \u010falej (WebApp), tak t\u00fato testovaciu spr\u00e1vu po\u0161le. Ak v\u0161ak dotiahujeme slu\u017ebu na strane OrderProcessing, najprv posiela to, \u010do m\u00f4\u017ee posla\u0165 nez\u00e1visle, a ak existuj\u00fa nejak\u00e9 z\u00e1visl\u00e9 veci - \u010d\u00edta zo zbernice s\u00fabor testovac\u00edch spr\u00e1v, pochop\u00ed, \u010do m\u00f4\u017ee spracova\u0165, ozn\u00e1mi to a, ak je to potrebn\u00e9, posiela ich \u010falej a hovor\u00ed o tom - v\u0161etko v poriadku, som \u017eiv\u00fd. <\/p>\n<p>Ve\u013emi \u010dasto po\u010dujeme ot\u00e1zku \u201eako m\u00f4\u017eeme testova\u0165 na re\u00e1lnych d\u00e1tach?\u201c Napr\u00edklad ide o t\u00fa ist\u00fa slu\u017ebu objedn\u00e1vok. Objedn\u00e1vka posiela spr\u00e1vy do skladu, kde s\u00fa tovaru odpo\u010d\u00edtan\u00e9: nem\u00f4\u017eeme to testova\u0165 na re\u00e1lnych d\u00e1tach, preto\u017ee \u201eprodukty sa mi bud\u00fa odpo\u010d\u00edtava\u0165!\u201c Rie\u0161enie: v po\u010diato\u010dnej f\u00e1ze napl\u00e1nova\u0165 cel\u00fd tento test. Predsa m\u00e1te unit testy, ktor\u00e9 robia mocky. Tak\u017ee, urobte to na hlb\u0161ej \u00farovni, kde v\u00e1m prebieha komunika\u010dn\u00fd kan\u00e1l, ktor\u00fd neohroz\u00ed fungovanie podnikania. <\/p>\n<h3>\u00darove\u0148 infra\u0161trukt\u00fary<\/h3>\n<p>\nMonitorovanie infra\u0161trukt\u00fary \u2013 to je u\u017e d\u00e1vno pova\u017eovan\u00e9 za samotn\u00e9 monitorovanie. <\/p>\n<ul>\n<li>Monitorovanie infra\u0161trukt\u00fary je mo\u017en\u00e9 a treba spusti\u0165 ako samostatn\u00fd proces.<\/li>\n<li>Nepo\u010d\u00edta sa za\u010d\u00edna\u0165 s monitorovan\u00edm infra\u0161trukt\u00fary na funguj\u00facom projekte, aj ke\u010f to ve\u013emi l\u00e1ka. To je probl\u00e9m pre v\u0161etk\u00fdch devops. \u201eNajprv monitorujem klaster, monitorujem infra\u0161trukt\u00faru\u201c \u2013 t.j. najprv sa monitoruje to, \u010do je na spodku, a do aplik\u00e1cie sa nepozer\u00e1. Preto\u017ee aplik\u00e1cia je pre devopsa nejasn\u00e1. Dostali to a nerozumej\u00fa, ako to funguje. A infra\u0161trukt\u00faru ch\u00e1pe a za\u010d\u00edna od nej. Ale nie \u2013 v\u017edy je potrebn\u00e9 na za\u010diatku monitorova\u0165 aplik\u00e1ciu. <\/li>\n<li>Nepreh\u00e1\u0148ajte to s po\u010dtom upozornen\u00ed. Vzh\u013eadom na zlo\u017eitosti modern\u00fdch syst\u00e9mov, upozornenia prich\u00e1dzaj\u00fa neust\u00e1le a s touto hromadou upozornen\u00ed treba nejako \u017ei\u0165. A \u010dlovek on-call, ke\u010f sa pozrie na stovku \u010fal\u0161\u00edch upozornen\u00ed, si povie \u201enechcem nad t\u00fdm rozm\u00fd\u0161\u013ea\u0165\u201c. Upozornenia by mali informova\u0165 len o kritick\u00fdch veciach. <\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00darove\u0148 aplik\u00e1cie ako obchodnej jednotky<\/h3>\n<p>\nK\u013e\u00fa\u010dov\u00e9 body:<\/p>\n<ul>\n<li>ELK. To je priemyseln\u00fd \u0161tandard. Ak z nejak\u00e9ho d\u00f4vodu nezlu\u010dujete logy, okam\u017eite s t\u00fdm za\u010dnite.<\/li>\n<li>APM. Extern\u00e9 APM ako sp\u00f4sob r\u00fdchlo uzavrie\u0165 monitorovanie aplik\u00e1cie (NewRelic, BlackFire, Datadog). M\u00f4\u017eete do\u010dasne nasadi\u0165 tento n\u00e1stroj, aby ste mali aspo\u0148 nie\u010do o tom, \u010do sa u v\u00e1s deje. <\/li>\n<li>Tracing. V desiatkach mikroslu\u017eieb mus\u00edte v\u0161etko sledova\u0165, preto\u017ee po\u017eiadavka u\u017e ne\u017eije sama o sebe. Nesk\u00f4r je ve\u013emi \u0165a\u017ek\u00e9 prid\u00e1va\u0165, preto je lep\u0161ie hne\u010f napl\u00e1nova\u0165 sledovanie pri v\u00fdvoji \u2013 je to pr\u00e1ca a n\u00e1stroj v\u00fdvoj\u00e1rov. Ak ste to e\u0161te nezaviedli \u2013 zav\u00e1dzajte! Pozrite sa na Jaeger\/Zipkin<\/li>\n<\/ul>\n<p><\/p>\n<h3>Upozor\u0148ovanie<\/h3>\n<p><\/p>\n<ul>\n<li>Organiz\u00e1cia syst\u00e9mu upozornen\u00ed: v podmienkach monitorovania mno\u017estva vec\u00ed by mala existova\u0165 jednotn\u00e1 syst\u00e9m zasielania upozornen\u00ed. M\u00f4\u017ee to by\u0165 v Grafane. Na Z\u00e1pade v\u0161etci pou\u017e\u00edvaj\u00fa PagerDuty. Upozornenia by mali by\u0165 zrozumite\u013en\u00e9 (napr\u00edklad, odkia\u013e pri\u0161li...). A bolo by dobr\u00e9 kontrolova\u0165, \u010di upozornenia v\u00f4bec prich\u00e1dzaj\u00fa. <\/li>\n<li>Organiz\u00e1cia syst\u00e9mu pohotovost\u00ed: upozornenia by nemali prich\u00e1dza\u0165 v\u0161etk\u00fdm (alebo sa v\u0161etci zhlukn\u00fa do reakcie, alebo nikto nebude reagova\u0165). On-call musia by\u0165 aj v\u00fdvoj\u00e1ri: ur\u010dite definujte oblasti zodpovednosti, vypracujte jasn\u00fd n\u00e1vod a v \u0148om presne uve\u010fte, komu presne telefonova\u0165 v pondelok a stredu, a komu \u2014 v utorok a piatok (inak nebud\u00fa nikomu telefonova\u0165 ani v pr\u00edpade v\u00e1\u017enej nehody \u2014 boja sa prebudi\u0165, vyru\u0161i\u0165: \u013eudia vo v\u0161eobecnosti nemaj\u00fa radi, ke\u010f musia budova\u0165 in\u00fdch, najm\u00e4 v noci). A vysvetlite, \u017ee po\u017eiada\u0165 o pomoc nie je znak nekompetentnosti (\u201e\u017eiadam o pomoc \u2014 znamen\u00e1 to, \u017ee som zl\u00fd zamestnanec\u201c), povzbudzujte \u017eiadosti o pomoc.<\/li>\n<li>Organiz\u00e1cia \u201ez\u00e1kladne poznatkov\u201c a workflow spracovania incidentov: na ka\u017ed\u00fd v\u00e1\u017eny incident by mal by\u0165 napl\u00e1novan\u00fd postmortem, ako do\u010dasn\u00e9 opatrenie by mali by\u0165 zdokumentovan\u00e9 kroky, ktor\u00e9 vyrie\u0161ia incident. A zave\u010fte prax, \u017ee opakuj\u00face sa upozornenia s\u00fa hriech; mali by sa opravova\u0165 v k\u00f3de alebo infra\u0161trukt\u00farnych pr\u00e1cach. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Technologick\u00fd stack<\/h3>\n<p>\nPredstavme si, \u017ee n\u00e1\u0161 stack je nasledovn\u00fd: <\/p>\n<ul>\n<li>zbieranie \u00fadajov \u2014 Prometheus + Grafana;<\/li>\n<li>anal\u00fdza logov \u2014 ELK;<\/li>\n<li>pre APM alebo Tracing \u2014 Jaeger (Zipkin).<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Monitorovanie m\u0155tvych? \u2014 Nech \u017eije monitorovanie\" src=\"\/wp-content\/uploads\/2019\/04\/af26d3c0ba781cd856d220515788b5eb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00fdber mo\u017enost\u00ed nie je kritick\u00fd. Preto\u017ee ak ste na za\u010diatku pochopili, ako monitorova\u0165 syst\u00e9m a napl\u00e1novali ste pl\u00e1n, potom u\u017e za\u010dnete vybera\u0165 n\u00e1stroje pod\u013ea svojich po\u017eiadaviek. Ot\u00e1zka je v tom, \u010do ste sa rozhodli monitorova\u0165 najprv. Preto\u017ee n\u00e1stroj, ktor\u00fd ste si vybrali na za\u010diatku \u2014 v\u00f4bec nemus\u00ed vyhovova\u0165 va\u0161im po\u017eiadavk\u00e1m. <\/p>\n<p>Nieko\u013eko technick\u00fdch aspektov, ktor\u00e9 vid\u00edm v\u0161ade v poslednom \u010dase:<\/p>\n<p><i>Prometheus s\u00fa nasadzovan\u00fd dovn\u00fatra Kubernetes \u2014 kto to vymyslel?!<\/i> Ak v\u00e1m padne klastra, \u010do budete robi\u0165? Ak m\u00e1te zlo\u017eit\u00fd klaster vo vn\u00fatri, mala by fungova\u0165 nejak\u00e1 monitorovacia syst\u00e9m vo vn\u00fatri klastra, a nejak\u00e1 \u2014 z vonku, ktor\u00e1 bude zbiera\u0165 d\u00e1ta z vn\u00fatra klastra. <\/p>\n<p><i>Vo vn\u00fatri klastra zbierame logy a v\u0161etko ostatn\u00e9.<\/i> Ale monitorovac\u00ed syst\u00e9m by mal by\u0165 umiestnen\u00fd zvonku. Ve\u013emi \u010dasto v clustri, kde je Prometheus nain\u0161talovan\u00fd dovn\u00fatra, s\u00fa z\u00e1rove\u0148 aj syst\u00e9my, ktor\u00e9 vykon\u00e1vaj\u00fa extern\u00e9 kontroly fungovania webovej str\u00e1nky. A \u010do ak v\u00e1m padli spojenia do vonkaj\u0161ieho sveta a aplik\u00e1cia nefunguje? Vn\u00fatri m\u00e1te v\u0161etko v poriadku, ale pou\u017e\u00edvate\u013eom to nijako nepom\u00e1ha.<\/p>\n<h3>Zhrnutie<\/h3>\n<p><\/p>\n<ul>\n<li>V\u00fdvoj monitorovania nie je in\u0161tal\u00e1cia util\u00edt, ale v\u00fdvoj softv\u00e9rov\u00e9ho produktu. 98% dne\u0161n\u00e9ho monitorovania je k\u00f3dovanie. K\u00f3dovanie v slu\u017eb\u00e1ch, k\u00f3dovanie extern\u00fdch kontrol, kontroly extern\u00fdch slu\u017eieb, a v\u0161etk\u00e9ho mo\u017en\u00e9ho. <\/li>\n<li>Ne\u0161etrte \u010das program\u00e1torov na monitorovanie: m\u00f4\u017ee to zabra\u0165 a\u017e 30% ich pr\u00e1ce, ale stoj\u00ed to za to.<\/li>\n<li>DevOps, nebojte sa, \u017ee sa v\u00e1m nedar\u00ed nie\u010do monitorova\u0165, preto\u017ee niektor\u00e9 veci vy\u017eaduj\u00fa \u00faplne in\u00fd sp\u00f4sob myslenia. Neboli ste program\u00e1torom a pr\u00e1ca monitorovania je pr\u00e1ve ich \u00falohou.<\/li>\n<li>Ak projekt u\u017e funguje a nie je monitorovan\u00fd (a ste mana\u017e\u00e9r) \u2014 vy\u010dle\u0148te prostriedky na monitorovanie.<\/li>\n<li>Ak je produkt u\u017e v prev\u00e1dzke a ste devops, ktor\u00e9mu povedali \u201enastavi\u0165 monitorovanie\u201c \u2014 pok\u00faste sa vysvetli\u0165 vedeniu to, o \u010dom som to v\u0161etko nap\u00edsal.<\/li>\n<\/ul>\n<p>\n<i>Toto je roz\u0161\u00edren\u00e1 verzia prezent\u00e1cie na konferencii Saint Highload++.<\/i><\/p>\n<p>Ak v\u00e1s zauj\u00edmaj\u00fa moje my\u0161lienky a \u00favahy na t\u00e9mu IT a okolo nej, m\u00f4\u017eete si pozrie\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/eapotapov_channel\">kan\u00e1l <\/a><\/noindex>\ud83d\ude42<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/448602\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441 2008 \u0433\u043e\u0434\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0438 \u043a\u0440\u0443\u0433\u043b\u043e\u0441\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432: \u0443 \u043d\u0430\u0441 \u0431\u043e\u043b\u0435\u0435 400 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u044d\u0442\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 15% \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043c\u0435\u0440\u0446\u0438\u0438 \u0420\u043e\u0441\u0441\u0438\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u0430\u0434\u0430\u0435\u0442, \u043c\u044b \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 15 \u043c\u0438\u043d\u0443\u0442 \u044d\u0442\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c. \u041d\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0430\u0432\u0430\u0440\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430, \u043d\u0443\u0436\u043d\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23731,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31864","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043c\u0451\u0440\u0442\u0432? \u2014 \u0414\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:43:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:43:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Monitorovanie m\u0155tve? \u2014 Nech \u017eije monitorovanie | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043c\u0451\u0440\u0442\u0432? \u2014 \u0414\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 | ProHoster","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:43:33+00:00","article:modified_time":"2019-10-31T18:43:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31864","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 17:01:09","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:09:27","updated":"2026-02-09 17:01:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/31864","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=31864"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/31864\/revisions"}],"predecessor-version":[{"id":158558,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/31864\/revisions\/158558"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/23731"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=31864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=31864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=31864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}