Sarcini planificate: Configurarea mediului de QA (testare) pentru proiect. Instalarea instrumentelor dependentelor și instrumentelor de test.
Activităţi desfăşurate, observaţii personale
30 ianuarie – După obtinerea credentialelor, ma conectez prin SSH la server, ca OS este instalat Ubuntu 22.04 versiunea server. Adaog cheia mea SSH publica pentru a ma conecta fără introducerea suplimentara a credentialelor. Pentru comoditate am creat pe calculatorul de lucru un Alias pentru conectare. Standard actualizez repozitoriile și pachetele deja instalate pe server după care încep instalarea instrumentelor necesare. În primul rând instalez Docker printr-un bash script scris anterior pentru alte proiecte. Genere în sistemul GitLab un token de acces pentru citirea registrului Docker pentru a putea descarca imaginile pentru aplicatiile dezvoltate. Creez un docker-compose file unde descriu în format declarativ YAML toate serviciile (aplicatiile), comportamentul acestora și alte configurari, rulez ca să mă asigur ca totul funcționează corect.
31 ianuarie – După configurarea mediului de test, încep instalarea infrastructurii de
monitorizare. Pentru aceasta am utilizat doua stack-uri de tehnologii ELK (Elasticsearch, Logstash, Kibana) pentru colectarea logurilor de sistem, aplicații și baze de date, și stack-ul Grafana+Prometheus pentru monitorizarea resurselor serverului, consumul de resurse de către procese precus CPU, RAM, spațiu de stocare, rețea etc. Primordial sunt resursele, deci instalez Grafana și Prometheus plus niște tool-uri suplimentare. Pentru comoditate voi folosi aceste tool-uri containerizate în Docker. Caut imaginile docker a acestora pe docker hub și alte repozitorii publice pentru a găsi versiunile necesare, compatibile cu arhitectura serverului (amd64). După descărcarea versiunilor necesare testez fiecare componentă aparte consultând documentația oficială pentru a stabili parametrii optimi.
1 februarie – Obținând toate componentele necesare precum (Grafana, Prometheus,
NodeExporter, Cadvisor, AlertManager și altele) începe partea cea mai grea, și anume descrierea fisierului docker-compose, procesul este unul destul de lung ce constă în scrierea yaml fișierului și pornirea acestuia de câteva ori pentru testare și configurare suplimentara. Având 7 aplicații containerizate ce trebuie configurate corect pentru interacțiunea corectă a acestora, procesul a durat până la sfârșitul zile și o parte din ziua următoare.
2 februarie – Configurând întregul sistem de monitorizare, trec la partea de afișare. Cu
ajutorul instrumentului Grafana și template-urilor oferite de open-source construiesc grafice și diagrame dinamice ce reflectă starea serverului și a aplicațiilor, cum ar fi consumul de date, consumul de resurse, numărul de request-uri http venite la o instanță a aplicației etc. În final obțin 3 dashboard-uri pentru 3 compartimente, primul este starea serverului, al doilea este starea aplicațiilor și al treilea este pur administrativ ce reflectă starea sistemului de monitorizarea. 3 februarie – Un moment foarte important în procesul de monitorizare sunt alertele. Acestea sunt menite să simplifice monitorizarea din motiv că nu mereu este posibilă monitorizarea continuă, de aceea pentru a preveni responsabilii la un incident sunt create aceste alerte. La depășirea unor limite de consum a resurselor, la căderea unei aplicații sau alte posibile cazuri, aplicația transmite notificare pe poștă electronică și Telegram. Pentru realizarea acestui mecanism am 2 opțiuni, utilizarea instrumentului integrat în Grafana, sau utilizarea unei aplicații suplimentare AlertManager pentru Prometheus. Eu am optat pentru ambele opțiuni, și anume ca cea mai mare parte a alertelor fiind executate de AlertManager și o mică parte de Grafana, plus la asta ambele instrumente se monitorizează pe ele pentru a reduce la minim riscul ca sistemul de monitorizare să ajungă la o stare non-funcțională.