{"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\/ro\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring","title":{"rendered":"Monitorizarea e moart\u0103? \u2014 Tr\u0103iasc\u0103 monitorizarea","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Monitorizarea e moart\u0103? \u2014 Tr\u0103iasc\u0103 monitorizarea\" src=\"\/wp-content\/uploads\/2019\/04\/13453bb7025a6bf3d1c7a3dc6d038d16.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCompania noastr\u0103 se ocup\u0103 cu managementul infrastructurilor \u0219i suportul tehnic 24\/7 pentru proiecte web \u00eenc\u0103 din 2008: avem peste 400 de clien\u021bi, reprezent\u00e2nd aproximativ 15% din comer\u021bul electronic din Rusia. Prin urmare, arhitectura suportat\u0103 este foarte divers\u0103. Dac\u0103 ceva cedeaz\u0103, trebuie s\u0103 repar\u0103m \u00een termen de 15 minute. Dar pentru a \u00een\u021belege c\u0103 a avut loc o avarie, este necesar s\u0103 monitoriz\u0103m proiectul \u0219i s\u0103 reac\u021bion\u0103m la incidente. Dar cum facem acest lucru? <\/p>\n<p>Consider c\u0103 \u00een cadrul organiza\u021biei, o sistem\u0103 de monitorizare corect\u0103 este crucial\u0103. Dac\u0103 nu ar exista probleme, discursul meu ar consta \u00eentr-o singur\u0103 teza: \u201eV\u0103 rog, instala\u021bi Prometheus + Grafana \u0219i pluginurile 1, 2, 3\u201d. Din p\u0103cate, acum nu mai func\u021bioneaz\u0103 a\u0219a. Problema principal\u0103 este c\u0103 toat\u0103 lumea continu\u0103 s\u0103 cread\u0103 \u00een ceva care a existat \u00een 2008, din perspectiva componentelor software. <\/p>\n<p>\u00cen ceea ce prive\u0219te organizarea sistemului de monitorizare, \u00eemi asum riscul de a spune c\u0103\u2026 nu exist\u0103 proiecte cu monitorizare competent\u0103. Situa\u021bia este at\u00e2t de grav\u0103 c\u0103, dac\u0103 ceva cedeaz\u0103, exist\u0103 riscul ca acest lucru s\u0103 r\u0103m\u00e2n\u0103 neobservat \u2013 toat\u0103 lumea este convins\u0103 c\u0103 \u201etotul este monitorizat\u201d.<br \/>\nEste posibil ca totul s\u0103 fie monitorizat. Dar cum? <\/p>\n<p>To\u021bi ne-am \u00eent\u00e2lnit cu o poveste asem\u0103n\u0103toare: un devops sau un administrator lucreaz\u0103, iar echipa de dezvoltatori vine \u0219i spune \u2013 \u201eAm lansat, acum monitorizeaz\u0103\u201d. Ce s\u0103 monitorizez? Cum func\u021bioneaz\u0103?<\/p>\n<p>Bine. Monitoriz\u0103m pe vechiul sistem. Dar acesta s-a schimbat, \u0219i ne d\u0103m seama c\u0103 monitorizam serviciul A, care a devenit serviciul B, care interac\u021bioneaz\u0103 cu serviciul C. Dar echipa de dezvoltatori \u00ee\u021bi spune: \u201eInstaleaz\u0103 software-ul, trebuie s\u0103 monitorizeze tot!\u201d<\/p>\n<p>A\u0219a c\u0103, ce s-a schimbat? \u2013 Totul s-a schimbat!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Anul 2008. Totul era minunat.<\/h4>\n<p>\nExist\u0103 c\u00e2\u021biva dezvoltatori, un server, un server de baze de date. De aici \u00eencepe totul. Avem o informa\u021bie oarecare, instal\u0103m zabbix, Nagios, cacti. Apoi configur\u0103m alerte clare pentru CPU, activitatea hard disk-urilor, spa\u021biul pe disk. Facem c\u00e2teva verific\u0103ri manuale, cum ar fi c\u0103 site-ul r\u0103spunde, c\u0103 comenzile ajung \u00een baza de date. \u0218i asta e tot \u2013 suntem mai mult sau mai pu\u021bin proteja\u021bi. <\/p>\n<p>Compar\u00e2nd volumul de munc\u0103 pe care un administrator \u00eel realiza pentru a asigura monitorizarea, 98% din aceasta era automat\u0103: persoana care se ocup\u0103 de monitorizare trebuie s\u0103 \u00een\u021beleag\u0103 cum s\u0103 instaleze Zabbix, s\u0103-l configureze \u0219i s\u0103 seteze alertele. Iar 2% sunt pentru verific\u0103rile externe: dac\u0103 site-ul r\u0103spunde \u0219i face cereri c\u0103tre baza de date, dac\u0103 au venit noi comenzi.<\/p>\n<p><img decoding=\"async\" alt=\"Monitorizarea e moart\u0103? \u2014 Tr\u0103iasc\u0103 monitorizarea\" src=\"\/wp-content\/uploads\/2019\/04\/3563dda4d025fd18200d6410d7d065ed.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h4>2010. Cre\u0219te sarcina de lucru<\/h4>\n<p>\n\u00cencepem s\u0103 scal\u0103m serverele web, ad\u0103ug\u0103m un motor de c\u0103utare. Vrem s\u0103 ne asigur\u0103m c\u0103 catalogul de produse con\u021bine toate produsele. \u0218i c\u0103 c\u0103utarea produselor func\u021bioneaz\u0103. C\u0103 baza de date func\u021bioneaz\u0103, c\u0103 comenzile sunt procesate, c\u0103 site-ul r\u0103spunde extern \u0219i r\u0103spunde din diverse <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/server\/\"   title=\"servere\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1314\">servere<\/a> \u0219i utilizatorul nu este deconectat de pe site, \u00een timp ce acesta este rebalansat pe un alt server, etc. Num\u0103rul entit\u0103\u021bilor cre\u0219te. <\/p>\n<p>\u00cens\u0103 entitatea legat\u0103 de infrastructur\u0103 r\u0103m\u00e2ne \u00een continuare cea mai mare \u00een mintea managerului. Ideea c\u0103 persoana care se ocup\u0103 de monitorizare este aceea care va instala Zabbix \u0219i va putea s\u0103-l configureze r\u0103m\u00e2ne \u00een continuare.<\/p>\n<p>\u00cens\u0103 apar \u0219i sarcini legate de efectuarea de verific\u0103ri externe, crearea unui set de scripturi pentru cererile motorului de c\u0103utare, un set de scripturi pentru a verifica dac\u0103 c\u0103utarea se schimb\u0103 pe parcursul index\u0103rii, un set de scripturi care verific\u0103 dac\u0103 produsele sunt transmise serviciului de livrare, etc.<\/p>\n<p><img decoding=\"async\" alt=\"Monitorizarea e moart\u0103? \u2014 Tr\u0103iasc\u0103 monitorizarea\" src=\"\/wp-content\/uploads\/2019\/04\/afa94a3156a24a81ab359b430341f27d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nObserva\u021bi: am scris de 3 ori \u00abset de scripturi\u00bb. Adic\u0103 persoana responsabil\u0103 de monitorizare nu mai este doar cea care instaleaz\u0103 Zabbix. Este cineva care \u00eencepe s\u0103 codeze. Dar \u00een mintea echipei \u00eenc\u0103 nu s-au petrecut schimb\u0103ri. <\/p>\n<p>\u00cen schimb, lumea se schimb\u0103, devenind din ce \u00een ce mai complex\u0103. Se adaug\u0103 un strat de virtualizare, mai multe sisteme noi. Acestea \u00eencep s\u0103 interac\u021bioneze \u00eentre ele. Cine a spus \u201ese simte a microservicii?\u201d Dar fiecare serviciu \u00eenc\u0103 arat\u0103 ca un site de sine st\u0103t\u0103tor. Putem s\u0103 ne adres\u0103m lui \u0219i s\u0103 \u00een\u021belegem c\u0103 ofer\u0103 informa\u021biile necesare \u0219i func\u021bioneaz\u0103 de la sine. \u0218i dac\u0103 e\u0219ti administrator, dedicat unui proiect care evolueaz\u0103 timp de 5-7-10 ani, aceste cuno\u0219tin\u021be se acumuleaz\u0103: apare un nou nivel \u2014 l-ai con\u0219tientizat, apare un alt nivel \u2014 l-ai con\u0219tientizat\u2026 <\/p>\n<p><img decoding=\"async\" alt=\"Monitorizarea e moart\u0103? \u2014 Tr\u0103iasc\u0103 monitorizarea\" src=\"\/wp-content\/uploads\/2019\/04\/3578182594d012732afde7849b75322a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDar rar cineva \u00eentre\u021bine un proiect timp de 10 ani.<\/p>\n<h3>Rezumat monitorizare<\/h3>\n<p>\nS\u0103 presupunem c\u0103 ai ajuns \u00eentr-un nou startup care a angajat imediat 20 de dezvoltatori, a creat 15 microservicii, iar tu e\u0219ti administratorul c\u0103ruia i se spune: \u201eConstruie\u0219te CI\/CD. Te rog.\u201d Ai construit CI\/CD \u0219i, brusc, auzi: \u201eNe este greu s\u0103 lucr\u0103m cu produc\u021bia \u00een \u201ekub\u201d, f\u0103r\u0103 s\u0103 \u00een\u021belegem cum va func\u021biona aplica\u021bia \u00een el. F\u0103-ne un sandbox \u00een acest acela\u0219i \u201ekub\u201d.<br \/>\n Faci un sandbox \u00een acest kub. Imediat \u021bi se spune: \u201eVrem o baz\u0103 de date de stage, care s\u0103 se actualizeze zilnic din produc\u021bie, pentru a \u00een\u021belege c\u0103 acest lucru func\u021bioneaz\u0103 pe baza de date, dar f\u0103r\u0103 a afecta baza de date de produc\u021bie.\u201d<\/p>\n<p>Tu tr\u0103ie\u0219ti \u00een toate acestea. Mai sunt 2 s\u0103pt\u0103m\u00e2ni p\u00e2n\u0103 la lansare, \u0219i \u021bi se spune: \u201eAcum trebuie s\u0103 monitoriz\u0103m totul...\u201d Adic\u0103, s\u0103 monitoriz\u0103m infrastructura cluster, s\u0103 monitoriz\u0103m arhitectura microserviciilor, s\u0103 monitoriz\u0103m interac\u021biunea cu serviciile externe... <\/p>\n<p>Iar colegii scot din cap schema obi\u0219nuit\u0103 \u0219i spun: \u201eDar aici totul este clar! Pune un program care s\u0103 monitorizeze totul.\u201d Da-da: Prometheus + Grafana + pluginuri. <br \/>\n\u0218i adaug\u0103 pe deasupra: \u201eAi dou\u0103 s\u0103pt\u0103m\u00e2ni, f\u0103 s\u0103 fie totul sigur.\u201d<\/p>\n<p>\u00cen multele proiecte pe care le vedem, pe monitorizare este desemnat\u0103 o singur\u0103 persoan\u0103. Imagineaz\u0103-\u021bi c\u0103 vrem s\u0103 angaj\u0103m pe cineva pentru 2 s\u0103pt\u0103m\u00e2ni, care s\u0103 se ocupe de monitorizare, \u0219i \u00eei facem un CV. Ce abilit\u0103\u021bi ar trebui s\u0103 aib\u0103 aceast\u0103 persoan\u0103, av\u00e2nd \u00een vedere tot ce am spus p\u00e2n\u0103 acum?<\/p>\n<ul>\n<li>Trebuie s\u0103 \u00een\u021beleag\u0103 monitorizarea \u0219i specificul func\u021bion\u0103rii infrastructurii hardware.<\/li>\n<li>Trebuie s\u0103 cunoasc\u0103 specificul monitoriz\u0103rii Kubernetes (toat\u0103 lumea vrea \u00een \u201ekub\u201d, deoarece se poate abstractiza de tot, poate s\u0103 se ascund\u0103, c\u0103ci administratorul se va ocupa de rest) \u2013 infrastructura sa \u0219i s\u0103 \u0219tie cum s\u0103 monitorizeze aplica\u021biile din interior.<\/li>\n<li>Trebuie s\u0103 \u00een\u021beleag\u0103 c\u0103 serviciile comunic\u0103 \u00eentre ele \u00eentr-un mod special \u0219i s\u0103 cunoasc\u0103 specificitatea interac\u021biunii dintre acestea. Este complet real s\u0103 vezi un proiect \u00een care unele servicii comunic\u0103 sincron, deoarece nu se poate altfel. De exemplu, backend-ul merge prin REST, prin gRPC la serviciul catalog, prime\u0219te lista de produse \u0219i se returneaz\u0103 \u00eenapoi. Nu po\u021bi a\u0219tepta aici. Iar cu celelalte servicii, lucreaz\u0103 asincron. Trimi\u021bi o comand\u0103 la serviciul de livrare, trimi\u021bi un e-mail etc.<br \/>\nProbabil c\u0103 deja ai obosit de toate acestea? Dar administratorul care trebuie s\u0103 monitorizeze, a obosit \u0219i mai mult. <\/li>\n<li>El trebuie s\u0103 fie capabil s\u0103 planifice \u0219i s\u0103 planifice corect \u2013 deoarece volumul de munc\u0103 devine din ce \u00een ce mai mare. <\/li>\n<li>Prin urmare, el trebuie s\u0103 dezvolte o strategie pentru serviciul creat, pentru a \u00een\u021belege cum s\u0103-l monitorizeze \u00een mod specific. Are nevoie de cuno\u0219tin\u021be despre arhitectura proiectului \u0219i evolu\u021bia sa, precum \u0219i de \u00een\u021belegerea tehnologiilor utilizate \u00een dezvoltare. <\/li>\n<\/ul>\n<p>\nS\u0103 ne amintim un caz absolut normal: o parte din servicii sunt pe php, o alt\u0103 parte pe Go, \u0219i o parte pe JS. Acestea func\u021bioneaz\u0103 \u00eentre ele \u00eentr-un fel. De aici provine termenul \u201emicroserviciu\u201d: au ap\u0103rut at\u00e2t de multe sisteme separate, \u00eenc\u00e2t dezvoltatorii nu pot \u00een\u021belege proiectul \u00een ansamblu. O parte din echip\u0103 scrie servicii pe JS, care func\u021bioneaz\u0103 de sine st\u0103t\u0103tor \u0219i nu \u0219tiu cum func\u021bioneaz\u0103 restul sistemului. Cealalt\u0103 parte scrie servicii pe Python \u0219i nu se implic\u0103 \u00een modul \u00een care func\u021bioneaz\u0103 celelalte servicii, fiind izolate \u00een domeniul lor. A treia parte scrie servicii pe php sau alte tehnologii. <br \/>\nTo\u021bi ace\u0219ti 20 de oameni sunt \u00eemp\u0103r\u021bi\u021bi \u00een 15 servicii, \u0219i exist\u0103 doar un singur administrator care trebuie s\u0103 \u00een\u021beleag\u0103 totul. Stop! Abia am \u00eemp\u0103r\u021bit sistemul \u00een 15 microservicii, pentru c\u0103 20 de oameni nu pot \u00een\u021belege \u00eentreaga sistem. <\/p>\n<p>Dar trebuie cumva monitorizat...<\/p>\n<p>Ce urmeaz\u0103? La final, exist\u0103 o persoan\u0103 care reu\u0219e\u0219te s\u0103 \u00een\u021beleag\u0103 tot ceea ce o echip\u0103 \u00eentreag\u0103 de dezvoltatori nu poate percepe, \u0219i \u00een acela\u0219i timp, el trebuie s\u0103 \u0219tie \u0219i s\u0103 fie capabil s\u0103 \u00eendeplineasc\u0103 ceea ce am men\u021bionat mai sus \u2013 infrastructura hardware, infrastructura Kubernetes etc.<\/p>\n<p>Ce s\u0103 mai spunem... Houston, avem o problem\u0103.<\/p>\n<h3>Monitorizarea unui proiect software modern este un proiect software \u00een sine.<\/h3>\n<p>\nDin falsa convingere c\u0103 monitorizarea este un software, ajungem s\u0103 credem \u00een minuni. \u0218i minuni, din p\u0103cate, nu exist\u0103. Nu po\u021bi instala Zabbix \u0219i a\u0219tepta s\u0103 func\u021bioneze totul. Nu are sens s\u0103 instalezi Grafana \u0219i s\u0103 speri c\u0103 totul va fi bine. Mai mult de 90% din timp va fi dedicat organiz\u0103rii verific\u0103rilor func\u021bion\u0103rii serviciilor \u0219i interac\u021biunii dintre acestea, verifica\u021bi cum func\u021bioneaz\u0103 sistemele externe. De fapt, majoritatea timpului se va duce nu pe scrierea scripturilor, ci pe dezvoltarea software-ului. \u0218i acest lucru ar trebui s\u0103 fie realizat de o echip\u0103 care \u00een\u021belege func\u021bionarea proiectului. <br \/>\nDac\u0103, \u00een aceast\u0103 situa\u021bie, o singur\u0103 persoan\u0103 este l\u0103sat\u0103 cu monitorizarea, va avea loc o catastrof\u0103. A\u0219a cum se \u00eent\u00e2mpl\u0103 \u00een toat\u0103 lumea.<\/p>\n<p>De exemplu, exist\u0103 mai multe servicii care comunic\u0103 \u00eentre ele prin Kafka. A sosit o comand\u0103, am trimis mesajul despre comand\u0103 \u00een Kafka. Exist\u0103 un serviciu care ascult\u0103 informa\u021biile despre comand\u0103 \u0219i gestioneaz\u0103 livrarea bunurilor. Exist\u0103 un alt serviciu care ascult\u0103 informa\u021biile despre comand\u0103 \u0219i trimite un e-mail utilizatorului. Apoi apar \u00eenc\u0103 o mul\u021bime de servicii \u0219i \u00eencepem s\u0103 ne amestec\u0103m.<\/p>\n<p>\u0218i dac\u0103 mai oferi\u021bi asta administratorului \u0219i dezvoltatorilor \u00een etapa \u00een care a mai r\u0103mas pu\u021bin timp p\u00e2n\u0103 la lansare, va trebui ca persoana s\u0103 \u00een\u021beleag\u0103 \u00eentregul protocol. Adic\u0103, un proiect de o asemenea amploare dureaz\u0103 semnificativ timp, iar \u00een dezvoltarea sistemului trebuie s\u0103 se \u021bin\u0103 cont de acest aspect. <br \/>\nDar foarte des, \u00een special \u00een contextul startup-urilor, vedem cum monitorizarea este am\u00e2nat\u0103. \u201eAcum vom face un Proof of Concept, vom lansa cu el, s\u0103 se pr\u0103bu\u0219easc\u0103 \u2013 suntem dispu\u0219i s\u0103 facem sacrificii. Apoi vom monitoriza totul\u201d. C\u00e2nd (sau dac\u0103) proiectul \u00eencepe s\u0103 aduc\u0103 bani, afacerea vrea s\u0103 dezvolte \u0219i mai multe func\u021bionalit\u0103\u021bi \u2014 pentru c\u0103 a \u00eenceput s\u0103 func\u021bioneze, deci trebuie s\u0103 continu\u0103m! \u0218i v\u0103 afla\u021bi \u00een punctul \u00een care, mai \u00eent\u00e2i, trebuie s\u0103 monitoriza\u021bi tot ce a fost anterior, ceea ce nu dureaz\u0103 1% din timp, ci semnificativ mai mult. \u0218i, de altfel, pentru monitorizare vor fi necesari dezvoltatori, iar este mai u\u0219or s\u0103-i direc\u021biona\u021bi spre noi func\u021bionalit\u0103\u021bi. \u00cen cele din urm\u0103, se scriu noi func\u021bionalit\u0103\u021bi, totul se complic\u0103, \u0219i v\u0103 afla\u021bi \u00eentr-un deadlock nesf\u00e2r\u0219it.<\/p>\n<p>Cum pute\u021bi monitoriza un proiect, \u00eencep\u00e2nd de la \u00eenceput, \u0219i ce trebuie s\u0103 face\u021bi dac\u0103 a\u021bi primit un proiect care trebuie monitorizat, dar nu \u0219ti\u021bi cu ce s\u0103 \u00eencepe\u021bi?<\/p>\n<p>\u00cen primul r\u00e2nd, trebuie s\u0103 planifica\u021bi. <\/p>\n<p><i>O digresiune liric\u0103: foarte des se \u00eencepe cu monitorizarea infrastructurii. De exemplu, avem Kubernetes. Vom \u00eencepe prin a instala Prometheus cu Grafana, vom ad\u0103uga plugin-uri pentru monitorizarea \u201ekubectl\u201d. Nu doar dezvoltatorii, ci \u0219i administratorii au o practic\u0103 nepl\u0103cut\u0103: \u201eVom instala acest plugin, iar pluginul probabil \u0219tie cum s\u0103 fac\u0103 asta\u201d. Oamenii prefer\u0103 s\u0103 \u00eenceap\u0103 cu lucruri simple \u0219i clare, nu cu ac\u021biuni importante. \u0218i monitorizarea infrastructurii este o ac\u021biune simpl\u0103.<\/i><\/p>\n<p>Pentru \u00eenceput, decide\u021bi ce \u0219i cum dori\u021bi s\u0103 monitoriza\u021bi, apoi alege\u021bi instrumentul, deoarece alte persoane nu pot g\u00e2ndi pentru voi. \u0218i ar trebui s\u0103 o fac\u0103? Alte persoane s-au g\u00e2ndit pentru ele \u00eensele, la un sistem universal \u2014 sau deloc, c\u00e2nd acest plugin a fost scris. \u0218i c\u0103 acest plugin are 5000 de utilizatori nu \u00eenseamn\u0103 c\u0103 aduce vreo valoare. Poate c\u0103 ve\u021bi deveni 5001, doar pentru c\u0103 au fost anterior 5000 de oameni. <\/p>\n<p>Dac\u0103 a\u021bi \u00eenceput s\u0103 monitoriza\u021bi infrastructura \u0219i backend-ul aplica\u021biei dumneavoastr\u0103 nu mai r\u0103spunde, to\u021bi utilizatorii vor pierde conexiunea cu aplica\u021bia mobil\u0103. Va ap\u0103rea o eroare. Oamenii vor veni la voi \u0219i vor spune: \u00abAplica\u021bia nu func\u021bioneaz\u0103, cu ce v\u0103 ocupa\u021bi?\u00bb \u2014 \u00abMonitoriz\u0103m.\u00bb \u2014 \u00abCum monitoriza\u021bi dac\u0103 nu vede\u021bi c\u0103 aplica\u021bia nu func\u021bioneaz\u0103?!\u00bb <\/p>\n<ol>\n<li>Consider c\u0103 trebuie s\u0103 \u00eencepe\u021bi monitorizarea exact de la punctul de intrare al utilizatorului. Dac\u0103 utilizatorul nu vede c\u0103 aplica\u021bia func\u021bioneaz\u0103 \u2014 totul este pierdut, aceasta este o e\u0219ec. \u0218i sistemul de monitorizare ar trebui s\u0103 ofere o alert\u0103 cu privire la acest lucru \u00eenainte de toate. <\/li>\n<li>\u0218i apoi putem monitoriza infrastructura. Sau putem face acest lucru \u00een paralel. Monitorizarea infrastructurii este mai simpl\u0103 \u2014 aici putem, \u00een sf\u00e2r\u0219it, s\u0103 instal\u0103m Zabbix. <\/li>\n<li>\u0218i acum trebuie s\u0103 mergem \u00een r\u0103d\u0103cinile aplica\u021biei pentru a \u00een\u021belege unde nu func\u021bioneaz\u0103 lucrurile.<\/li>\n<\/ol>\n<p>\nIdeea mea principal\u0103 este c\u0103 monitorizarea ar trebui s\u0103 mearg\u0103 \u00een paralel cu procesul de dezvoltare. Dac\u0103 a\u021bi desprins echipa de monitorizare pentru alte sarcini (crearea CI\/CD, medii sandbox, reorganizarea infrastructurii), monitorizarea va \u00eencepe s\u0103 \u00eent\u00e2rzie \u0219i este posibil s\u0103 nu recupera\u021bi niciodat\u0103 dezvoltarea (sau, mai devreme sau mai t\u00e2rziu, va trebui s\u0103 o opri\u021bi).<\/p>\n<h3>Totul pe niveluri<\/h3>\n<p>\nIat\u0103 cum v\u0103d organizarea sistemului de monitorizare.<\/p>\n<p>1) Nivelul aplica\u021biei:<\/p>\n<ul>\n<li>monitorizarea logica de afaceri a aplica\u021biei;<\/li>\n<li>monitorizarea metricilor de s\u0103n\u0103tate ale serviciilor;<\/li>\n<li>monitorizarea integr\u0103rii.<\/li>\n<\/ul>\n<p>\n2) Nivelul infrastructurii:<\/p>\n<ul>\n<li>monitorizarea nivelului de orchestration;<\/li>\n<li>monitorizarea software-ului de sistem;<\/li>\n<li>monitorizarea nivelului hardware.<\/li>\n<\/ul>\n<p>\n3) Din nou, nivelul aplica\u021biei \u2014 dar ca produs ingineresc:<\/p>\n<ul>\n<li>colectarea \u0219i observarea jurnalelor aplica\u021biei;<\/li>\n<li>APM;<\/li>\n<li>tracing.<\/li>\n<\/ul>\n<p>\n4) Alertare:<\/p>\n<ul>\n<li>organizarea sistemului de notificare;<\/li>\n<li>organizarea sistemului de rota\u021bie;<\/li>\n<li>organizarea \u00abbazei de cuno\u0219tin\u021be\u00bb \u0219i workflow-ul pentru gestionarea incidentelor.<\/li>\n<\/ul>\n<p>\n<b>Este important<\/b>: ajungem la alertare nu dup\u0103, ci imediat! Nu trebuie s\u0103 \u00eencepem monitorizarea \u0219i s\u0103 ne g\u00e2ndim \u00abcumva mai t\u00e2rziu\u00bb la cine vor ajunge alertele. C\u0103ci care este scopul monitoriz\u0103rii: a \u00een\u021belege unde \u00een sistem ceva nu func\u021bioneaz\u0103 corect \u0219i a informa persoanele competente despre acest lucru. Dac\u0103 l\u0103s\u0103m asta la final, persoanele competente vor afla c\u0103 ceva nu este \u00een regul\u0103 doar cu apelul \u00abla noi nimic nu func\u021bioneaz\u0103\u00bb.<\/p>\n<h3>Nivelul aplica\u021biei \u2014 monitorizarea logicii de afaceri<\/h3>\n<p>\nAici este vorba despre verificarea existen\u021bei faptului c\u0103 aplica\u021bia func\u021bioneaz\u0103 pentru utilizator.<\/p>\n<p>Acest nivel ar trebui s\u0103 fie realizat \u00een etapa de dezvoltare. De exemplu, avem un Prometheus ipotetic: acesta se conecteaz\u0103 la un server care se ocup\u0103 cu verific\u0103rile, apeleaz\u0103 endpoint-ul, iar endpoint-ul se duce \u0219i verific\u0103 API-ul.<\/p>\n<p>Atunci c\u00e2nd se solicit\u0103 frecvent monitorizarea paginii principale pentru a verifica dac\u0103 site-ul func\u021bioneaz\u0103, programatorii ofer\u0103 un endpoint pe care \u00eel po\u021bi apela de fiecare dat\u0103 c\u00e2nd vrei s\u0103 te asiguri c\u0103 API-ul func\u021bioneaz\u0103. \u0218i programatorii, \u00een acel moment, scriu \u0219i \/api\/test\/helloworld <br \/>\nSingura modalitate de a te asigura c\u0103 totul func\u021bioneaz\u0103? \u2014 Nu!<\/p>\n<ul>\n<li>Crearea acestor verific\u0103ri este, \u00een esen\u021b\u0103, sarcina dezvoltatorilor. Testele unitare trebuie s\u0103 fie scrise de programatorii care scriu cod. Pentru c\u0103, dac\u0103 le vei da administratorului \u00abFrate, iat\u0103-\u021bi lista protocoalelor API pentru cele 25 de func\u021bii, te rog, monitorizeaz\u0103 tot!\u00bb \u2014 nu va func\u021biona nimic. <\/li>\n<li>Dac\u0103 faci print \u201chello world\u201d, nimeni nu va \u0219ti niciodat\u0103 c\u0103 API-ul ar trebui \u0219i chiar func\u021bioneaz\u0103. Fiecare modificare a API-ului ar trebui s\u0103 conduc\u0103 la o modificare a verific\u0103rilor. <\/li>\n<li>Dac\u0103 ai deja aceast\u0103 problem\u0103 \u2013 opre\u0219te caracteristicile \u0219i aloc\u0103 dezvoltatori care s\u0103 scrie aceste verific\u0103ri, sau \u00eempac\u0103-te cu pierderile, accept\u0103 c\u0103 nimic nu este verificat \u0219i se va pr\u0103bu\u0219i.<\/li>\n<\/ul>\n<p>\nSfaturi tehnice:<\/p>\n<ul>\n<li>Asigur\u0103-te c\u0103 organizezi un server extern pentru realizarea verific\u0103rilor \u2014 trebuie s\u0103 fii sigur c\u0103 proiectul t\u0103u este accesibil pentru lumea exterioar\u0103.<\/li>\n<li>Organizeaz\u0103 verificarea pe \u00eentregul protocol API, nu doar pe endpoint-uri individuale.<\/li>\n<li>Creeaz\u0103 un endpoint Prometheus cu rezultatele verific\u0103rilor.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Nivelul aplica\u021biei \u2014 monitorizarea metricilor de sistem<\/h3>\n<p>\nAcum este vorba despre metricile de sistem externe ale serviciilor. <\/p>\n<p>Am decis c\u0103 toate \u201ep\u00e2rghile\u201d aplica\u021biei sunt monitorizate prin intermediul unor verific\u0103ri externe, pe care le apel\u0103m dintr-un sistem de monitorizare extern. Dar acestea sunt exact \u201ep\u00e2rghile\u201d pe care le \u201evede\u201d utilizatorul. Vrem s\u0103 ne asigur\u0103m c\u0103 serviciile func\u021bioneaz\u0103. Aici povestea este mai bun\u0103: \u00een K8s exist\u0103 verific\u0103ri de integritate, astfel \u00eenc\u00e2t m\u0103car \u201ecubul\u201d s\u0103 se conving\u0103 c\u0103 serviciul func\u021bioneaz\u0103. Dar jum\u0103tate din verific\u0103rile pe care le-am v\u0103zut sunt acela\u0219i print \u201eHello World\u201d. Asta \u00eenseamn\u0103 c\u0103 acesta este apelat o singur\u0103 dat\u0103 dup\u0103 desf\u0103\u0219urare, iar r\u0103spunsul spune c\u0103 totul este bine \u2014 \u0219i at\u00e2t. Un serviciu, dac\u0103 \u00ee\u0219i expune API-ul prin REST, are o mul\u021bime de puncte de acces, acea\u0219i API, care trebuie monitorizate, pentru c\u0103 vrem s\u0103 \u0219tim c\u0103 func\u021bioneaz\u0103. Iar noi \u00eel monitoriz\u0103m deja din interior. <\/p>\n<p>Cum s\u0103 implement\u0103m corect din punct de vedere tehnic: fiecare serviciu public\u0103 un endpoint despre starea sa curent\u0103 de func\u021bionare, iar \u00een graficele Grafana (sau orice alt\u0103 aplica\u021bie) vedem starea tuturor serviciilor.<\/p>\n<ul>\n<li>Fiecare modificare a API-ului trebuie s\u0103 genereze o modificare a verific\u0103rilor. <\/li>\n<li>Creeaz\u0103 un nou serviciu imediat cu metrici de s\u0103n\u0103tate.<\/li>\n<li>Admin-ul poate veni la dezvoltatori \u0219i s\u0103 cear\u0103 \u201escrie\u021bi-mi c\u00e2teva func\u021bionalit\u0103\u021bi, astfel \u00eenc\u00e2t s\u0103 \u00een\u021beleg totul \u0219i s\u0103 adaug informa\u021bii despre acesta \u00een sistemul meu de monitorizare\u201d. Dar dezvoltatorii, de obicei, r\u0103spund: \u201eNu vom ad\u0103uga nimic cu dou\u0103 s\u0103pt\u0103m\u00e2ni \u00eenainte de lansare\u201d.<br \/>\nS\u0103 \u0219tie managerii de dezvoltare c\u0103 vor fi astfel de pierderi, s\u0103 \u0219tie \u0219i conducerea managerilor de dezvoltare. Pentru c\u0103, atunci c\u00e2nd totul cade, cineva tot va suna \u0219i va cere s\u0103 se monitorizeze \u201eserviciul care pic\u0103 constant\u201d (c). <\/li>\n<li>Apropo, aloca\u021bi dezvoltatorii pentru a scrie plugin-uri pentru Grafana \u2014 aceasta va fi o ajutor bun pentru admini.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Nivelul aplica\u021biei \u2014 Monitorizare integrativ\u0103<\/h3>\n<p>\nMonitorizarea integrativ\u0103 se concentreaz\u0103 pe monitorizarea comunic\u0103rii \u00eentre sistemele critice pentru afaceri.<\/p>\n<p>De exemplu, exist\u0103 15 servicii care comunic\u0103 \u00eentre ele. Acestea nu mai sunt site-uri separate. Adic\u0103, nu putem apela serviciul de unul singur, s\u0103 ob\u021binem \/helloworld \u0219i s\u0103 \u00een\u021belegem c\u0103 serviciul func\u021bioneaz\u0103. Deoarece serviciul de procesare a comenzilor trebuie s\u0103 trimit\u0103 informa\u021bii despre comand\u0103 prin bus \u2014 din bus, serviciul de management al stocurilor trebuie s\u0103 primeasc\u0103 acest mesaj \u0219i s\u0103 lucreze cu el mai departe. Iar serviciul de trimitere a e-mail-urilor trebuie s\u0103 prelucreze acest lucru \u00eentr-un fel, \u0219i a\u0219a mai departe. <\/p>\n<p>Prin urmare, nu putem \u00een\u021belege, \u00eencerc\u00e2nd fiecare serviciu \u00een parte, c\u0103 totul func\u021bioneaz\u0103. Pentru c\u0103 avem un fel de bus prin care totul interac\u021bioneaz\u0103 \u0219i comunic\u0103.<br \/>\nAstfel, aceast\u0103 etap\u0103 ar trebui s\u0103 reprezinte etapa de testare a serviciilor \u00een raport cu alte servicii. Nu putem organiza monitorizarea comunica\u021biei prin monitorizarea brokerului de mesaje. Dac\u0103 exist\u0103 un serviciu care furnizeaz\u0103 date \u0219i un serviciu care le prime\u0219te, c\u00e2nd monitoriz\u0103m brokerul, vom vedea doar datele care circul\u0103 \u00een ambele direc\u021bii. Chiar dac\u0103 reu\u0219im cumva s\u0103 monitoriz\u0103m interac\u021biunea acestor date \u2014 cum ar fi c\u0103 un produc\u0103tor public\u0103 date, cineva le cite\u0219te, acest flux continu\u0103 s\u0103 mearg\u0103 \u00een Kafka \u2014 tot nu ne va oferi informa\u021bii, dac\u0103 un serviciu a trimis un mesaj \u00eentr-o versiune, iar alt serviciu nu s-a a\u0219teptat la aceast\u0103 versiune \u0219i l-a ratat. Nu vom afla asta, deoarece serviciile ne vor spune c\u0103 totul func\u021bioneaz\u0103. <\/p>\n<p>Cum recomand s\u0103 facem:<\/p>\n<ul>\n<li>Pentru comunicarea sincron\u0103: endpoint-ul efectueaz\u0103 cereri c\u0103tre serviciile conectate. Adic\u0103, lu\u0103m acest endpoint, apel\u0103m un script \u00een interiorul serviciului care trece prin toate punctele \u0219i spune 'pot apela acolo \u0219i acolo, pot apela acolo...'<\/li>\n<li>Pentru comunicarea asincron\u0103: mesajele de intrare \u2014 endpoint-ul verific\u0103 bus-ul pentru mesaje de test \u0219i returneaz\u0103 starea proces\u0103rii. <\/li>\n<li>Pentru comunicarea asincron\u0103: mesajele de ie\u0219ire \u2014 endpoint-ul trimite mesaje de test pe bus.<\/li>\n<\/ul>\n<p>\nDe obicei, se \u00eent\u00e2mpl\u0103 a\u0219a: avem un serviciu care trimite date pe bus. Venim la acest serviciu \u0219i cerem s\u0103 ne povesteasc\u0103 despre s\u0103n\u0103tatea sa de integrare. \u0218i dac\u0103 serviciul trebuie s\u0103 publice un mesaj mai departe (WebApp), atunci produce acest mesaj de test. Iar dac\u0103 apel\u0103m serviciul de partea OrderProcessing, el public\u0103 mai \u00eent\u00e2i ceea ce poate publica independent, iar dac\u0103 exist\u0103 lucruri dependente \u2014 atunci cite\u0219te un set de mesaje de test de pe bus, \u00een\u021belege ce poate procesa, informeaz\u0103 despre asta \u0219i, dac\u0103 este necesar, le public\u0103 mai departe, iar despre aceasta spune \u2014 totul este ok, sunt activ. <\/p>\n<p>De multe ori auzim \u00eentrebarea \u201ecum putem testa asta pe date reale?\u201d De exemplu, este vorba despre acela\u0219i serviciu de comenzi. Comenzile trimit mesaje c\u0103tre depozit, unde produsele sunt contabilizate: nu putem testa asta pe date reale, deoarece \u201eprodusele mele vor fi contabilizate!\u201d Solu\u021bia: \u00een etapa ini\u021bial\u0103, planifica\u021bi tot acest test. Ave\u021bi teste unitare care fac simul\u0103ri. A\u0219adar, face\u021bi asta la un nivel mai profund, unde va trece canalul de comunica\u021bie, care nu va afecta func\u021bionarea afacerii. <\/p>\n<h3>Nivelul infrastructurii<\/h3>\n<p>\nMonitorizarea infrastructurii - ceea ce este considerat deja monitorizarea \u00een sine. <\/p>\n<ul>\n<li>Monitorizarea infrastructurii poate \u0219i trebuie s\u0103 fie pornit\u0103 ca un proces separat.<\/li>\n<li>Nu trebuie s\u0103 \u00eencepe\u021bi cu monitorizarea infrastructurii \u00eentr-un proiect func\u021bional, chiar dac\u0103 ave\u021bi foarte multe dorin\u021be. Este o problema comun\u0103 pentru to\u021bi DevOps-ii. \u201eMai \u00eent\u00e2i voi monitoriza clusterul, voi monitoriza infrastructura\u201d - adic\u0103, mai \u00eent\u00e2i va monitoriza ceea ce este la baz\u0103 \u0219i nu se va ocupa de aplica\u021bie. Deoarece aplica\u021bia este un lucru neclar pentru DevOps. Au primit-o \u0219i el nu \u00een\u021belege cum func\u021bioneaz\u0103. Dar infrastructura o \u00een\u021belege \u0219i \u00eencepe cu aceasta. \u00cens\u0103 nu - \u00eentotdeauna trebuie s\u0103 monitoriz\u0103m aplica\u021bia la \u00eenceput. <\/li>\n<li>Nu exagera\u021bi cu num\u0103rul de alerte. Av\u00e2nd \u00een vedere complexitatea sistemelor moderne, alertele vin constant, iar cu aceast\u0103 avalan\u0219\u0103 de alerte trebuie cumva s\u0103 convie\u021buim. Dac\u0103 o persoan\u0103 on-call, dup\u0103 ce se uit\u0103 la o sut\u0103 de alerte, decide \u201enu vreau s\u0103 m\u0103 g\u00e2ndesc la asta\u201d. Alertele ar trebui s\u0103 notifice doar despre lucruri critice. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Nivelul aplica\u021biei ca unitate de afaceri<\/h3>\n<p>\nPunctele cheie:<\/p>\n<ul>\n<li>ELK. Acesta este standardul din industrie. Dac\u0103 dintr-un anumit motiv nu agrega\u021bi loguri, \u00eencepe\u021bi s\u0103 face\u021bi asta imediat.<\/li>\n<li>APM. APM-urile externe ca o modalitate rapid\u0103 de a acoperi monitorizarea aplica\u021biei (NewRelic, BlackFire, Datadog). Pute\u021bi s\u0103 instala\u021bi temporar aceast\u0103 solu\u021bie pentru a \u00een\u021belege ce se \u00eent\u00e2mpl\u0103 \u00een sistem. <\/li>\n<li>Tracing. \u00cen zecile de microservicii trebuie s\u0103 urm\u0103ri\u021bi totul, deoarece cererea nu mai tr\u0103ie\u0219te de una singur\u0103. S\u0103 ad\u0103uga\u021bi ulterior este foarte greu, a\u0219a c\u0103 este mai bine s\u0103 planifica\u021bi tracing-ul \u00een dezvoltare - acesta este un instrument \u0219i o munc\u0103 a dezvoltatorilor. Dac\u0103 nu l-a\u021bi implementat \u00eenc\u0103 - implementa\u021bi-l! Consulta\u021bi Jaeger\/Zipkin.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Alertare<\/h3>\n<p><\/p>\n<ul>\n<li>Organizarea sistemului de alertare: \u00een condi\u021biile monitoriz\u0103rii unei mul\u021bimi de lucruri, trebuie s\u0103 existe un sistem unitar de trimitere a alertelor. Se poate folosi Grafana. \u00cen Occident, toat\u0103 lumea folose\u0219te PagerDuty. Alerta trebuie s\u0103 fie clar\u0103 (de exemplu, de unde a venit\u2026). \u0218i este de dorit s\u0103 controla\u021bi dac\u0103 alert\u0103rile ajung efectiv. <\/li>\n<li>Organizarea sistemului de gard\u0103: alertele nu trebuie s\u0103 ajung\u0103 la toat\u0103 lumea (altfel, to\u021bi vor reac\u021biona \u00een grup sau nimeni nu va reac\u021biona). Cei de gard\u0103 trebuie s\u0103 fie \u0219i dezvoltatorii: defini\u021bi zonele de responsabilitate, crea\u021bi instruc\u021biuni clare \u0219i specifica\u021bi exact cui s\u0103 sune luni \u0219i miercuri, iar cui \u2014 mar\u021bi \u0219i vineri (altfel, nu vor suna pe nimeni, chiar \u0219i \u00een cazul unei mari probleme \u2014 se vor teme s\u0103 trezeasc\u0103, s\u0103 deranjeze: oamenii nu iubesc s\u0103 sune \u0219i s\u0103 trezeasc\u0103 alte persoane, mai ales noaptea). \u0218i explica\u021bi c\u0103 apelul pentru ajutor nu este un semn de necompeten\u021b\u0103 (\u201ecer ajutor \u2014 \u00eenseamn\u0103 c\u0103 sunt un lucr\u0103tor slab\u201d), \u00eencuraja\u021bi cererile de ajutor.<\/li>\n<li>Organizarea \u201ebazei de cuno\u0219tin\u021be\u201d \u0219i a fluxului de lucru pentru gestionarea incidentelor: pentru fiecare incident sever trebuie planificat un postmortem, ca m\u0103sur\u0103 temporar\u0103 trebuie documentate ac\u021biunile ce vor rezolva incidentul. \u0218i implementa\u021bi practica c\u0103 alertele repetitive sunt o gre\u0219eal\u0103; trebuie remediat\u0103 \u00een cod sau \u00een lucr\u0103rile infrastructurale. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Stiva tehnologic\u0103<\/h3>\n<p>\nS\u0103 presupunem c\u0103 stiva noastr\u0103 este urm\u0103toarea: <\/p>\n<ul>\n<li>colectare de date \u2014 Prometheus + Grafana;<\/li>\n<li>analiza jurnalelor \u2014 ELK;<\/li>\n<li>pentru APM sau Tracing \u2014 Jaeger (Zipkin).<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Monitorizarea e moart\u0103? \u2014 Tr\u0103iasc\u0103 monitorizarea\" src=\"\/wp-content\/uploads\/2019\/04\/af26d3c0ba781cd856d220515788b5eb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlegerea op\u021biunilor nu este critic\u0103. Pentru c\u0103, dac\u0103 de la \u00eenceput a\u021bi \u00een\u021beles cum s\u0103 monitoriza\u021bi sistemul \u0219i a\u021bi scris un plan, mai departe \u00eencepe\u021bi s\u0103 alege\u021bi instrumentele conform cerin\u021belor voastre. Problema este ce a\u021bi ales s\u0103 monitoriza\u021bi la \u00eenceput. Deoarece, posibil, instrumentul pe care l-a\u021bi ales ini\u021bial nu este deloc potrivit pentru cerin\u021bele voastre. <\/p>\n<p>C\u00e2teva aspecte tehnice pe care le observ peste tot \u00een ultima vreme:<\/p>\n<p><i>Prometheus este integrat \u00een Kubernetes \u2014 cine a g\u00e2ndit asta?!<\/i> Dac\u0103 clusterul vostru pic\u0103, ce ve\u021bi face? Dac\u0103 ave\u021bi un cluster complex \u00een interior, ar trebui s\u0103 func\u021bioneze un sistem de monitorizare \u00een interiorul clusterului, \u0219i unul \u2014 exterior, care va colecta date din interiorul clusterului. <\/p>\n<p><i>\u00cen interiorul clusterului colect\u0103m jurnalele \u0219i tot ce este necesar.<\/i> Dar sistemul de monitorizare trebuie s\u0103 fie extern. Foarte des \u00een clusterul unde exist\u0103 Prometheus, care este instalat intern, exist\u0103 \u0219i sisteme care efectueaz\u0103 verific\u0103ri externe ale func\u021bion\u0103rii site-ului. \u0218i dac\u0103 conexiunile c\u0103tre lumea extern\u0103 cad \u0219i aplica\u021bia nu func\u021bioneaz\u0103? A\u0219adar, \u00een interior totul este bine, dar pentru utilizatori nu devine mai u\u0219or.<\/p>\n<h3>Conclusions<\/h3>\n<p><\/p>\n<ul>\n<li>Dezvoltarea monitoriz\u0103rii nu este doar instalarea utilitarilor, ci dezvoltarea unui produs software. 98% din monitorizarea de ast\u0103zi este codare. Codare \u00een servicii, codare a verific\u0103rilor externe, verificarea serviciilor externe \u0219i a tot ce face parte din acestea. <\/li>\n<li>Nu economisi\u021bi timp pentru dezvoltatori pe monitorizare: aceasta poate ocupa p\u00e2n\u0103 la 30% din munca lor, dar merit\u0103.<\/li>\n<li>DevOps, nu v\u0103 face\u021bi griji c\u0103 nu reu\u0219i\u021bi s\u0103 monitoriza\u021bi ceva, deoarece unele lucruri sunt cu totul alt\u0103 mentalitate. Nu a\u021bi fost programatori, iar munca de monitorizare este exact treaba lor.<\/li>\n<li>Dac\u0103 proiectul func\u021bioneaz\u0103 deja \u0219i nu este monitorizat (iar voi sunte\u021bi manager) \u2013 aloca\u021bi resurse pentru monitorizare.<\/li>\n<li>Dac\u0103 produsul este deja \u00een produc\u021bie \u0219i sunte\u021bi DevOps care a fost rugat s\u0103 \u00abconfigureze monitorizarea\u00bb \u2013 \u00eencerca\u021bi s\u0103 explica\u021bi conducerii ce am scris aici.<\/li>\n<\/ul>\n<p>\n<i>Aceasta este o versiune extins\u0103 a prezent\u0103rii de la conferin\u021ba Saint Highload++.<\/i><\/p>\n<p>Dac\u0103 sunte\u021bi interesa\u021bi de ideile \u0219i reflec\u021biile mele pe tema IT \u0219i subiecte conexe, iat\u0103 unde pute\u021bi <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/eapotapov_channel\">citi canalul <\/a><\/noindex>\ud83d\ude42<br \/>\n<br \/>Sursa: <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.2.1 - 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\/ro\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Monitorizarea este moart\u0103? \u2013 Tr\u0103iasc\u0103 monitorizarea | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/31864","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=31864"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31864\/revisions"}],"predecessor-version":[{"id":158558,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31864\/revisions\/158558"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/23731"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=31864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=31864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=31864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}