VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

VictoriaMetrics minangka DBMS sing cepet lan bisa diukur kanggo nyimpen lan ngolah data ing wangun seri wektu (cathetan kasusun saka wektu lan sakumpulan nilai sing cocog karo wektu iki, contone, dipikolehi liwat polling periodik saka status sensor utawa koleksi metrik).


VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Jenengku Kolobaev Pavel. DevOps, SRE, LeroyMerlin, kabeh kaya kode - kabeh babagan kita: babagan aku lan karyawan LeroyMerlin liyane.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

https://bit.ly/3jf1fIK

Ana maya adhedhasar OpenStack. Ana pranala cilik menyang radar teknis.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Iki dibangun ing hardware Kubernetes, uga ing kabeh layanan sing gegandhengan kanggo OpenStack lan logging.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Iki minangka skema sing ana ing pembangunan. Nalika kita ngembangake kabeh iki, kita duwe operator Prometheus sing nyimpen data ing kluster K8s dhewe. Dheweke kanthi otomatis nemokake apa sing kudu digosok lan dilebokake ing sangisore sikile, kira-kira.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kita kudu mindhah kabeh data ing njaba kluster Kubernetes, amarga yen ana kedadeyan, kita kudu ngerti apa lan ing ngendi.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Solusi pisanan yaiku nggunakake federasi nalika kita duwe Prometheus pihak katelu, nalika kita menyang cluster Kubernetes liwat mekanisme federasi.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Nanging ana sawetara masalah cilik ing kene. Ing kasus kita, masalah diwiwiti nalika kita duwe 250 metrik, lan nalika ana 000 metrik, kita nyadari yen kita ora bisa kerja kaya ngono. Kita tambah scrape_timeout nganti 400 detik.

Yagene kita kudu nindakake iki? Prometheus wiwit ngetung wektu entek saka awal pager. Ora Matter yen data isih mili. Yen sajrone wektu sing ditemtokake data kasebut ora digabung lan sesi ora ditutup liwat http, banjur sesi kasebut dianggep gagal lan data kasebut ora mlebu ing Prometheus dhewe.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Saben uwong ngerti grafik sing kita entuk nalika sawetara data ilang. Jadwal ambruk lan kita ora seneng karo iki.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Opsi sabanjure yaiku sharding adhedhasar rong Prometheus sing beda liwat mekanisme federasi sing padha.

Contone, mung njupuk lan beling kanthi jeneng. Iki uga bisa digunakake, nanging kita mutusaké kanggo nerusake.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Saiki kita kudu ngolah shards iki piye wae. Sampeyan bisa njupuk promxy, kang menyang wilayah shard lan multiplies data. Kerjane karo rong shards minangka titik entri siji. Iki bisa dileksanakake liwat promxy, nanging isih angel banget.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Pilihan pisanan yaiku kita pengin ninggalake mekanisme federasi amarga alon banget.

Pangembang Prometheus kanthi jelas ujar, "Guys, gunakake TimescaleDB sing beda amarga kita ora bakal ndhukung panyimpenan jangka panjang metrik." Iki dudu tugase. VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kita nulis ing selembar kertas sing isih kudu dibongkar ing njaba, supaya ora nyimpen kabeh ing sak panggonan.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kekurangan kapindho yaiku konsumsi memori. Ya, aku ngerti manawa akeh sing bakal ujar manawa ing taun 2020 sawetara gigabyte memori regane sen, nanging isih.

Saiki kita duwe lingkungan dev lan prod. Ing dev kira-kira 9 gigabyte kanggo 350 metrik. Ing prod iku 000 gigabyte lan luwih saka 14 metrik. Ing wektu sing padha, wektu retensi mung 780 menit. Iki ala. Lan saiki aku bakal nerangake apa.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kita nggawe pitungan, yaiku, kanthi siji lan setengah yuta metrik, lan kita wis cedhak karo dheweke, ing tahap desain entuk memori 35-37 gigabyte. Nanging wis 4 yuta metrik mbutuhake udakara 90 gigabyte memori. Yaiku, diwilang nggunakake rumus sing diwenehake dening pangembang Prometheus. Kita nyawang korélasi lan nyadari yen kita ora pengin mbayar sawetara yuta kanggo server mung kanggo ngawasi.

Kita ora mung nambah jumlah mesin, kita uga ngawasi mesin virtual dhewe. Mulane, luwih akeh mesin virtual, luwih akeh metrik saka macem-macem jinis, lan sapiturute.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kanthi papan disk, ora kabeh dadi ala, nanging aku pengin nambah. Kita nampa total 15 gigabyte sajrone 120 dina, yaiku 100 data sing dikompres, 20 data sing ora dikompres, nanging kita pengin luwih sithik.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Patut, kita nulis siji titik liyane - iki konsumsi gedhe saka sumber daya, kang isih arep kanggo nyimpen, amarga kita ora pengin kluster ngawasi nggunakake sumber daya liyane saka klompok kita, kang ngatur OpenStack.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ana siji liyane drawback saka Prometheus, kang wis dikenali kanggo awake dhewe, iki paling sawetara jinis watesan memori. Kanthi Prometheus, kabeh luwih elek ing kene, amarga ora ana twists kaya ngono. Nggunakake watesan ing docker uga ora dadi pilihan. Yen dumadakan RAF sampeyan ambruk lan ana 20-30 gigabyte, iku bakal njupuk wektu dawa banget kanggo munggah.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Iki minangka alesan liyane kenapa Prometheus ora cocog kanggo kita, yaiku kita ora bisa mbatesi konsumsi memori.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Iku bakal bisa kanggo nggawe rencana kuwi. We kudu rencana iki kanggo ngatur klompok HA. Kita pengin metrik kita tansah kasedhiya lan ing endi wae, sanajan server sing nyimpen metrik kasebut kacilakan. Lan kanthi mangkono kita kudu mbangun skema kasebut.

Skema iki ujar manawa kita bakal duwe duplikasi pecahan, lan, kanthi mangkono, duplikasi biaya sumber daya sing dikonsumsi. Iku bisa scaled meh horisontal, nanging Nanging konsumsi sumber daya bakal neraka.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kerugian ing urutan ing wangun sing kita nulis kanggo awake dhewe:

  • Mbutuhake pangunggahan metrik eksternal.
  • Konsumsi sumber daya dhuwur.
  • Ora ana cara kanggo matesi konsumsi memori.
  • Implementasi HA rumit lan sumber daya intensif.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kanggo awake dhewe, kita mutusake yen kita pindhah saka Prometheus minangka fasilitas panyimpenan.

Kita wis nemtokake syarat tambahan kanggo awake dhewe sing dibutuhake. Iki:

  • Iki minangka dhukungan promql, amarga akeh perkara sing wis ditulis kanggo Prometheus: pitakon, tandha.
  • Banjur kita duwe Grafana, sing wis ditulis kanthi cara sing padha kanggo Prometheus minangka backend. Aku ora pengin nulis ulang dashboard.
  • Kita pengin mbangun arsitektur HA normal.
  • Kita pengin nyuda konsumsi sumber daya apa wae.
  • Ana nuansa cilik liyane. Kita ora bisa nggunakake macem-macem jinis sistem koleksi metrik awan. Kita durung ngerti apa sing bakal ana ing metrik kasebut. Lan amarga ana apa wae sing bisa mabur ing kana, kita kudu mbatesi panggonan lokal.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ana sethitik pilihan. We diklumpukake kabeh kita wis pengalaman karo. Kita ndeleng kaca Prometheus ing bagean integrasi, maca pirang-pirang artikel, lan ndeleng apa sing ana ing kana. Lan kanggo awake dhewe, kita milih VictoriaMetrics minangka pengganti Prometheus.

Kenging punapa? Amarga:

  • Bisa nggawe promql.
  • Ana arsitektur modular.
  • Ora mbutuhake owah-owahan ing Grafana.
  • Lan sing paling penting, kita bisa uga nyedhiyakake panyimpenan metrik ing perusahaan kita minangka layanan, mula kita ngarep-arep babagan watesan macem-macem jinis supaya pangguna bisa nggunakake kabeh sumber daya kluster kanthi cara sing winates, amarga ana kemungkinan. sing bakal multitenancy.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ayo nggawe perbandingan pisanan. We njupuk Prometheus padha nang kluster, njaba Prometheus menyang. Tambah liwat remoteWrite VictoriaMetrics.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Aku bakal langsung nggawe leladen sing kene kita kejiret Tambah sethitik ing konsumsi CPU saka VictoriaMetrics. Wiki VictoriaMetrics ngandhani paramèter sing paling apik. We mriksa wong. Padha wis suda konsumsi CPU banget uga.

Ing kasus kita, konsumsi memori Prometheus, sing dumunung ing kluster Kubernetes, ora nambah sacara signifikan.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kita mbandhingake rong sumber data saka data sing padha. Ing Prometheus kita ndeleng data sing padha ilang. Kabeh apik ing VictoriaMetrics.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Hasil tes ruang disk. Kita ing Prometheus nampa total 120 gigabyte. Ing VictoriaMetrics, kita wis nampa 4 gigabyte saben dina. Ana mekanisme sing rada beda tinimbang sing biasa kita deleng ing Prometheus. Tegese, data kasebut wis dikompres kanthi apik sajrone sedina, sajrone setengah jam. Sawijining dina, ing setengah jam, dheweke wis panen kanthi apik, sanajan data kasebut bakal ilang mengko. Akibaté, kita disimpen ing papan disk.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kita uga nyimpen ing konsumsi sumber daya memori. Ing wektu tes, Prometheus dipasang ing mesin virtual - 8 intine, 24 gigabyte. Prometheus mangan meh kabeh. Dheweke tiba ing OOM Killer. Ing wektu sing padha, mung 900 metrik aktif sing diwutahake. Iki kira-kira 000-25 metrik per detik.

Kita mlayu VictoriaMetrics ing mesin virtual dual-inti karo 8 gigabyte RAM. Kita bisa nggawe VictoriaMetrics bisa digunakake kanthi apik kanthi muter sawetara perkara ing mesin 8GB. Ing pungkasan, kita nyimpen nganti 7 gigabyte. Ing wektu sing padha, kacepetan pangiriman konten, yaiku metrik, malah luwih dhuwur tinimbang Prometheus.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

CPU wis dadi luwih apik dibandhingake Prometheus. Ing kene Prometheus nggunakake 2,5 intine, lan VictoriaMetrics mung nggunakake 0,25 intine. Ing wiwitan - 0,5 intine. Nalika gabung, tekan siji inti, nanging iki arang banget, arang banget.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ing kasus kita, pilihan kasebut ana ing VictoriaMetrics amarga alasan sing jelas; kita pengin ngirit dhuwit lan kita nindakake.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ayo nyabrang rong titik langsung - unggahan metrik lan konsumsi sumber daya sing dhuwur. Lan kita mung kudu mutusake rong poin sing isih ana kanggo awake dhewe.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ing kene aku bakal nggawe reservasi langsung, kita nganggep VictoriaMetrics minangka panyimpenan metrik. Nanging wiwit kita paling kamungkinan bakal nyedhiyani VictoriaMetrics minangka panyimpenan kanggo kabeh Leroy, kita kudu matesi sing bakal nggunakake kluster iki supaya padha ora menehi kanggo kita.

Ana parameter apik sing ngidini sampeyan mbatesi wektu, volume data lan wektu eksekusi.

Ana uga pilihan banget sing ngidini kita mbatesi konsumsi memori, saéngga kita bisa nemokake imbangan banget sing bakal ngidini kita entuk kacepetan operasi normal lan konsumsi sumber daya sing cukup.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Minus siji titik liyane, yaiku nyabrang titik kasebut - sampeyan ora bisa mbatesi konsumsi memori.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ing iterasi pisanan, kita nyoba VictoriaMetrics Single Node. Sabanjure kita pindhah menyang VictoriaMetrics Cluster Version.

Ing kene kita duwe tangan gratis kanggo misahake layanan sing beda ing VictoriaMetrics gumantung saka apa sing bakal ditindakake lan sumber daya apa sing bakal dikonsumsi. Iki minangka solusi sing fleksibel lan trep. Kita nggunakake iki kanggo awake dhewe.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Komponen utama VictoriaMetrics Cluster Version yaiku vmstsorage. Bisa uga ana nomer N. Ing kasus kita, ana 2 nganti saiki.

Lan ana vminsert. Iki minangka server proxy sing ngidini kita: ngatur sharding antarane kabeh panyimpenan sing kita critakake, lan uga ngidini replika, yaiku sampeyan bakal duwe sharding lan replika.

Vminsert ndhukung protokol OpenTSDB, Graphite, InfluxDB lan remoteWrite saka Prometheus.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ana uga vmselect. Tugas utamane yaiku pindhah menyang vmstorage, nampa data saka wong-wong mau, deduplicate data iki lan menehi menyang klien.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ana bab apik sing disebut vmagent. Kita seneng banget karo dheweke. Iki ngidini sampeyan ngatur persis kaya Prometheus lan isih nindakake kabeh kaya Prometheus. Yaiku, ngumpulake metrik saka entitas lan layanan sing beda-beda lan dikirim menyang vminsert. Banjur kabeh gumantung sampeyan.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

layanan gedhe liyane vmalert, sing ngijini sampeyan kanggo nggunakake VictoriaMetrics minangka backend a, nampa data diproses saka vminsert lan ngirim menyang vmselect. Iku proses tandha dhewe, uga aturan. Ing kasus tandha, kita nampa tandha liwat alertmanager.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ana komponen wmauth. Kita bisa utawa ora (kita durung mutusake babagan iki) nggunakake minangka sistem wewenang kanggo versi multitenancy kluster. Ndhukung remotWrite kanggo Prometheus lan bisa menehi wewenang adhedhasar url, utawa bagean liya, ing ngendi sampeyan bisa nulis utawa ora bisa nulis.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ana uga vmbackup, vmrestore. Iki, ing intine, pemugaran lan serep kabeh data. Bisa S3, GCS, file.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Pengulangan pertama kluster kita digawe nalika karantina. Ing wektu iku, ora ana replika, mula iterasi kita kalebu rong klompok sing beda lan independen sing ditampa data liwat remoteWrite.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ing kene aku bakal nggawe reservasi yen nalika kita ngalih saka VictoriaMetrics Single Node menyang VictoriaMetrics Cluster Version, kita isih tetep nganggo sumber daya sing padha, yaiku sing utama yaiku memori. Iki kira-kira carane data kita, yaiku konsumsi sumber daya, disebarake.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Replika wis ditambahake ing kene. Kita gabungke kabeh iki dadi siji kluster sing relatif gedhe. Kabeh data kita loro sharded lan replicated.

Kluster kabeh duwe titik entri N, yaiku Prometheus bisa nambah data liwat HAPROXY. Ing kene kita duwe titik entri iki. Lan liwat titik entri iki sampeyan bisa mlebu saka Grafana.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ing kasus kita, HAPROXY minangka siji-sijine port sing milih proxy, nglebokake lan layanan liyane ing kluster iki. Ing kasus kita, ora bisa nggawe siji alamat; kita kudu nggawe sawetara titik mlebu, amarga mesin virtual dhewe sing digunakake kluster VictoriaMetrics dumunung ing zona sing beda saka panyedhiya awan sing padha, yaiku ora ing njero awan, nanging ing njaba. .

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kita wis alerting. Kita nggunakake. Kita nggunakake alertmanager saka Prometheus. Kita nggunakake Opsgenie lan Telegram minangka saluran pangiriman tandha. Ing Telegram padha pour saka dev, Mungkin soko saka prod, nanging biasane soko statistik, needed dening engineers. Lan Opsgenie kritis. Iki minangka telpon, manajemen insiden.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Pitakonan langgeng: "Sapa sing ngawasi?" Ing kasus kita, ngawasi ngawasi ngawasi dhewe, amarga kita nggunakake vmagent ing saben simpul. Lan amarga simpul kita disebarake ing pusat data sing beda saka panyedhiya sing padha, saben pusat data duwe saluran dhewe, padha mandhiri, lan sanajan otak pamisah teka, kita isih bakal nampa tandha. Ya, bakal ana luwih akeh, nanging luwih becik nampa tandha luwih akeh tinimbang ora ana.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Kita mungkasi dhaptar kanthi implementasi HA.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Lan luwih aku pengin nyathet pengalaman sesambungan karo komunitas VictoriaMetrics. Ternyata positif banget. Wong lanang iku responsif. Dheweke nyoba nyelidiki saben kasus sing ditawakake.

Aku miwiti masalah ing GitHub. Padha ditanggulangi kanthi cepet. Ana sawetara masalah liyane sing ora rampung ditutup, nanging aku wis bisa ndeleng saka kode sing bisa ing arah iki lagi ditindakake.

Pain utama kanggo kula sak iterasi ana yen aku mati simpul, banjur kanggo pisanan 30 detik vminsert ora bisa ngerti sing ana backend. Iki saiki wis diputusake. Lan secara harfiah ing detik utawa loro, data dijupuk saka kabeh simpul sing isih ana, lan panjalukan mandheg ngenteni simpul sing ilang.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

Ing sawetara titik, kita pengin VictoriaMetrics dadi operator VictoriaMetrics. Kita ngenteni dheweke. Saiki kita aktif mbangun kerangka kanggo operator VictoriaMetrics kanggo njupuk kabeh aturan pra-pitung, etc. Prometheus, amarga kita cukup aktif nggunakake aturan sing teka karo operator Prometheus.

Ana usulan kanggo nambah implementasine cluster. Aku mbatesi wong-wong mau ing ndhuwur.

Lan aku pancene pengin downsample. Ing kasus kita, downsampling dibutuhake khusus kanggo ndeleng tren. Kira-kira, siji metrik cukup kanggo kula sak dina. Tren kasebut dibutuhake kanggo setahun, telung, lima, sepuluh taun. Lan siji nilai metrik cukup cukup.
VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

  • Kita ngerti rasa lara, kaya sawetara kolega, nalika nggunakake Prometheus.
  • Kita milih VictoriaMetrics kanggo awake dhewe.
  • Iku timbangan cukup apik loro vertikal lan horisontal.
  • Kita bisa disebaraké komponen beda kanggo nomer beda kelenjar ing kluster, matesi dening memori, nambah memori, etc.

Kita bakal nggunakake VictoriaMetrics ing omah amarga kita seneng banget. Iki sing ana lan apa sing wis dadi.

VictoriaMetrics lan ngawasi maya pribadi. Pavel Kolobaev

https://t.me/VictoriaMetrics_ru1

Sawetara kode QR kanggo obrolan VictoriaMetrics, kontakku, radar teknis LeroyMerlin.

Source: www.habr.com

Add a comment