{"id":81888,"date":"2020-05-17T13:42:23","date_gmt":"2020-05-17T11:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus"},"modified":"2020-05-17T13:42:23","modified_gmt":"2020-05-17T11:42:23","slug":"thanos-masshtabiruemyj-prometheus","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","title":{"rendered":"Thanos \u2014 Prometheus scalabile.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>La traduzione dell'articolo \u00e8 stata preparata appositamente per gli studenti del corso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">\u00abPratiche e strumenti DevOps\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fabxc\">Fabian Reinartz<\/a><\/noindex> \u2014 sviluppatore software, appassionato di Go e amante delle sfide complesse. \u00c8 anche maintainer di Prometheus e co-fondatore di Kubernetes SIG instrumentation. In precedenza ha lavorato come ingegnere di produzione in SoundCloud e ha guidato il team di monitoraggio in CoreOS. Attualmente lavora in Google.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Bplotka\">Bartek Plotka<\/a><\/noindex> \u2014 ingegnere delle infrastrutture in Improbable. \u00c8 appassionato di nuove tecnologie e delle sfide nei sistemi distribuiti. Ha esperienza nella programmazione a basso livello in Intel, esperienza come contributore in Mesos e un'esperienza SRE di livello mondiale in Improbable. Si dedica a migliorare il mondo dei microservizi. Le sue tre passioni: Golang, open source e pallavolo.<\/i><\/p>\n<p>Guardando il nostro prodotto di punta SpatialOS, puoi immaginare che Improbable necessiti di un'infrastruttura cloud altamente dinamica su scala globale con decine di cluster Kubernetes. Siamo stati tra i primi a utilizzare il sistema di monitoraggio <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex>. Prometheus \u00e8 in grado di monitorare milioni di metriche in tempo reale e viene fornito con un potente linguaggio di query che consente di estrarre le informazioni necessarie.<\/p>\n<p>La semplicit\u00e0 e l'affidabilit\u00e0 di Prometheus sono alcuni dei suoi principali vantaggi. Tuttavia, superato un certo limite, ci siamo imbattuti in alcuni svantaggi. Per affrontare questi problemi abbiamo sviluppato <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/\">Thanos<\/a><\/noindex> \u2014 un progetto open source creato da Improbable, per trasformare senza soluzione di continuit\u00e0 i cluster esistenti di Prometheus in un sistema di monitoraggio unificato con archiviazione illimitata dei dati storici. Thanos \u00e8 disponibile su Github <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">qui<\/a><\/noindex>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gdk.improbable.io\/l\/169082\/2020-01-10\/2j9yxq\">Rimani aggiornato sulle ultime novit\u00e0 da Improbable.<\/a><\/noindex><\/p>\n<h2>I nostri obiettivi con Thanos<\/h2>\n<p>\nCon un certo livello di scala, emergono problemi che vanno oltre le capacit\u00e0 di un Prometheus standard. Come possiamo archiviare in modo sicuro ed economico petabyte di dati storici? \u00c8 possibile farlo senza compromettere il tempo di risposta alle query? Possiamo accedere a tutte le metriche situate su server Prometheus diversi con una sola richiesta API? \u00c8 possibile in qualche modo combinare i dati replicati raccolti tramite Prometheus HA?<\/p>\n<p>Per affrontare queste questioni, abbiamo creato Thanos. Nelle sezioni seguenti descriviamo come abbiamo affrontato tali sfide e spieghiamo gli obiettivi che ci siamo prefissi.<\/p>\n<h4>Richiesta di dati da pi\u00f9 istanze di Prometheus (query globale)<\/h4>\n<p>\nPrometheus offre un approccio funzionale al partizionamento. Anche un singolo server Prometheus fornisce una scalabilit\u00e0 sufficiente per sollevare gli utenti dalle complessit\u00e0 del partizionamento orizzontale nella maggior parte degli scenari.<\/p>\n<p>Sebbene questo sia un ottimo modello di distribuzione, spesso \u00e8 necessario accedere ai dati su diversi server Prometheus attraverso un'unica API o interfaccia utente \u2014 vista globale. Certo, \u00e8 possibile visualizzare pi\u00f9 richieste in un unico pannello Grafana, ma ogni richiesta pu\u00f2 essere eseguita solo su un server Prometheus. D'altro canto, con Thanos puoi interrogare e aggregare dati da pi\u00f9 server Prometheus poich\u00e9 tutti sono accessibili da un unico endpoint.<\/p>\n<p>In passato, per ottenere una vista globale in Improbable, abbiamo organizzato le nostre istanze Prometheus in una struttura a pi\u00f9 livelli <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\/blob\/master\/docs\/federation.md#hierarchical-federation\">Federazione Gerarchica<\/a><\/noindex>. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u0430-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Prometheus, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a \u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u201c\u043b\u0438\u0441\u0442\u043e\u0432\u043e\u0433\u043e&quot; \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/82590f017734f5dc1038a0e13f772d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto approccio si \u00e8 rivelato problematico. Ha portato a una configurazione complessa, all'aggiunta di un ulteriore punto di guasto potenziale e all'applicazione di regole complicate per fornire al punto finale federato solo i dati necessari. Inoltre, una federazione di questo tipo non consente di ottenere una visione globale reale, poich\u00e9 non tutti i dati sono accessibili tramite una sola richiesta API.<\/p>\n<p>Questo \u00e8 strettamente legato a una visione unificata dei dati raccolti su server Prometheus ad alta disponibilit\u00e0 (high-availability, HA). Il modello HA di Prometheus raccoglie i dati in modo indipendente due volte, il che \u00e8 cos\u00ec semplice che non potrebbe essere pi\u00f9 semplice. Tuttavia, utilizzare una vista combinata e deduplicata di entrambi i flussi sarebbe molto pi\u00f9 comodo.<\/p>\n<p>Certamente, c'\u00e8 bisogno di server Prometheus altamente disponibili. In Improbable prendiamo molto sul serio il monitoraggio dei dati minuto per minuto, ma avere un solo esemplare di Prometheus nel cluster rappresenta un punto di fallimento singolo. Qualsiasi errore di configurazione o guasto hardware pu\u00f2 potenzialmente portare alla perdita di dati importanti. Anche un semplice deployment pu\u00f2 causare piccoli problemi nella raccolta delle metriche, dato che un riavvio pu\u00f2 richiedere significativamente pi\u00f9 tempo dell'intervallo di scraping.<\/p>\n<h4>Storage affidabile dei dati storici<\/h4>\n<p>\nUno storage di metriche economico, veloce e a lungo termine \u00e8 il nostro sogno (condiviso dalla maggior parte degli utenti di Prometheus). In Improbable siamo stati costretti a impostare il periodo di conservazione delle metriche a nove giorni (per Prometheus 1.8). Questo aggiunge ovvie limitazioni su quanto lontano possiamo guardare indietro.<\/p>\n<p>Prometheus 2.0 \u00e8 migliorato sotto questo aspetto, poich\u00e9 il numero di serie temporali non influisce pi\u00f9 sulle prestazioni complessive del server (vedi <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nDalewt4BOw\">il keynote di KubeCon su Prometheus 2<\/a><\/noindex>). Tuttavia, Prometheus memorizza i dati su disco locale. Anche se una compressione dei dati altamente efficiente pu\u00f2 ridurre significativamente l'uso del SSD locale, esiste comunque un limite alla quantit\u00e0 di dati storici che possono essere conservati.<\/p>\n<p>Inoltre, in Improbable ci preoccupiamo dell'affidabilit\u00e0, della semplicit\u00e0 e dei costi. I grandi dischi locali sono pi\u00f9 complessi da gestire e da eseguire il backup. Hanno costi maggiori e richiedono pi\u00f9 strumenti per il backup, il che porta a una complessit\u00e0 eccessiva.<\/p>\n<h4>Downsampling<\/h4>\n<p>\nNon appena abbiamo cominciato a lavorare con i dati storici, ci siamo resi conto che ci sono difficolt\u00e0 fondamentali con O-grande, che rendono le query sempre pi\u00f9 lente se lavoriamo con dati di settimane, mesi e anni.<\/p>\n<p>Una soluzione standard a questo problema \u00e8 <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Decimation_(signal_processing)\">downsampling<\/a><\/noindex> \u2014 ridurre la frequenza di campionamento del segnale. Con il downsampling possiamo 'ridurre la scala' a un intervallo di tempo pi\u00f9 ampio e mantenere lo stesso numero di campioni, il che aiuter\u00e0 a preservare la reattivit\u00e0 delle query.<\/p>\n<p>Il downsizing dei dati obsoleti \u00e8 un requisito inevitabile di qualsiasi soluzione per l'archiviazione a lungo termine e va oltre il Prometheus vanilla.<\/p>\n<h4>Obiettivi aggiuntivi<\/h4>\n<p>\nUno degli obiettivi iniziali del progetto Thanos era l'integrazione senza soluzione di continuit\u00e0 con qualsiasi installazione esistente di Prometheus. Il secondo obiettivo era un'implementazione semplice, con una barriera all'ingresso minima. Qualsiasi dipendenza deve essere facilmente soddisfatta sia per utenti piccoli che per grandi, il che implica anche un costo base poco significativo.<\/p>\n<h2>Architettura di Thanos<\/h2>\n<p>\nDopo aver elencato i nostri obiettivi nella sezione precedente, approfondiamo questi aspetti e vediamo come Thanos affronta queste problematiche.<\/p>\n<h4>Vista globale<\/h4>\n<p>\nPer ottenere una vista globale sopra le istanze esistenti di Prometheus, dobbiamo collegare un unico punto di ingresso delle richieste a tutti i server. \u00c8 esattamente ci\u00f2 di cui si occupa il componente Thanos. <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2015\/06\/the-distributed-system-toolkit-patterns#example-1-sidecar-containers\">Sidecar<\/a><\/noindex>. Viene distribuito accanto a ciascun server Prometheus e funge da proxy, servendo i dati locali di Prometheus tramite l'interfaccia gRPC Store API, che consente di selezionare i dati delle serie temporali in base alle etichette e all'intervallo di tempo.<\/p>\n<p>Dall'altra parte si trova il componente Querier orizzontalmente scalabile senza stato, che fa qualcosa di pi\u00f9 che rispondere alle richieste PromQL tramite l'API HTTP standard di Prometheus. I componenti Querier, Sidecar e altri Thanos comunicano tramite <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">protocollo gossip<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/fbcf1e756f5da4e8529f17abd4cedd00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Il Querier, quando riceve una richiesta, si connette al corrispondente server Store API, cio\u00e8 ai nostri Sidecar, e ottiene i dati delle serie temporali dai corrispondenti server Prometheus.<\/li>\n<li>Successivamente, unisce le risposte e esegue la query PromQL su di esse. Il Querier pu\u00f2 combinare dati sia non sovrapposti che duplicati dai server HA di Prometheus.<\/li>\n<\/ol>\n<p>\nQuesto risolve gran parte del nostro rompicapo: unire i dati da server Prometheus isolati in un'unica vista. Infatti, Thanos pu\u00f2 essere utilizzato solo per questa capacit\u00e0. Non \u00e8 necessario apportare modifiche ai server Prometheus esistenti!<\/p>\n<h4>Storage illimitato!<\/h4>\n<p>\nTuttavia, prima o poi, vorremo archiviare i dati che vanno oltre il normale periodo di conservazione di Prometheus. Per la conservazione dei dati storici, abbiamo scelto uno storage oggetti. \u00c8 ampiamente disponibile in qualsiasi cloud, cos\u00ec come nei data center locali ed \u00e8 molto economico. Inoltre, praticamente qualsiasi storage oggetti \u00e8 accessibile tramite il ben noto API S3.<\/p>\n<p>Prometheus scrive i dati dalla memoria operativa su disco circa ogni due ore. Il blocco di dati salvato contiene tutti i dati per un intervallo di tempo fisso ed \u00e8 immutabile. Questo \u00e8 molto comodo, poich\u00e9 il Thanos Sidecar pu\u00f2 semplicemente esaminare la directory dei dati di Prometheus e, man mano che nuovi blocchi appaiono, caricarli nei bucket dello storage oggetti.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/2be803d8d7e0ce9a5ffa441b7778a40b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCaricare nello storage oggetti immediatamente dopo la scrittura su disco consente anche di mantenere la semplicit\u00e0 del \u201cscraper\u201d (Prometheus e Thanos Sidecar). Questo semplifica la manutenzione, i costi e il design del sistema.<\/p>\n<p>Come vedete, il backup dei dati si realizza molto semplicemente. Ma che dire delle query sui dati nello storage oggetti?<\/p>\n<p>Il componente Thanos Store funge da proxy per accedere ai dati da uno storage object. Proprio come Thanos Sidecar, partecipa al gossip cluster e implementa lo Store API. In questo modo, i Querier esistenti possono considerarlo come un Sidecar, come un ulteriore fonte di dati di serie temporali \u2014 non \u00e8 necessaria alcuna configurazione speciale.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/5a437ae1bf8a6f79b8d24aeb9dde2d17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI blocchi di dati di serie temporali sono composti da diversi file di grandi dimensioni. Caricarli su richiesta sarebbe piuttosto inefficiente, mentre la memorizzazione nella cache locale richiederebbe enormi quantit\u00e0 di memoria e spazio su disco.<\/p>\n<p>Invece, lo Store Gateway sa come gestire il formato di archiviazione di Prometheus. Grazie a un intelligente pianificatore di richieste e alla memorizzazione nella cache solo delle parti indicizzate necessarie dei blocchi, \u00e8 stato possibile ridurre richieste complesse al minimo numero di richieste HTTP ai file dello storage object. In questo modo, \u00e8 possibile ridurre il numero di richieste di quattro-sei ordini di grandezza e ottenere tempi di risposta che in generale sono difficili da distinguere da richieste di dati su un SSD locale.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/ebcbe1ee16dbac18daa474e7cb4b12b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome mostrato nel diagramma sopra, Thanos Querier riduce notevolmente i costi per ogni richiesta di dati nello storage a oggetti, utilizzando il formato di archiviazione Prometheus e posizionando i dati correlati vicini. Con questo approccio, possiamo combinare numerose singole richieste in un numero minimo di operazioni bulk.<\/p>\n<h4>Compattazione e downsampling<\/h4>\n<p>\nDopo che un nuovo blocco di dati time series \u00e8 stato caricato con successo nello storage a oggetti, lo trattiamo come dati \u201cstorici\u201d, che diventano immediatamente accessibili tramite lo Store Gateway.<\/p>\n<p>Tuttavia, dopo un certo periodo, i blocchi provenienti da una fonte (Prometheus con Sidecar) si accumulano e non sfruttano pi\u00f9 tutto il potenziale di indicizzazione. Per risolvere questo problema, abbiamo introdotto un ulteriore componente chiamato Compactor. Questo applica semplicemente un meccanismo di compattazione locale di Prometheus ai dati storici nello storage a oggetti e pu\u00f2 essere eseguito come un semplice job batch periodico.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/c7dd83dab074a4c5f93069a4bc152342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGrazie a una compressione efficace, le richieste di archiviazione per lunghi periodi non rappresentano problemi in termini di dimensione dei dati. Tuttavia, il costo potenziale di decomprimere miliardi di valori e passarli attraverso il gestore delle richieste porter\u00e0 inevitabilmente a un aumento significativo del tempo di esecuzione della richiesta. D'altra parte, poich\u00e9 centinaia di punti dati corrispondono a ogni pixel dello schermo, diventa impossibile persino visualizzare i dati a piena risoluzione. Pertanto, il downsampling non solo \u00e8 possibile, ma non comporter\u00e0 una perdita di precisione apprezzabile. <\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/5f36a05aba3fbffa905b6a8da482ab3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer il downsampling dei dati, Compactor aggrega continuamente i dati con una risoluzione di cinque minuti e un'ora. Per ogni frammento non elaborato, codificato utilizzando la compressione XOR TSDB, vengono memorizzati diversi tipi di dati aggregati, come min, max o somma per un blocco. Questo consente al Querier di selezionare automaticamente l'aggregato pi\u00f9 appropriato per la data di richiesta PromQL. <\/p>\n<p>Per utilizzare i dati a bassa precisione, l'utente non ha bisogno di alcuna configurazione speciale. Querier passa automaticamente tra diverse risoluzioni e dati grezzi quando l'utente ingrandisce o riduce il livello di zoom. Se desiderato, l'utente pu\u00f2 gestire questo direttamente tramite il parametro 'step' nella richiesta. <\/p>\n<p>Poich\u00e9 il costo di archiviazione di un GB \u00e8 contenuto, Thanos conserva per impostazione predefinita i dati originali, i dati a risoluzione di cinque minuti e quelli di un'ora. Non \u00e8 necessario eliminare i dati originali.<\/p>\n<h2>Regole di registrazione<\/h2>\n<p>\nAnche con Thanos, le regole di registrazione sono una parte fondamentale dello stack di monitoraggio. Riducono la complessit\u00e0, la latenza e i costi delle richieste. Inoltre, sono utili per gli utenti che desiderano ottenere dati aggregati sulle metriche. Thanos si basa su istanze vaniglia di Prometheus, quindi \u00e8 perfettamente accettabile archiviare le regole di registrazione e di allerta sul server Prometheus esistente. Tuttavia, in alcuni casi, questo potrebbe non essere sufficiente:<\/p>\n<ul>\n<li>Allerta e regole globali (ad esempio, avviso quando un servizio non funziona su pi\u00f9 di due dei tre cluster).<\/li>\n<li>Regola per dati al di fuori dello storage locale.<\/li>\n<li>Il desiderio di mantenere tutte le regole e gli avvisi in un unico posto.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/ab48e044b952bd891932b99e248120fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer tutti questi casi, Thanos include un componente separato chiamato Ruler, che calcola regole e avvisi tramite Thanos Queries. Fornendo un ben noto StoreAPI, il nodo Query pu\u00f2 accedere a metriche fresche calcolate. Successivamente, queste vengono anche memorizzate in un archivio oggetti e diventano disponibili tramite Store Gateway.<\/p>\n<h2>La potenza di Thanos<\/h2>\n<p>\nThanos \u00e8 abbastanza flessibile da poter essere configurato secondo le tue esigenze. Questo \u00e8 particolarmente utile durante la migrazione da un semplice Prometheus. Rivediamo rapidamente, con un piccolo esempio, ci\u00f2 che abbiamo appreso sui componenti di Thanos. Ecco come trasferire il tuo Prometheus vanilla nel mondo della 'memoria illimitata delle metriche':<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabile.\" src=\"\/wp-content\/uploads\/2020\/05\/f6ee4185af57d2a1869890014e6a0062.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Aggiungi Thanos Sidecar ai tuoi server Prometheus \u2014 ad esempio, un container adiacente nel pod Kubernetes.<\/li>\n<li>\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043f\u043b\u0438\u043a Thanos Querier \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c gossip \u043c\u0435\u0436\u0434\u0443 Scraper \u0438 Querier. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0443 &#8216;thanos_cluster_members&#8217;.<\/li>\n<\/ol>\n<p>\nBastano solo questi due passaggi per garantire una visione globale e una deduplicazione fluida dei dati dalle potenziali repliche HA di Prometheus! Collega semplicemente i tuoi dashboard al punto finale HTTP Querier o utilizza direttamente l'interfaccia Thanos UI.<\/p>\n<p>Tuttavia, se hai bisogno di backup delle metriche e di archiviazione a lungo termine, saranno necessari altri tre passaggi:<\/p>\n<ol>\n<li>Crea un bucket AWS S3 o GCS. Configura il Sidecar per copiare i dati in questi bucket. Ora puoi minimizzare l'archiviazione locale dei dati.<\/li>\n<li>Distribuisci lo Store Gateway e connettilo al gossip-cluster esistente. Ora puoi inviare richieste ai dati nei backup!<\/li>\n<li>Distribuisci il Compactor per migliorare l'efficienza delle query per intervalli di tempo prolungati, utilizzando la compressione e il downsampling.<\/li>\n<\/ol>\n<p>\nSe vuoi saperne di pi\u00f9, non esitare a dare un'occhiata ai nostri <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/tree\/master\/kube\">esempi di manifesto kubernetes<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/blob\/master\/docs\/getting-started.md\">getting started<\/a><\/noindex>!<\/p>\n<p>In soli cinque passaggi abbiamo trasformato Prometheus in un sistema di monitoraggio affidabile con una visione globale, tempo di archiviazione illimitato e potenziale alta disponibilit\u00e0 delle metriche.<\/p>\n<h3>Pull request: abbiamo bisogno di te!<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">Thanos<\/a><\/noindex> fin dall'inizio \u00e8 stata un progetto open source. L'integrazione fluida con Prometheus e la possibilit\u00e0 di utilizzare solo una parte di Thanos lo rendono una scelta eccellente per scalare un sistema di monitoraggio senza sforzi eccessivi.<\/p>\n<p>Accogliamo sempre richieste di Pull Request e Issues su GitHub. Allo stesso tempo, non esitate a contattarci tramite GitHub Issues o Slack.<noindex><a rel=\"nofollow\" href=\"https:\/\/join.slack.com\/t\/improbable-eng\/shared_invite\/enQtMzQ1ODcyMzQ5MjM4LWY5ZWZmNGM2ODc5MmViNmQ3ZTA3ZTY3NzQwOTBlMTkzZmIxZTIxODk0OWU3YjZhNWVlNDU3MDlkZGViZjhkMjc\"> Improbable-eng #thanos<\/a><\/noindex>, se avete domande o feedback, o volete condividere la vostra esperienza! Se vi piace ci\u00f2 che facciamo in Improbable, non esitate a contattarci \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\/careers\/\">abbiamo sempre posizioni aperte.<\/a><\/noindex>!<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">Scopri di pi\u00f9 sul corso.<br \/>\n<\/a><\/noindex><\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/502122\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb. \u0424\u0430\u0431\u0438\u0430\u043d \u0420\u0435\u0439\u043d\u0430\u0440\u0446 (Fabian Reinartz) \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0444\u0430\u043d\u0430\u0442 Go \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043c\u044d\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Prometheus \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c Kubernetes SIG instrumentation. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043e\u043d \u0431\u044b\u043b production-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432 SoundCloud \u0438 \u0432\u043e\u0437\u0433\u043b\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432 CoreOS. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Google. \u0411\u0430\u0440\u0442\u0435\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81889,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81888","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb. \u0424\u0430\u0431\u0438\u0430\u043d \u0420\u0435\u0439\u043d\u0430\u0440\u0446 (Fabian Reinartz) \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0444\u0430\u043d\u0430\u0442 Go \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043c\u044d\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Prometheus \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c Kubernetes SIG instrumentation. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043e\u043d \u0431\u044b\u043b production-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432 SoundCloud \u0438 \u0432\u043e\u0437\u0433\u043b\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432 CoreOS. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Google. \u0411\u0430\u0440\u0442\u0435\u043a\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Thanos \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Prometheus | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb. \u0424\u0430\u0431\u0438\u0430\u043d \u0420\u0435\u0439\u043d\u0430\u0440\u0446 (Fabian Reinartz) \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0444\u0430\u043d\u0430\u0442 Go \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043c\u044d\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Prometheus \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c Kubernetes SIG instrumentation. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043e\u043d \u0431\u044b\u043b production-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432 SoundCloud \u0438 \u0432\u043e\u0437\u0433\u043b\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432 CoreOS. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Google. \u0411\u0430\u0440\u0442\u0435\u043a\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-17T11:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-17T11:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Thanos \u2014 Prometheus Scalabile | ProHoster","description":"La traduzione dell'articolo \u00e8 stata preparata appositamente per gli studenti del corso \u00abDevOps pratiche e strumenti\u00bb. Fabian Reinartz \u00e8 uno sviluppatore software, appassionato di Go e amante della risoluzione di problemi complessi. \u00c8 anche maintainer di Prometheus e cofondatore del Kubernetes SIG instrumentation. In passato ha lavorato come ingegnere di produzione in SoundCloud e ha guidato il team di monitoraggio in CoreOS. Attualmente lavora in Google. Bartek","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Thanos \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Prometheus | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb. \u0424\u0430\u0431\u0438\u0430\u043d \u0420\u0435\u0439\u043d\u0430\u0440\u0446 (Fabian Reinartz) \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0444\u0430\u043d\u0430\u0442 Go \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043c\u044d\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Prometheus \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c Kubernetes SIG instrumentation. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043e\u043d \u0431\u044b\u043b production-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432 SoundCloud \u0438 \u0432\u043e\u0437\u0433\u043b\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432 CoreOS. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Google. \u0411\u0430\u0440\u0442\u0435\u043a","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-17T11:42:23+00:00","article:modified_time":"2020-05-17T11:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81888","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:48:24","updated":"2022-09-30 01:06:17"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/81888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=81888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/81888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/81889"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=81888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=81888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=81888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}