VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

VictoriaMetrics hè un DBMS rapidu è scalabile per almacenà è trasfurmà e dati in a forma di una serie di tempu (un registru forma un tempu è un inseme di valori currispundenu à questu tempu, per esempiu, ottenuti attraversu un sondaghju periodicu di u statu di i sensori). o raccoglie metriche).


VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Mi chjamu Pavel Kolobaev. DevOps, SRE, LeroyMerlin, tuttu hè cum'è codice - hè tuttu di noi: di mè è di l'altri impiegati di LeroyMerlin.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

https://bit.ly/3jf1fIK

Ci hè un nuvulu basatu annantu à OpenStack. Ci hè un picculu ligame à u radar tecnicu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Hè custruitu nantu à a basa di u ferru Kubernetes, è ancu nantu à tutti i servizii ligati à OpenStack è logging.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Questu hè u schema chì avemu avutu in u sviluppu. Quandu avemu sviluppatu tuttu questu, avemu avutu l'operatore Prometheus, chì hà almacenatu dati in u cluster K8s stessu. Truva automaticamente ciò chì deve esse lavatu è u mette sottu à i so pedi, à pocu pressu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Avemu bisognu di spustà tutte e dati fora di u cluster Kubernetes, perchè se qualcosa succede, allora avemu da capisce ciò chì è induve.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

A prima suluzione hè aduprà a federazione quandu avemu un terzu Prometheus quandu andemu à u cluster Kubernetes attraversu u mecanismu di federazione.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Ma ci sò qualchi prublemi minori quì. In u nostru casu, i prublemi cuminciaru quandu avemu avutu 250 metrica, è quandu hè diventatu 000 metrica, avemu capitu chì ùn pudemu micca travaglià cusì. Avemu aumentatu scrape_timeout à 400 seconde.

Perchè avemu avutu à fà questu? Prometheus cumencia à cuntà u timeout da u principiu di u mumentu di pickup. Ùn importa micca chì i dati sò sempre persu. Se durante stu periudu di tempu specificatu i dati ùn sò micca fusionati è a sessione ùn hè micca chjusa via http, allora hè cunsideratu chì a sessione hà fiascatu è i dati ùn entranu micca in Prometheus stessu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Ognunu cunnosci i grafici chì avemu avutu quandu una parte di e dati manca. I grafici sò strappati è ùn simu cuntenti.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

A prossima opzione hè sharding basatu annantu à dui Prometheus differenti attraversu u stessu mecanismu di federazione.

Per esempiu, basta à piglià è sparghje per nome. Questu pò ancu esse usatu, ma avemu decisu di passà.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Avemu da avà da processà sti frammenti in qualchì modu. Pudete piglià promxy, chì scende in l'area shard, multiplica i dati. Funziona cù dui frammenti cum'è un puntu d'entrata unicu. Questu pò esse implementatu attraversu promxy, ma hè troppu complicatu per avà.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

A prima opzione - vulemu abbandunà u mecanismu di a federazione, perchè hè assai lenta.

I sviluppatori di Prometheus dicenu esplicitamente: "Ragazzi, utilizate altre TimescaleDB, perchè ùn sustenemu micca u almacenamentu longu di metrica". Questu hè micca u so compitu. VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Scrivemu nantu à un pezzu di carta chì avemu sempre bisognu di scaricà fora, per ùn guardà tuttu in un locu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

U sicondu svantaghju hè u cunsumu di memoria. Iè, capiscu chì parechji diceranu chì in 2020 un paru di gigabyte di memoria valenu un centesimu, ma quantunque.

Avà avemu un dev è un ambiente prod. In dev, questu hè di circa 9 gigabyte per 350 metrica. In prod, questu hè 000 gigabyte cù una piccula metrica 14. À u listessu tempu, avemu solu 780 minuti di tempu di ritenzione. Questu hè male. È avà spiegheraghju perchè.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Facemu un calculu, vale à dì cù un milione è mezu di metrica, è simu digià vicinu à elli, in u stadiu di cuncepimentu avemu 35-37 gigabytes di memoria. Ma digià da 4 milioni di metri, circa 90 gigabytes di memoria sò digià richiesti. Questu hè, hè statu calculatu secondu a formula furnita da i sviluppatori Prometheus. Fighjemu a correlazione è avemu capitu chì ùn vulemu pagà un paru di milioni per un servitore solu per u monitoraghju.

Ùn avemu micca solu aumentà u numeru di macchine, ma ancu monitoremu e macchine virtuali stessi. Per quessa, più macchine virtuale, più metriche di varii tipi, etc. Averemu una crescita speciale di u nostru cluster in termini di metrica.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Cù u spaziu di discu, tuttu ùn hè micca cusì tristu quì, ma mi piacerebbe migliurà. Avemu ricivutu un totale di 15 gigabytes in 120 ghjorni, di quale 100 sò dati cumpressi, 20 sò dati micca cumpressi, ma sempre vulete menu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Dunque, scrivemu un puntu più - questu hè un grande cunsumu di risorse chì vulemu ancu salvà, perchè ùn vulemu chì u nostru cluster di monitoraghju manghja più risorse cà u nostru cluster chì gestisce OpenStack.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Ci hè un svantaghju più di Prometheus, chì avemu identificatu per noi stessi, questu hè almenu un tipu di limitazione di memoria. Cù Prometheus, tuttu hè assai peggiu quì, perchè ùn hà micca tali torsioni in tuttu. Utilizà u limitu di docker ùn hè ancu micca una opzione. Se di colpu u vostru RAF hè cascatu è ci sò 20-30 gigabytes, allora ci hà da piglià assai tempu per risurrezzione.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Questu hè un altru mutivu perchè Prometheus ùn hè micca adattatu per noi, vale à dì ùn pudemu micca limità u cunsumu di memoria.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Puderia esse pussibule cun un tali schema. Avemu bisognu di stu schema per urganizà un cluster HA. Vulemu chì e nostre metriche sò dispunibuli in ogni momentu, in ogni locu, ancu s'è u servitore chì guarda queste metriche si sbatte. È cusì avemu da custruisce un tali schema.

Stu schema dice chì avemu a duplicazione di shards, è, per quessa, a duplicazione di i costi di risorse cunsumate. Pò esse scalatu quasi horizontale, ma quantunque u cunsumu di risorse serà infernale.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Svantaghji in ordine, in a forma in quale avemu scrittu per noi stessu:

  • Richiede a carica di metriche à l'esternu.
  • Altu cunsumu di risorse.
  • Ùn pudete micca limità u cunsumu di memoria.
  • Implementazione cumplicata è intensiva di risorse di HA.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Per noi stessi, avemu decisu chì avemu alluntanatu da Prometheus cum'è una facilità di almacenamento.

Avemu identificatu esigenze supplementari per noi stessi chì avemu bisognu. Questu:

  • Questu hè u supportu promql, perchè assai hè statu scrittu per Prometheus: dumande, alerti.
  • È dopu avemu Grafana, chì hè digià scrittu in u listessu modu sottu Prometheus cum'è backend. Ùn vogliu micca scrive dashboards.
  • Vulemu custruisce una architettura HA normale.
  • Vulemu riduce u cunsumu di qualsiasi risorse.
  • Ci hè un altru picculu nuance. Ùn pudemu micca aduprà diversi tipi di sistemi di nuvola per a cullizzioni di metriche. Ùn sapemu micca ciò chì vulerà in queste metriche per ora. E postu chì qualcosa pò vulà quì, avemu da limità à u locu lucale.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

A scelta era chjuca. Avemu cullatu tuttu ciò chì avemu avutu sperienza. Fighjemu à a pagina di Prometheus in a seccione di integrazione, leghje una mansa d'articuli, fighjemu ciò chì hè generalmente dispunibule. È per noi, avemu sceltu VictoriaMetrics cum'è sustitutu di Prometheus.

Perchè? Perchè:

  • Capace di promql.
  • Ci hè una architettura modulare.
  • Ùn richiede micca cambiamenti à Grafana.
  • È più importantemente, prubabilmente furniremu un almacenamentu di metrica in a nostra cumpagnia cum'è serviziu, cusì guardemu in anticipu versu diversi tipi di restrizioni per chì l'utilizatori ponu utilizà tutte e risorse di u cluster in qualchì modu limitatu, perchè ci hè una chance. chì sarà multitenancy.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Facemu u primu paragone. Pigliemu u listessu Prometheus in u cluster, esternu Prometheus va à ellu. Aggiungi via remoteWrite VictoriaMetrics.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Faraghju una riservazione subitu chì quì avemu pigliatu un ligeru aumentu di u cunsumu di CPU da VictoriaMetrics. U wiki VictoriaMetrics dice chì i paràmetri sò più adattati. Avemu verificatu. Hanu riduciutu assai bè u cunsumu di u CPU.

In u nostru casu, u cunsumu di memoria di Prometheus, chì si trova in un cluster Kubernetes, ùn hà micca aumentatu significativamente.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Comparamu duie fonti di dati di u listessu dati. In Prometheus, vedemu tutti i stessi dati mancanti. Tuttu hè bonu in VictoriaMetrics.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Risultati di testi cù spaziu di discu. In Prometheus avemu 120 gigabyte in totale. À VictoriaMetrics, avemu digià ottene 4 gigabyte per ghjornu. Ci hè un miccanisimu un pocu sfarente di ciò chì site abituatu à vede in Prometheus. Questu hè, i dati sò digià abbastanza bè cumpressi per un ghjornu, per una meza ora. Sò digià bè cugliera in un ghjornu, in una meza ora, malgradu u fattu chì dopu i dati seranu uniti. In u risultatu, avemu salvatu u spaziu di discu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Salvemu ancu u cunsumu di risorse di memoria. À u mumentu di e teste, avemu avutu Prometheus implementatu nantu à una macchina virtuale - 8 core, 24 gigabytes. Prometheus manghja quasi tuttu. Hè cascatu annantu à OOM Killer. À u listessu tempu, solu 900 000 metrichi attivi sò stati versati in questu. Questu hè circa 25-000 metrica per seconda.

Avemu eseguitu VictoriaMetrics nantu à una macchina virtuale dual-core cù 8 gigabyte di RAM. Avemu riesciutu à ottene VictoriaMetrics per travaglià bè cù un pocu di cose nantu à una macchina 8GB. In fine, l'avemu guardatu à 7 gigabytes. À u listessu tempu, a velocità di spedizione di cuntenutu, vale à dì metrica, era ancu più altu ch'è quellu di Prometheus.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

U CPU hè assai megliu cà Prometheus. Quì Prometheus cunsuma 2,5 core, è VictoriaMetrics cunsuma solu 0,25 core. À u principiu - 0,5 core. Quandu si fusiona, righjunghji un core, ma questu hè estremamente, estremamente raru.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

In u nostru casu, l'scelta hè cascata nantu à VictoriaMetrics per ragioni evidenti, vulemu salvà soldi è salvatu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Crucemu dui punti ghjustu da u bat - questu hè u scaricamentu di metrica è un grande cunsumu di risorse. È ci ferma à decisu dui punti chì avemu sempre lasciatu per noi.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Quì faraghju una riservazione subitu, cunsideremu VictoriaMetrics cum'è un repository di metrica. Ma siccomu prubabilmente furniscemu VictoriaMetrics cum'è almacenamiento per tutti i Leroy, avemu bisognu di limità quelli chì anu da utilizà stu cluster per ùn mette micca à noi.

Ci hè un paràmetru maravigliosu chì permette di limità da u tempu, da a quantità di dati è da u tempu d'esekzione.

Ci hè ancu una opzione eccellente chì ci permette di limità u cunsumu di memoria, cusì pudemu truvà l'equilibriu assai chì ci permetterà di ottene una velocità di operazione normale è un cunsumu di risorse adattatu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Minus un puntu più, vale à dì, sguassate u puntu - ùn pudete micca limità u cunsumu di memoria.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

In i primi iterazioni, avemu pruvatu u VictoriaMetrics Single Node. Dopu andemu à a Versione VictoriaMetrics Cluster.

Quì avemu una manu libera nantu à u sughjettu di a siparazione di diversi servizii in VictoriaMetrics, secondu ciò chì spinaranu è quali risorse cunsumanu. Questa hè una suluzione assai flexible è cunvene. Avemu usatu noi stessi.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

I cumpunenti principali di a versione VictoriaMetrics Cluster sò vmstsorage. Ci pò esse numeru N. In u nostru casu, ci sò 2 di elli.

È ci hè vminsert. Questu hè un servitore proxy chì ci permette di: urganizà u sharding trà tutti l'almacenamientos chì l'avemu parlatu, è permette un'altra replica, vale à dì chì averete tramindui sharding è una replica.

Vminsert supporta i protokolli OpenTSDB, Graphite, InfluxDB è remoteWrite da Prometheus.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Ci hè ancu vmselect. U so compitu principale hè di andà in vmstorage, uttene dati da elli, dedupe questi dati è dà à u cliente.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Ci hè una cosa maravigliosa cum'è vmagent. Ci piace assai. Permette di cunfigurà cum'è Prometheus è ancu fà tuttu cum'è Prometheus. Vale à dì, raccoglie metriche da diverse entità è servizii è li manda à vminsert. Allora tuttu dipende di voi.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Un altru grande serviziu hè vmalert, chì permette di utilizà VictoriaMetrics cum'è backend, riceve dati processati da vminsert è mandà dati processati à vmselect. Prucessa l'alerte stessu, è ancu e regule. In u casu di alerti, avemu una alerta attraversu alertmanager.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Ci hè un cumpunente wmauth. Puderemu aduprà, è forse micca (ùn avemu micca decisu ancu) cum'è sistema d'autorizazione per versioni multitenancy di clusters. Supporta remoteWrite per Prometheus è pò autorizà basatu annantu à l'url, o piuttostu a seconda parte di questu, induve pudete o micca scrive.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Ci hè ancu vmbackup, vmrestore. Questu hè, in fattu, a risturazione è a copia di salvezza di tutti i dati. Capace à S3, GCS, file.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

A prima iterazione di u nostru cluster hè stata fatta durante a quarantena. À quellu tempu, ùn ci era micca una replica, cusì a nostra iterazione era custituita da dui clusters differenti è indipendenti, in quale avemu ricevutu dati via remoteWrite.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Quì aghju da fà una riservazione chì quandu avemu cambiatu da VictoriaMetrics Single Node à VictoriaMetrics Cluster Version, avemu sempre in i stessi risorse cunsumati, vale à dì chì u principale hè a memoria. Circa in questu modu i nostri dati sò stati distribuiti, vale à dì u cunsumu di risorse.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Una replica hè digià aghjuntu quì. Avemu cumminatu tuttu questu in un cluster relativamente grande. Tutti i dati sò sia sharded è replicati.

Tuttu u cluster hà N punti di entrata, chì significa chì Prometheus pò aghjunghje dati via HAPROXY. Quì avemu stu puntu di entrata. È attraversu stu puntu di entrata pudete login da Grafana.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

In u nostru casu, HAPROXY hè l'unicu portu chì i proxy selezziunate, inserite è altri servizii in questu cluster. In u nostru casu, era impussibile di fà un indirizzu, avemu avutu à fà parechji punti di entrata, perchè e macchine virtuali stessi, nantu à quale u cluster VictoriaMetrics hè in esecuzione, sò situati in diverse zoni di u stessu fornitore di nuvola, vale à dì micca in u nostru cloud. , ma fora.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Avemu una alerta. Avemu aduprà. Avemu aduprà alertmanager da Prometheus. Utilizemu Opsgenie è Telegram cum'è un canale di consegna d'alerta. In Telegram, si versanu da dev, forse qualcosa da prod, ma più cum'è qualcosa statisticu chì l'ingegneri anu bisognu. È Opsgenie hè criticu. Quessi sò chjamati, gestione di incidenti.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

L'eterna quistione: "Quale monitoreghja u monitoraghju?" In u nostru casu, u monitoraghju monitora u monitoraghju stessu, perchè usemu vmagent in ogni node. E postu chì i nostri nodi sò distribuiti in diversi centri di dati di u stessu fornitore, ogni centru di dati hà u so propiu canali, sò indipindenti, è ancu s'ellu arriva un cervellu split, avemu sempre riceve alerti. Iè, ci saranu più di elli, ma hè megliu riceve più alerti chè nimu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Finimu a nostra lista cù una implementazione HA.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

E in più mi piacerebbe nutà l'esperienza di cumunicazione cù a cumunità VictoriaMetrics. Hè risultatu assai pusitivu. I picciotti sò rispunsevuli. Pruvate di approfondisce in ogni casu chì hè prupostu.

Aghju creatu prublemi nantu à GitHub. Sò stati risolti assai rapidamente. Ci hè un coppiu più prublemi chì ùn sò micca cumplettamente chjusi, ma possu digià vede da u codice chì u travagliu hè in corso in questa direzzione.

U dulore principalu durante l'iterazioni per mè era chì si aghju tagliatu u node, allora per i primi 30 seconde vminsert ùn pudia capisce chì ùn ci era micca backend. Avà hè digià statu decisu. E littiralmenti in un secondu o dui, i dati sò pigliati da tutti i nodi rimanenti, è a dumanda ferma d'aspittà per quellu node mancante.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

Vulemu à un certu puntu da VictoriaMetrics per esse l'operatore VictoriaMetrics. L'avemu aspittatu. Avemu avà attivamente custruendu un ligame nantu à l'operatore VictoriaMetrics per piglià tutte e regule pre-calculating, etc. Prometheus, perchè avemu assai attivamente cù e regule chì venenu cù l'operatore Prometheus.

Ci sò pruposte per migliurà l'implementazione di cluster. I delineatu sopra.

È vogliu ancu veramente downsampling. In u nostru casu, u downsampling hè necessariu solu per vede i tendenzi. À pocu pressu, una metrica hè abbastanza per mè durante u ghjornu. Questi tendenzi sò necessarii per un annu, trè, cinque, deci anni. È un valore metricu hè abbastanza.
VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

  • Avemu cunnisciutu u dulore, cum'è alcuni di i nostri culleghi, mentre utilizanu Prometheus.
  • Avemu sceltu VictoriaMetrics per noi.
  • Scala abbastanza bè in verticale è horizontale.
  • Pudemu distribuisce diverse cumpunenti à un numeru sfarente di nodi in u cluster, limità in termini di memoria, aghjunghje memoria, etc.

Avemu aduprà VictoriaMetrics in casa, perchè ci hè piaciutu assai. Eccu ciò chì hè accadutu è ciò chì hè accadutu.

VictoriaMetrics è surviglianza privata di nuvola. Pavel Kolobaev

https://t.me/VictoriaMetrics_ru1

Un paru di codici qr per u chat VictoriaMetrics, i mo cuntatti, u radar tecnicu di LeroyMerlin.

Source: www.habr.com

Add a comment