Echipa noastră este foarte încântată să împărtășească vestea că a avut loc lansarea sistemului de monitorizare open source. !

Este versiunea 4.2 răspunsul la cea mai importantă întrebare a vieții, universului și monitorizării în general? Să vedem!
Reamintim că Zabbix este un sistem universal pentru monitorizarea performanței și disponibilității serverelor, echipamentelor inginerești și de rețea, aplicațiilor, bazelor de date, sistemelor de virtualizare, containerelor, serviciilor IT și serviciilor web.
Zabbix realizează un ciclu complet de la colectarea datelor, procesarea și transformarea acestora, analiza datelor obținute, până la stocarea acestora, vizualizarea și trimiterea de notificări utilizând regulile de escaladare. De asemenea, sistemul oferă oportunități flexibile de extindere a metodelor de colectare a datelor și notificărilor, precum și opțiuni de automatizare prin API. Interfața web unică oferă o gestionare centralizată a configurațiilor de monitorizare și a distribuției drepturilor de acces între diferite grupuri de utilizatori. Codul proiectului este distribuit liber sub licența .
Zabbix 4.2 este o nouă versiune non-LTS cu un termen mai scurt de suport oficial. Utilizatorilor care se bazează pe un ciclu lung de exploatare a produselor software, le recomandăm să folosească versiunile LTS, cum ar fi 3.0 și 4.0.
Așadar, să discutăm despre noutăți și principalele îmbunătățiri ale versiunii 4.2:
Mai multe platforme oficiale

În plus față de pachetele oficiale existente, oferim acum și noi build-uri pentru:
- RaspberryPi, Mac OS/X, SUSE Enterprise Linux Server 12
- MSI pentru agentul Windows
- Imagini Docker
Suport încorporat Prometheus pentru monitorizarea aplicațiilor
Zabbix poate colecta date prin diverse metode (push/pull) din diferite surse de date. Acestea includ JMX, SNMP, WMI, HTTP/HTTPS, RestAPI, XML Soap, SSH, Telnet, agenți și scripturi și alte surse. Și acum, întâmpinați suportul pentru Prometheus!
Adevărat vorbind, colectarea datelor din exportatorii Prometheus era posibilă și înainte datorită tipului de elemente de date HTTP/HTTPS și expresiilor regulate.
Cu toate acestea, noua versiune permite funcționarea cu Prometheus în mod maxim eficient datorită suportului încorporat pentru limbajul de interogare PromQL. Utilizarea metricilor dependente permite colectarea și procesarea datelor într-un mod mai eficient: se face o singură dată o cerere pentru date, iar apoi le distribuim pe metricile necesare.
Obținem valoarea unei metrici specifice
Este important de menționat că în prezent, detectarea de nivel jos poate utiliza datele colectate pentru a crea automat metrici. În acest caz, Zabbix transformă datele primite în format JSON, cu care este foarte ușor de lucrat.
Găsim metricile folosind un filtru în limba de interogare PromQL
În prezent există mai mult de a serviciilor și aplicațiilor de terță parte prin intermediul Zabbix. Suportul pentru Prometheus va permite adăugarea unui întreg set de aplicații care au exportatori Prometheus oficiali sau susținuți de comunitate. Aceasta include monitorizarea serviciilor populare, containerelor și resurselor cloud.
Monitorizare eficientă la frecvență înaltă
Vrem să detectăm problemele cât mai repede posibil? Desigur, nu există nicio îndoială! Cel mai adesea, o astfel de abordare duce la necesitatea de a interoga prea des dispozitivele și de a colecta date, ceea ce conduce la o încărcare mai mare pe sistemul de monitorizare. Cum putem evita acest lucru?
Am implementat un mecanism de throttling în regulile de preprocessare. Throttling, în esență, ne oferă posibilitatea de a omite valori identice.
Să presupunem că monitorizăm starea unei aplicații critice. La fiecare secundă, verificăm dacă aplicația noastră funcționează sau nu. În același timp, Zabbix primește un flux continuu de date de 1 (funcționează) și 0 (nu funcționează). De exemplu: 1111111111110001111111111111…
Când aplicația noastră este în regulă, Zabbix primește un flux de numai unități. Trebuie să le procesăm? În general, nu, deoarece ne interesează doar schimbarea stării aplicației, nu vrem să colectăm și să stocăm atât de multe date. Așadar, throttling-ul permite să omitem valoarea dacă este identică cu cea anterioară. La final, vom obține doar date despre schimbarea stării, de exemplu, 01010101… Este o informație suficientă pentru a detecta problemele!
Valorile omitente sunt pur și simplu ignorate de Zabbix, ele nu sunt înregistrate în istorie și nu afectează în niciun fel trigger-ele. Din perspectiva Zabbix, valorile omitente nu există.
Ignorăm valorile repetate
Super! Acum putem interoga foarte des dispozitivele, descoperind instantaneu problemele fără a stoca informații inutile în baza de date.
Dar ce se va întâmpla cu graficele? Acestea vor fi goale din cauza lipsei de date! Și cum putem înțelege dacă Zabbix colectează informații, dacă cele mai multe dintre aceste date sunt omise?
Ne-am gândit și la asta! Zabbix oferă o altă formă de throttling, throttling cu puncte de control (throttling with heartbeat).
Verificăm o dată pe minut dacă metricile sunt active
În acest caz, Zabbix, în ciuda fluxului repetitiv de date, va salva cel puțin o valoare în intervalul de timp specificat. Dacă datele sunt colectate o dată pe secundă, iar intervalul este stabilit la un minut, atunci Zabbix va transforma fluxul de unități pe secundă într-un flux pe minut. Nu este greu de observat că aceasta duce la o comprimare de 60 de ori a datelor obținute.
Acum suntem siguri că datele sunt colectate, funcția de declanșare nodata() funcționează și graficele sunt în regulă!
Validarea datelor colectate și gestionarea erorilor
Nimeni dintre noi nu vrea să colecteze date eronate sau inexacte. De exemplu, știm că senzorul de temperatură ar trebui să returneze date în intervalul 0°C până la 100°C, iar orice altă valoare ar trebui considerată ca fiind eronată și/sau ignorată.
Acum este posibil datorită regulilor încorporate în preprocesarea validării datelor, fie prin conformitate, fie prin inadecvare la expresiile regulate, intervalele de valori, JSONPath și XMLPath.
Acum putem gestiona reacția la erori. Dacă temperatura este în afara intervalului, putem pur și simplu să ignorăm astfel de valori, să setăm o valoare implicită (de exemplu, 0°C), sau să definim un mesaj propriu de eroare, cum ar fi „Senzorul este defect” sau „Schimbați bateria.”
Temperatura trebuie să fie între 0 și 100, restul se ignoră
Un exemplu bun de utilizare a validării este capacitatea de a verifica datele de intrare pentru prezența unui mesaj de eroare și de a stabili această eroare pentru întreaga metrică. Aceasta este o funcționalitate foarte utilă atunci când obținem date din API-uri externe.
Orice transformare a datelor cu ajutorul JavaScript
Dacă regulile integrate de preprocesare nu sunt suficiente, acum oferim libertate totală prin utilizarea scripturilor arbitrare în JavaScript!
Doar o linie de cod pentru a transforma gradele Fahrenheit în grade Celsius
Aceasta deschide oportunități nelimitate în prelucrarea datelor de intrare. Beneficiul practic al acestei funcționalități este că acum nu mai avem nevoie de scripturi externe care erau folosite pentru orice operațiuni cu date. Acum totul poate fi realizat cu ajutorul JavaScript.
Acum sunt posibile transformări ale datelor, agregări, filtre, operații aritmetice și logice și multe altele!
Extragem informații utile din ieșirea Apache mod_status!
Testăm preprocesarea
Acum nu mai trebuie să ne întrebăm cum funcționează scenariile noastre complexe de preprocesare. A apărut o verificare convenabilă a funcționării preprocesării direct din interfață!
Procesăm milioane de metrici pe secundă!
Până la Zabbix 4.2, preprocesarea era realizată exclusiv de serverul Zabbix, ceea ce limita posibilitățile de utilizare a proxy-urilor pentru distribuția sarcinii.
Începând cu versiunea Zabbix 4.2, obținem o scalare incredibil de eficientă a sarcinii datorită suportului pentru preprocesarea pe partea de proxy. Acum proxy-urile se ocupă de acest lucru!
În combinație cu throttling-ul, această abordare permite realizarea unei monitorizări scalabile de înaltă frecvență și efectuarea a milioane de verificări pe secundă, fără a suprasolicita serverul central Zabbix. Proxy-urile prelucrează volume imense de date, iar la serverul Zabbix ajunge, datorită throttling-ului, doar o mică parte, cu unu sau două ordine mai puțin.
Detectare de nivel scăzut mai simplă
Să reamintim că detectarea de nivel scăzut (LLD) este un mecanism foarte puternic pentru detectarea automată a oricărui fel de resurse pentru monitorizare (sisteme de fișiere, procese, aplicații, servicii etc.) și crearea automată a elementelor de date, declanșatoarelor, nodurilor de rețea și altor obiecte pe baza acestora. Acest lucru economisește incredibil de mult timp, simplifică configurația și permite utilizarea unui singur șablon pentru noduri de rețea cu resurse diferite pentru monitorizare.
Detectarea de nivel scăzut necesita un JSON special formatat ca input. Acum, lucrurile nu vor mai fi așa!
Zabbix 4.2 permite utilizarea descoperirii la nivel scăzut (LLD) pentru a folosi date formatate aleatoriu în format JSON. De ce este important? Aceasta permite comunicarea cu API-uri externe, de exemplu, fără a recurge la scripturi și utilizarea informațiilor obținute pentru a crea automat noduri de rețea, elemente de date și trăgaci.
Împreună cu suportul pentru JavaScript, aceasta oferă oportunități fantastice pentru crearea de șabloane de lucru cu diverse surse de date, cum ar fi API-uri în cloud, API-uri pentru aplicații, date în formate XML, CSV și multe altele.
Legăm JSON cu informațiile despre procesele LLD
Posibilitățile sunt cu adevărat nelimitate!
Suport pentru TimescaleDB
Ce este TimescaleDB? Este un PostgreSQL obișnuit plus un modul de extensie de la echipa TimescaleDB. TimescaleDB promite o performanță mai bună datorită unor algoritmi și structuri de date mai eficiente.
În plus, un alt avantaj al TimescaleDB este partiționarea automată a tabelelor cu istoric. TimescaleDB oferă viteză și ușurință în întreținere! Cu toate acestea, trebuie să menționez că echipa noastră nu a efectuat încă o comparație serioasă a performanței cu PostgreSQL obișnuit.
În prezent, TimescaleDB este un produs relativ tânăr și în rapidă dezvoltare. Utilizați-l cu precauție!
Gestionare ușoară a etichetelor
Dacă înainte etichetele puteau fi gestionate doar la nivelul trăgaciului, acum gestionarea acestora este mult mai flexibilă. Zabbix suportă etichetele pentru șabloane și noduri de rețea!
Toate problemele detectate primesc etichete nu doar de la trăgăci, ci și de la nodul de rețea, precum și de la șabloanele acestui nod de rețea.
Definim etichetele pentru nodul de rețea
Autoregistrare mai flexibilă
Zabbix 4.2 permite filtrarea nodurilor de rețea după nume, utilizând expresii regulate. Aceasta oferă posibilitatea de a crea diferite scenarii de descoperire pentru diverse grupuri de noduri de rețea. Este deosebit de convenabil, dacă avem reguli complexe pentru denumirea dispozitivelor.
Descoperire de rețea mai flexibilă
O altă îmbunătățire este legată de denumirea nodurilor de rețea. A apărut posibilitatea de a gestiona numele dispozitivelor în cadrul descoperirii de rețea și de a obține numele dispozitivului din valoarea metricii.
Aceasta este o funcționalitate foarte necesară, în special în cazul descoperirii de rețea prin SNMP și agentul Zabbix.
Atribuim automat un nume local de nod de rețea numelui vizibil
Verificarea funcționării metodelor de notificare
Acum, direct din interfața web, poți trimite un mesaj de test și verifica dacă metoda de notificare funcționează. Această funcționalitate este deosebit de utilă pentru testarea scripturilor Zabbix cu diferite sisteme de notificare, sisteme de sarcini și alte programe externe și API-uri.
Monitorizarea de la distanță a componentelor infrastructurii Zabbix
A apărut posibilitatea de a monitoriza de la distanță metricile interne ale serverului și proxy-ului Zabbix (metricile de performanță și funcționare ale componentelor Zabbix).
De ce este necesar? Funcționalitatea permite urmărirea metricilor interne ale serverelor și proxy-urilor din exterior, facilitând detectarea rapidă și notificarea problemelor, chiar dacă componentele în sine sunt supraîncărcate sau, de exemplu, proxy-ul are un volum mare de date netrimise.
Suport pentru formatul HTML pentru mesajele email
Acum nu suntem limitați la text simplu și putem crea mesaje e-mail frumoase, datorită suportului pentru formatul HTML. Este momentul să învățăm HTML + CSS!
Mesajele sunt mai ușor de perceput chiar și cu o utilizare minimă a HTML-ului
Acces la sisteme externe din hărțile rețelei
A apărut suportul pentru un întreg set de noi macrocomenzi în URL-urile personalizate pentru o mai bună integrare a hărților cu sistemele externe. Astfel, un simplu clic pe pictograma nodului rețelei deschide, de exemplu, un tichet în sistemul de sarcini.
Deschide un tichet în Jira cu un clic
Regula de detectare poate fi un element de date dependent
De ce este necesar — te-ai putea întreba. Acest lucru permite utilizarea datelor metricii principale atât pentru detectare, cât și pentru colectarea directă a datelor. De exemplu, în cazul colectării datelor de la exportatorul Prometheus, Zabbix va efectua o cerere HTTP și va utiliza imediat informațiile obținute pentru toate elementele de date dependente: valorile metricilor și regulile de detectare de nivel scăzut.
Nou mod de vizualizare a problemelor pe hărți
A apărut suportul pentru imagini GIF animate pe hărți pentru o vizualizare mai vizibilă a problemelor.
Dispozitivele problematice au devenit mai evidente
Extragem date din antetele HTTP în monitorizarea web
În monitorizarea web a fost adăugată posibilitatea de a selecta date din antetul HTTP primit.
Acest lucru permite crearea de scripturi de monitorizare web sau de monitorizare a API-urilor terțe, folosind un token de autorizare obținut în una dintre etape.
Extragem AuthID din headerul HTTP
Zabbix Sender folosește toate adresele IP
Zabbix Sender acum trimite date prin toate adresele IP din parametrul ServerActive al fișierului de configurare al agentului.
Un nou filtru convenabil în configurația triggerelor
Pagina de configurare a triggerelor a primit un filtru extins pentru selectarea rapidă și convenabilă a triggerelor pe baza criteriilor specificate.
Selectăm triggerii care se referă la serviciul K8S
Afișăm timpul exact
Aici e simplu, acum Zabbix arată timpul exact când treci cu mouse-ul peste grafic.

Alte noutăți
- Un algoritm mai previzibil a fost implementat pentru schimbarea ordinii de plasare a widget-urilor în dashboard
- Posibilitatea de a modifica în masă parametrii prototipurilor de elemente de date
- Suport IPv6 pentru verificările DNS: „net.dns” și „new.dns.record”
- A fost adăugat parametrul „skip” pentru verificările „vmware.eventlog”
- Eroarea de execuție a pasului de preprocesare include numărul pasului
Cum să te actualizezi?
Pentru trecerea de la versiunile anterioare este necesară doar instalarea (servere și proxy) și a noii interfețe. Zabbix va efectua automat procedura de actualizare a bazei de date. Nu va fi necesară instalarea noilor agenți.
Organizăm webinarii gratuite pentru cei care doresc să afle mai multe detalii despre Zabbix 4.2 și să aibă ocazia să pună întrebări echipei Zabbix.
Nu uitați de popularul al comunității Zabbix, unde puteți primi întotdeauna consultanță și răspunsuri la întrebările dumneavoastră în limba română de la colegi mai experimentați, iar, dacă aveți noroc, chiar și de la dezvoltatorii Zabbix. Pentru începători, recomandăm .
Linkuri utile
—
—
—
Sursa: habr.com
