{"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>Traduzione dell'articolo 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 di sfide complesse. \u00c8 anche maintainer di Prometheus e cofondatore di Kubernetes SIG instrumentation. In precedenza, \u00e8 stato 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 infrastrutturale di Improbable. \u00c8 appassionato di nuove tecnologie e problemi di sistemi distribuiti. Ha esperienza in programmazione a basso livello in Intel, come contribuente in Mesos e ha esperienza di produzione SRE su scala globale in Improbable. Si occupa di 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, potete intuire che per Improbable \u00e8 necessaria un'infrastruttura cloud ad alta dinamica di scala globale con decine di cluster Kubernetes. Siamo stati tra i primi a iniziare a utilizzare un 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 uno dei suoi principali vantaggi. Tuttavia, una volta raggiunte certe dimensioni, ci siamo imbattuti in diversi svantaggi. Per risolvere questi problemi, abbiamo sviluppato <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/\">Thanos<\/a><\/noindex> \u2014 un progetto open source sviluppato da Improbable, per trasformare senza soluzione di continuit\u00e0 i cluster Prometheus esistenti in un'unica sistema di monitoraggio con storage illimitato di 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\">Rimanete aggiornati con le ultime notizie da Improbable.<\/a><\/noindex><\/p>\n<h2>I nostri obiettivi con Thanos<\/h2>\n<p>\nA una certa scala sorgono problemi che vanno oltre le capacit\u00e0 del Prometheus standard. Come possiamo archiviare in modo sicuro ed economico petabyte di dati storici? \u00c8 possibile farlo senza compromettere i tempi di risposta delle query? Possiamo accedere a tutte le metriche, situate su diversi server Prometheus, tramite 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 la risoluzione di queste questioni e spieghiamo gli obiettivi che ci siamo prefissati.<\/p>\n<h4>Richiesta di dati da pi\u00f9 istanze di Prometheus (query globale)<\/h4>\n<p>\nPrometheus offre un approccio funzionale allo sharding. Anche un singolo server Prometheus fornisce una scalabilit\u00e0 sufficiente per liberare gli utenti dalle complessit\u00e0 dello sharding orizzontale nella maggior parte dei casi d'uso.<\/p>\n<p>Sebbene questo sia un ottimo modello di distribuzione, spesso \u00e8 necessario accedere ai dati su diversi server Prometheus tramite una singola API o UI \u2014 vista globale. Certamente, \u00e8 possibile visualizzare pi\u00f9 query in un singolo pannello di Grafana, ma ogni query pu\u00f2 essere eseguita solo su un server Prometheus. D'altra parte, con Thanos puoi richiedere e aggregare dati da pi\u00f9 server Prometheus, poich\u00e9 tutti sono accessibili da un unico endpoint.<\/p>\n<p>In precedenza, per ottenere una vista globale in Improbable, abbiamo organizzato le nostre istanze di Prometheus in una struttura multilivello <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\/blob\/master\/docs\/federation.md#hierarchical-federation\">Federazione gerarchica<\/a><\/noindex>. Questo significava creare un meta-server Prometheus che raccoglie parte delle metriche da ogni server \"leaf\".<\/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 complessit\u00e0 della configurazione, all'aggiunta di un ulteriore potenziale punto di guasto e all'applicazione di regole complesse per fornire all'endpoint federato solo i dati necessari. Inoltre, una federazione di questo tipo non consente di ottenere una vera vista globale, poich\u00e9 non tutti i dati sono disponibili da una singola richiesta API.<\/p>\n<p>A questo \u00e8 strettamente correlata la visione unificata dei dati raccolti su server Prometheus ad alta disponibilit\u00e0 (high-availability, HA). Il modello HA di Prometheus raccoglie indipendentemente i dati due volte, il che \u00e8 cos\u00ec semplice che non potrebbe essere pi\u00f9 facile. Tuttavia, sarebbe molto pi\u00f9 comodo utilizzare una visione combinata e deduplicata di entrambi i flussi.<\/p>\n<p>Certo, c'\u00e8 una necessit\u00e0 nei server ad alta disponibilit\u00e0 di Prometheus. In Improbable prendiamo molto sul serio il monitoraggio dei dati minuto per minuto, ma avere un'unica istanza di Prometheus nel cluster rappresenta un unico punto di guasto. Qualsiasi errore di configurazione o guasto hardware potrebbe potenzialmente portare alla perdita di dati importanti. Anche un semplice deployment pu\u00f2 causare lievi interruzioni nella raccolta delle metriche, poich\u00e9 il riavvio pu\u00f2 richiedere significativamente pi\u00f9 tempo dell'intervallo di scraping.<\/p>\n<h4>Archiviazione affidabile dei dati storici<\/h4>\n<p>\nUno storage dei metriche economico, veloce e a lungo termine \u00e8 il nostro sogno (condiviso dalla maggior parte degli utenti di Prometheus). In Improbable abbiamo dovuto impostare il periodo di conservazione dei metriche a nove giorni (per Prometheus 1.8). Ci\u00f2 aggiunge evidenti limiti a quanto indietro possiamo guardare.<\/p>\n<p>Prometheus 2.0 in questo senso \u00e8 migliorato, 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\">KubeCon keynote 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 di SSD locale, alla fine esiste comunque un limite alla quantit\u00e0 di dati storici memorizzati.<\/p>\n<p>Inoltre, in Improbable ci preoccupiamo dell'affidabilit\u00e0, semplicit\u00e0 e costo. I grandi dischi locali sono pi\u00f9 complessi da gestire e da fare backup. Costano di pi\u00f9 e richiedono pi\u00f9 strumenti per il backup, portando a una complessit\u00e0 eccessiva.<\/p>\n<h4>Downsampling<\/h4>\n<p>\nNon appena abbiamo iniziato a lavorare con i dati storici, ci siamo resi conto che ci sono complessit\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>La 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 'ridimensionare' su un intervallo di tempo pi\u00f9 ampio e mantenere lo stesso numero di campioni, il che consente di mantenere reattive le query.<\/p>\n<p>Il downsampling dei dati storici \u00e8 un requisito inevitabile di qualsiasi soluzione di 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 la semplicit\u00e0 d'uso con una barriera all'ingresso minima. Tutte le dipendenze devono essere facilmente soddisfatte sia per piccoli che per grandi utenti, il che implica anche un costo di base trascurabile.<\/p>\n<h2>Architettura di Thanos<\/h2>\n<p>\nDopo che nel precedente capitolo sono stati elencati i nostri obiettivi, lavoriamo su di essi e vediamo come Thanos affronta queste problematiche.<\/p>\n<h4>Vista globale<\/h4>\n<p>\nPer ottenere una vista globale sopra gli esemplari esistenti di Prometheus, abbiamo bisogno di unificare un punto di accesso per le richieste con tutti i server. Questo \u00e8 esattamente ci\u00f2 che fa 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 ogni server Prometheus e funziona come un proxy, servendo i dati locali di Prometheus tramite l'interfaccia gRPC dello Store API, consentendo di selezionare i dati delle serie temporali in base ai tag e all'intervallo di tempo.<\/p>\n<p>Dall'altro lato c'\u00e8 un componente Querier orizzontalmente scalabile senza stato, che fa un po' pi\u00f9 che semplicemente rispondere alle richieste PromQL tramite il consueto API HTTP di Prometheus. I componenti Querier, Sidecar e altri Thanos interagiscono tramite <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">il 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, una volta ricevuta la richiesta, si connette al server corrispondente dello Store API, ovvero ai nostri Sidecar, e recupera i dati delle serie temporali dai server Prometheus corrispondenti.<\/li>\n<li>Successivamente, unisce le risposte e esegue la richiesta PromQL su di esse. Il Querier pu\u00f2 unire sia dati non sovrapposti che dati duplicati dai server Prometheus HA.<\/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 funzionalit\u00e0. Non \u00e8 necessario apportare alcuna modifica ai server Prometheus esistenti!<\/p>\n<h4>Archiviazione illimitata!<\/h4>\n<p>\nTuttavia, prima o poi vorremo conservare i dati che superano i normali tempi di conservazione di Prometheus. Per l'archiviazione dei dati storici, abbiamo scelto lo storage a oggetti. \u00c8 ampiamente disponibile in qualsiasi cloud, cos\u00ec come nei data center locali, ed \u00e8 molto economico. Inoltre, praticamente qualsiasi storage a 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 Thanos Sidecar pu\u00f2 semplicemente controllare la directory dei dati di Prometheus e, man mano che emergono nuovi blocchi, caricarli nei bucket dello storage oggetto.<\/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 \/>\nIl caricamento nello storage oggetto subito dopo la scrittura su disco permette anche di mantenere la semplicit\u00e0 dello \u201cscraper\u201d (Prometheus e Thanos Sidecar). Questo semplifica la manutenzione, i costi e il design del sistema.<\/p>\n<p>Come potete vedere, il backup dei dati \u00e8 realizzato in modo molto semplice. Ma cosa possiamo dire delle richieste ai dati nello storage oggetto?<\/p>\n<p>Il componente Thanos Store funge da proxy per ottenere dati dallo storage oggetto. Come Thanos Sidecar, \u00e8 coinvolto nel gossip cluster e implementa lo Store API. In questo modo, i Querier esistenti possono considerarlo come Sidecar, come un'ulteriore fonte di dati delle time series \u2014 non sono necessarie configurazioni speciali.<\/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 dei dati delle time series sono composti da diversi grandi file. Scaricarli su richiesta sarebbe piuttosto inefficiente, mentre la memorizzazione nella cache locale richiederebbe una quantit\u00e0 enorme di memoria e spazio su disco.<\/p>\n<p>Invece, il Store Gateway sa come gestire il formato di memorizzazione di Prometheus. Grazie a uno scheduler intelligente delle richieste e alla memorizzazione nella cache delle sole parti indice necessarie dei blocchi, \u00e8 possibile ridurre le richieste complesse al numero minimo di richieste HTTP ai file dello storage oggetto. In questo modo, si pu\u00f2 ridurre il numero di richieste di quattro-sei ordini di grandezza e ottenere tempi di risposta che in generale sono difficili da differenziare dalle richieste ai dati su SSD locali.<\/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 significativamente i costi per una singola richiesta ai dati nello storage oggetto, utilizzando il formato di memorizzazione di Prometheus e collocando i dati correlati in prossimit\u00e0. Utilizzando questo approccio, possiamo combinare molte richieste singole nel numero minimo di operazioni bulk.<\/p>\n<h4>Compattazione e downsampling<\/h4>\n<p>\nDopo che un nuovo blocco di dati delle time series \u00e8 stato caricato con successo nello storage oggetto, lo consideriamo come dati \u201cstorici\u201d, che diventano immediatamente disponibili tramite il Store Gateway.<\/p>\n<p>Tuttavia, dopo un certo periodo di tempo, i blocchi provenienti da una sola 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 locale di compressione di Prometheus ai dati storici nello storage 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, una query nello storage per un lungo periodo di tempo non comporta problemi dal punto di vista delle dimensioni dei dati. Tuttavia, il costo potenziale di decomprimere un miliardo di valori e di passarli attraverso il gestore di query porter\u00e0 inevitabilmente a un aumento significativo del tempo di esecuzione della query. D'altra parte, poich\u00e9 per ogni pixel dello schermo ci sono centinaia di punti dati, diventa impossibile anche solo visualizzare i dati a piena risoluzione. Pertanto, il downsampling non solo \u00e8 possibile, ma non comporter\u00e0 una perdita di precisione significativa. <\/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 con la compressione XOR di TSDB, vengono memorizzati diversi tipi di dati aggregati, come min, max o somma per un singolo blocco. Questo consente a Querier di selezionare automaticamente l'aggregato pi\u00f9 adatto per la richiesta PromQL fornita. <\/p>\n<p>Per utilizzare dati a precisione ridotta, all'utente non \u00e8 richiesta alcuna configurazione speciale. Querier passa automaticamente tra diverse risoluzioni e dati non elaborati mentre l'utente ingrandisce o riduce lo zoom. Se lo desidera, l'utente pu\u00f2 gestire questo direttamente tramite il parametro \u201cstep\u201d nella query. <\/p>\n<p>Poich\u00e9 il costo di archiviare un GB \u00e8 contenuto, per impostazione predefinita Thanos conserva i dati originali, i dati con risoluzione di cinque minuti e un'ora. Non \u00e8 necessario eliminare i dati originali.<\/p>\n<h2>Regole di registrazione<\/h2>\n<p>\nAnche con Thanos, le recording rules sono una parte sostanziale dello stack di monitoraggio. Riducono la complessit\u00e0, la latenza e il costo delle query. Sono anche utili per gli utenti per ottenere dati aggregati sulle metriche. Thanos si basa su istanze vanilla di Prometheus, quindi \u00e8 del tutto accettabile conservare le recording rules e le alerting rules su un server Prometheus esistente. Tuttavia, in alcuni casi questo potrebbe non essere sufficiente:<\/p>\n<ul>\n<li>Alert e rule globali (ad esempio, avviso quando un servizio non funziona in pi\u00f9 di due su tre cluster).<\/li>\n<li>Rule per dati al di fuori dello storage locale.<\/li>\n<li>Tendenza a mantenere tutte le rule e alert in un unico luogo.<\/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 rule e alert attraverso le Thanos Queries. Fornendo uno StoreAPI ben noto, il nodo Query pu\u00f2 accedere a metriche calcolate fresche. Successivamente, vengono anche memorizzate nello storage a oggetti e diventano accessibili tramite Store Gateway.<\/p>\n<h2>La potenza di Thanos<\/h2>\n<p>\nThanos \u00e8 abbastanza flessibile da poter essere configurato in base alle tue esigenze. Questo \u00e8 particolarmente utile durante la migrazione da un semplice Prometheus. Rivediamo rapidamente, con un piccolo esempio, cosa abbiamo imparato 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, ad esempio un container adiacente in un pod Kubernetes.<\/li>\n<li>Distribuisci pi\u00f9 repliche di Thanos Querier per la visualizzazione dei dati. In questa fase, \u00e8 facile configurare il gossip tra Scraper e Querier. Per verificare l'interazione dei componenti, utilizza la metrica 'thanos_cluster_members'.<\/li>\n<\/ol>\n<p>\nSolo questi due passaggi sono sufficienti per garantire una vista globale e una deduplica delle informazioni senza soluzione di continuit\u00e0 dalle potenziali repliche HA di Prometheus! Basta collegare i tuoi dashboard all'endpoint HTTP Querier o utilizzare direttamente l'interfaccia Thanos UI.<\/p>\n<p>Tuttavia, se hai bisogno di backup delle metriche e di storage a lungo termine, sar\u00e0 necessario eseguire ancora 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 ridurre al minimo lo storage locale dei dati.<\/li>\n<li>Distribuisci Store Gateway e collegalo all'attuale cluster gossip. Ora puoi inviare richieste ai dati nei backup!<\/li>\n<li>Espandi il Compactor per migliorare l'efficienza delle query su 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\">iniziare<\/a><\/noindex>!<\/p>\n<p>In soli cinque passaggi abbiamo trasformato Prometheus in un sistema di monitoraggio affidabile con vista globale, senza limiti di tempo di conservazione e con una potenziale alta disponibilit\u00e0 delle metriche.<\/p>\n<h3>Richiesta di pull: abbiamo bisogno di te!<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">Thanos<\/a><\/noindex> \u00e8 stato un progetto open source sin dall'inizio. L'integrazione fluida con Prometheus e la possibilit\u00e0 di utilizzare solo una parte di Thanos lo rendono una scelta eccellente per scalare il sistema di monitoraggio senza sforzi aggiuntivi.<\/p>\n<p>Siamo sempre felici di ricevere richieste di pull e segnalazioni su GitHub. Nel frattempo, non esitare 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 hai domande o feedback, o se vuoi condividere la tua esperienza! Se ti piace quello che facciamo in Improbable, non esitare 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 5.0.1.1 - 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.\" \/>\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) 5.0.1.1\" \/>\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.\" \/>\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 'Pratiche e strumenti DevOps'.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}