Metodele vechi bazate pe gestionarea esecurilor previzibile de multe ori nu functioneaza bine in timp ce monitorizeaza aplicatiile distribuite moderne. Depanarea si diagnosticarea eficiente necesita ca sistemul sa poata fi observat cu o arhitectura de microservice, acum standardul de facto pentru aplicatiile web. A fi observabil inseamna ca starea interna a aplicatiei poate fi dedusa prin observarea iesirii sale.

Este confuz pentru echipele de dezvoltare, sa se faca distinctia intre monitorizare si observabilitate. Discutam despre monitorizare, observabilitate si legatura dintre cei doi in acest post. De asemenea, mentionam cateva dintre instrumentele pe care le puteti utiliza pentru a obtine observabilitate.

Array

Organizatiile incadrate in minte DevOps incep, de obicei, sa disocieze aplicatia de arhitectura de microservicii pentru a castiga operabilitate si pentru a reduce timpul de rezolvare atunci cand are loc un incident. Dar pe masura ce complexitatea creste in sistemele lor, acestia trebuie sa se asigure ca nu numai ca pot obtine vizibilitate asupra defectiunilor sistemului, ci si ca pot actiona in termenele ferme.

Sistemul dvs. de monitorizare trebuie sa raspunda la doua intrebari simple: „ce este stricat si de ce?” conform cartii SRE de la Google. Monitorizarea va permite sa urmariti si sa intelegeti starea sistemului dvs. utilizand un set predefinit de valori si jurnale.

Array

Aplicatiile de monitorizare va permit sa detectati un set cunoscut de moduri de esec.

Monitorizarea este foarte importanta pentru analiza tendintelor pe termen lung, pentru construirea tablourilor de bord si pentru alertare. Va permite sa stiti cum functioneaza aplicatiile dvs., cum se dezvolta si cum sunt utilizate. Cu toate acestea, problema cu monitorizarea aplicatiilor distribuite complexe este ca esecurile de productie nu sunt liniare si, prin urmare, sunt dificil de prezis.

Daca doriti sa construiti si sa rulati sisteme bazate pe microservicii, monitorizarea este inca un instrument indispensabil pentru aceasta.

Array

Monitorizarea va oferi o imagine rezonabila a starii de sanatate a sistemului dvs. daca regulile si valorile de monitorizare sunt simple si se concentreaza pe date care pot fi actionate. Desi monitorizarea nu poate face ca sistemul dvs. sa fie complet imun la esec, acesta va oferi o vedere panoramica a comportamentului si performantei sistemului in natura, permitandu-va sa vedeti impactul oricarui esec si al remedierilor consecvente.

Observabilitatea analizeaza rezultatele sistemelor si masoara cat de bine puteti intelege starile interne ale unui sistem.

Acesta este originea din teoria controlului. Observabilitatea utilizeaza instrumentele pentru a oferi informatii care ajuta la monitorizarea. Mai ales, monitorizarea este ceea ce faci dupa ce un sistem este observabil. Fara un anumit nivel de observabilitate, monitorizarea este imposibila.

Chiar si in arhitecturi complexe de microservicii, sistemele observabile va permit sa intelegeti comportamentele sistemului, astfel incat sa puteti naviga mai usor de la efecte la cauza. Va ajuta sa gasiti raspunsuri la intrebari precum serviciile prin care a trecut o solicitare si unde au fost blocajele de performanta. Care este diferenta dintre executarea cererii si comportamentul asteptat al sistemului? Care este cauza principala a solicitarii esuate? Cum a procesat fiecare microserviciu solicitarea?

Sunt cei trei piloni principali ai observabilitatii:

Cele doua notiuni de observabilitate si monitorizare sunt complementare, dar au scopuri diferite.

Observabilitatea este un superset de monitorizare, iar monitorizarea este o actiune cheie pentru observabilitate. Numai sistemele observabile pot fi monitorizate. Cand va monitorizati doar sistemul, puteti intelege doar daca ceva nu este in regula sau nu. Dar daca sistemul dvs. este observabil, puteti intelege cauza principala a esecurilor.

Puteti urmari starea generala a aplicatiei dvs. monitorizand-o. Monitorizarea agregeaza date despre performanta sistemului in ceea ce priveste viteza de acces, conectivitate, perioade de nefunctionare si blocaje. Pe de alta parte, puteti detalia in „ce” si „de ce” operatiunile aplicatiei cu observabilitate, oferind o perspectiva granulara si contextuala asupra modurilor sale specifice de esec.

In timp ce monitorizarea ofera raspunsuri doar pentru problemele sau aparitiile cunoscute, software-ul instrumentat pentru observabilitate permite dezvoltatorilor sa puna noi intrebari pentru a depana o problema sau pentru a obtine informatii despre starea generala a ceea ce este de obicei un sistem dinamic cu complexitate in schimbare si permutari necunoscute.

Observabilitatea nu este un lucru infricosator de realizat pentru echipele de dezvoltare si operare. Exista numeroase valori cheie referitoare la aplicatia dvs. pe care le puteti incepe; cum ar fi procesorul, reteaua si memoria aplicatiei dvs.

Daca doriti sa asigurati observabilitatea sistemelor dvs., pot fi necesare si jurnalele de sistem. Gestionarea si stocarea jurnalelor este greoaie in sensul fortei de munca si al costurilor pentru multe organizatii, deoarece acestea pot creste foarte rapid. Dar exista instrumente care pot spori eficienta inregistrarii. Un exemplu este OpenTelemetry, care este utilizat nu numai pentru inregistrare, ci si pentru colationare si urmarire metrica. OpenTelemetry se integreaza si cu cadrele si bibliotecile populare, precum Spring, ASP.NET Core si Express.

Modul modern de observare a sistemelor distribuite este urmarit cu siguranta. Urmarirea va ajuta sa identificati cauza principala a unei probleme intr-un sistem distribuit. Urmarirea poate fi vazuta ca cea mai importanta parte a implementarii observabilitatii: intelegerea relatiei cauzale din arhitectura dvs. de microserviciu si posibilitatea de a urmari problema de la efect la cauza si invers.

Observabilitatea automata continua va permite sa fiti la curent cu orice riscuri sau probleme pe tot parcursul ciclului de viata al dezvoltarii software-ului. Ofera vizibilitate pe intreaga conducta CI / CD si infrastructura dvs., oferindu-va feedback rapid asupra starii de sanatate a mediului in orice moment – inclusiv in fazele de pre-productie.

Dupa ce construiti sisteme complexe, cum ar fi infrastructurile distribuite, va trebui sa le gestionati in cel mai bun mod corect posibil pentru a preveni impactul esecurilor. Un set de instrumente trebuie actualizat pentru a va ajuta sa vizualizati sistemele noastre distribuite. Aceste instrumente va pot anunta cand apare o defectiune. Aceste instrumente va permit sa intelegeti comportamentele sistemului si sa preveniti viitoarele probleme de sistem.

Descriem intr-o oarecare masura cele trei platforme principale de observabilitate: OpenTelemetry, Jaeger si Zipkin in cartea noastra alba „Monitorizare vs. Observabilitate”.

Unele instrumente terta parte, cum ar fi Thundra, va ajuta sa va instrumentati automat aplicatiile. Ofera o solutie plug-play automata pentru observabilitate, mentinand in acelasi timp usa deschisa pentru instrumentatia manuala, care este compatibila cu OpenTracing – si in curand OpenTelemetry.

Exista o multime de cauze pentru esecul aplicatiilor in productie. Ceva cu siguranta va merge prost indiferent de efortul tau. Depanarea problemelor in productie va fi un cosmar si iti va oferi nopti fara somn, cu exceptia cazului in care vei face componentele aplicatiei tale observabile in mod corect. Nu este suficient sa creati sau sa faceti aplicatia dvs. observabila. Raspunsurile la probleme nu vor veni ca o inspiratie divina. Trebuie sa examinati continuu datele pe care le aveti, pentru a determina utilitatea acestora. Observabilitatea trebuie sa aiba datele potrivite pentru a va ajuta sa obtineti raspunsuri la problemele cunoscute si necunoscute din productie. Trebuie sa adaptati in permanenta instrumentele sistemului dvs. pana cand acesta este observabil in mod corespunzator, pana la punctul in care puteti obtine raspunsuri la orice intrebari necesare pentru a va sustine aplicatia la nivelul de calitate dorit.