{"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\/nl\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","title":{"rendered":"Thanos \u2014 schaalbare Prometheus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>De vertaling van het artikel is speciaal voorbereid voor studenten van de cursus <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">\u00abDevOps-praktijken en -tools\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fabxc\">Fabian Reinartz<\/a><\/noindex> \u2014 softwareontwikkelaar, Go-fan en liefhebber van het oplossen van complexe vraagstukken. Hij is ook de maintainer van Prometheus en medeoprichter van Kubernetes SIG instrumentation. Daarvoor was hij production engineer bij SoundCloud en leidde hij het monitoringteam bij CoreOS. Momenteel werkt hij bij Google.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Bplotka\">Bartek Plotka<\/a><\/noindex> \u2014 infrastructuuringenieur bij Improbable. Hij houdt zich bezig met nieuwe technologie\u00ebn en uitdagingen in gedistribueerde systemen. Heeft ervaring met low-level programmeren bij Intel, is contributor bij Mesos en heeft wereldwijd production ervaring als SRE bij Improbable. Hij werkt aan het verbeteren van de wereld van microservices. Zijn drie passies: Golang, open source en volleybal.<\/i><\/p>\n<p>Als je naar ons vlaggenschipproduct SpatialOS kijkt, kun je raden dat Improbable een zeer dynamische cloudinfrastructuur nodig heeft van wereldformaat met tientallen Kubernetes-clusters. Wij waren een van de eersten die het monitoring systeem <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex>gebruikten. Prometheus kan miljoenen metrics in real time volgen en wordt geleverd met een krachtige query-taal waarmee je de benodigde informatie kunt ophalen.<\/p>\n<p>De eenvoud en betrouwbaarheid van Prometheus is een van zijn belangrijkste voordelen. Echter, na een bepaalde schaling stuiten we op verschillende nadelen. Om deze problemen aan te pakken, hebben we <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/\">Thanos<\/a><\/noindex> ontwikkeld \u2014 een open source-project, gemaakt door Improbable, om bestaande Prometheus-clusters naadloos te transformeren in \u00e9\u00e9n monitoring systeem met onbeperkte opslag van historische data. Thanos is beschikbaar op Github <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">hier<\/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\">Blijf op de hoogte van het laatste nieuws van Improbable.<\/a><\/noindex><\/p>\n<h2>Onze doelen met Thanos<\/h2>\n<p>\nBij een bepaalde schaling ontstaan er problemen die de capaciteiten van vanilla Prometheus overschrijden. Hoe sla je petabytes aan historische gegevens betrouwbaar en kosteneffectief op? Is het mogelijk om dit te doen zonder de responstijd van aanvragen te schaden? Kun je toegang krijgen tot alle metrics die zich op verschillende Prometheus-servers bevinden met \u00e9\u00e9n API-aanroep? Is het op de een of andere manier mogelijk om gereplicateerde gegevens, verzameld met Prometheus HA, samen te voegen?<\/p>\n<p>Om deze vragen te beantwoorden, hebben we Thanos gecre\u00eberd. In de volgende secties beschrijven we hoe we deze uitdagingen zijn aangegaan en de doelen die we voor ogen hadden.<\/p>\n<h4>Data aanvragen van meerdere Prometheus-instanties (global query)<\/h4>\n<p>\nPrometheus biedt een functionele benadering van sharding. Zelfs \u00e9\u00e9n Prometheus-server biedt voldoende schaalbaarheid om gebruikers te verlossen van de complexiteiten van horizontaal sharden in vrijwel alle gebruikstoepassingen.<\/p>\n<p>Hoewel dit een uitstekende implementatiemodel is, is het vaak nodig om toegang te krijgen tot gegevens op verschillende Prometheus-servers via \u00e9\u00e9n API of UI \u2014 global view. Natuurlijk is er de mogelijkheid om meerdere verzoeken in \u00e9\u00e9n Grafana-panel weer te geven, maar elk verzoek kan alleen op \u00e9\u00e9n Prometheus-server worden uitgevoerd. Aan de andere kant kun je met Thanos gegevens opvragen en aggregeren van meerdere Prometheus-servers, omdat ze allemaal vanaf \u00e9\u00e9n eindpunt toegankelijk zijn.<\/p>\n<p>Eerder, om een global view in Improbable te verkrijgen, hebben we onze Prometheus-instanties in een gelaagde <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\/blob\/master\/docs\/federation.md#hierarchical-federation\">Hi\u00ebrarchische Federatie<\/a><\/noindex>. Dit betekende het cre\u00ebren van \u00e9\u00e9n meta-server van Prometheus, die een deel van de metrics van elke \"leaf\" server verzamelt.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/82590f017734f5dc1038a0e13f772d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDeze aanpak bleek problematisch te zijn. Het leidde tot een gecompliceerdere configuratie, de toevoeging van een extra potenti\u00eble noodstop en het toepassen van complexe regels om de federated eindpunt alleen de benodigde gegevens te bieden. Bovendien maakt deze soort federatie het niet mogelijk om een echte global view te verkrijgen, aangezien niet alle gegevens beschikbaar zijn vanuit \u00e9\u00e9n API-aanroep.<\/p>\n<p>Dit is nauw verbonden met een uniforme weergave van gegevens, verzameld op hoge beschikbaarheid (high-availability, HA) Prometheus-servers. Het HA-model van Prometheus verzamelt gegevens onafhankelijk twee keer, wat zo eenvoudig is dat het niet eenvoudiger kan. Het zou echter veel handiger zijn om een gecombineerde en gededupliceerde weergave van beide stroomgegevens te gebruiken.<\/p>\n<p>Natuurlijk is er behoefte aan hoge beschikbaarheid in Prometheus-servers. Bij Improbable nemen we gegevensmonitoring per minuut zeer serieus, maar het hebben van \u00e9\u00e9n Prometheus-instantie per cluster is een enkelvoudig punt van falen. Elke configuratiefout of hardwarestoring kan potentieel leiden tot het verlies van belangrijke gegevens. Zelfs een eenvoudige implementatie kan leiden tot kleine onderbrekingen in het verzamelen van metrics, aangezien een herstart aanzienlijk langer kan duren dan de scrapesnelheid.<\/p>\n<h4>Betrouwbare opslag van historische gegevens<\/h4>\n<p>\nGoedkope, snelle en duurzame metricopslag is onze droom (die door de meeste gebruikers van Prometheus wordt gedeeld). Bij Improbable waren we gedwongen om de opslagduur van metrics in te stellen op negen dagen (voor Prometheus 1.8). Dit legt duidelijke beperkingen op hoe ver we terug kunnen kijken.<\/p>\n<p>Prometheus 2.0 is hierin verbeterd, omdat het aantal time series niet langer invloed heeft op de algehele serverprestaties (zie <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nDalewt4BOw\">de KubeCon keynote over Prometheus 2<\/a><\/noindex>). Desondanks slaat Prometheus gegevens lokaal op. Hoewel hoogwaardige gegevenscompressie het gebruik van lokale SSD's aanzienlijk kan verminderen, blijft er uiteindelijk een limiet op de hoeveelheid opgeslagen historische data.<\/p>\n<p>Bij Improbable geven we bovendien om betrouwbaarheid, eenvoud en kosten. Grote lokale schijven zijn moeilijker te beheren en te back-uppen. Ze zijn duurder en vereisen meer tools voor back-up, wat leidt tot overbodige complexiteit.<\/p>\n<h4>Downsampling<\/h4>\n<p>\nZodra we begonnen te werken met historische gegevens, realiseerden we ons dat er fundamentele complicaties zijn met O-groot, die queries steeds trager maken als we werken met gegevens over weken, maanden en jaren.<\/p>\n<p>De standaardoplossing voor dit probleem is <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Decimation_(signal_processing)\">downsampling<\/a><\/noindex> \u2014 het verlagen van de samplingfrequentie van een signaal. Door de samplingfrequentie te verlagen kunnen we het 'schalen' naar een grotere tijdsperiode en het aantal monsters behouden, waardoor de responstijd van de queries behouden blijft.<\/p>\n<p>Downsampling van oude gegevens is een onvermijdelijke vereiste voor elke oplossing voor langdurige opslag en gaat verder dan vanilla Prometheus.<\/p>\n<h4>Aanvullende doelen<\/h4>\n<p>\nEen van de oorspronkelijke doelen van het Thanos-project was een naadloze integratie met bestaande Prometheus-installaties. Het tweede doel was eenvoudige operationele mogelijkheden met een minimale instapdrempel. Alle afhankelijkheden moeten gemakkelijk voldoen aan zowel kleine als grote gebruikers, wat ook betekent dat de basis kosten laag moeten zijn.<\/p>\n<h2>Architectuur van Thanos<\/h2>\n<p>\nNadat we in de vorige sectie onze doelen hebben opgesomd, laten we ze aanpakken en bekijken hoe Thanos deze problemen oplost.<\/p>\n<h4>Globaal overzicht<\/h4>\n<p>\nOm een global view te verkrijgen bovenop bestaande Prometheus-instanties, moeten we een enkele toegangspunt voor verzoeken verbinden aan alle servers. Dat is precies wat het Thanos-component doet. <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2015\/06\/the-distributed-system-toolkit-patterns#example-1-sidecar-containers\">Sidecar<\/a><\/noindex>. Het wordt naast elke Prometheus-server uitgerold en fungeert als proxy die lokale Prometheus-gegevens levert via de gRPC-interface van de Store API, waarmee time series-gegevens op basis van labels en een tijdsbereik kunnen worden opgehaald.<\/p>\n<p>Aan de andere kant is er een horizontaal schaalbaar, stateless component genaamd Querier, dat iets meer doet dan alleen reageren op PromQL-verzoeken via de standaard Prometheus HTTP API. De componenten Querier, Sidecar en andere Thanos-onderdelen communiceren via <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">het gossip-protocol.<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/fbcf1e756f5da4e8529f17abd4cedd00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Wanneer Querier een verzoek ontvangt, verbindt hij zich met de overeenkomstige Store API-server, dat wil zeggen met onze Sidecars, en ontvangt hij time series-gegevens van de bijbehorende Prometheus-servers.<\/li>\n<li>Daarna combineert hij de antwoorden en voert PromQL-verzoeken uit. Querier kan zowel niet-overlappende als duplicaatgegevens van HA-Prometheus-servers combineren.<\/li>\n<\/ol>\n<p>\nDit lost het grootste deel van onze puzzel op \u2014 het combineren van gegevens van ge\u00efsoleerde Prometheus-servers in een uniforme weergave. In feite kan Thanos alleen al voor deze functionaliteit worden gebruikt. Er zijn geen wijzigingen nodig aan bestaande Prometheus-servers!<\/p>\n<h4>Onbeperkte opslagduur!<\/h4>\n<p>\nMaar vroeg of laat willen we gegevens opslaan die de gebruikelijke opslagperiode van Prometheus overschrijden. Voor het opslaan van historische gegevens hebben we objectopslag gekozen. Deze is breed beschikbaar in elke cloud en ook in lokale datacentra, en is zeer kosteneffectief. Bovendien is vrijwel elke objectopslag toegankelijk via de goed bekende S3 API.<\/p>\n<p>Prometheus schrijft gegevens ongeveer elke twee uur van het RAM naar de schijf. Een blok met opgeslagen gegevens bevat alle gegevens voor een vaste tijdsperiode en is onveranderlijk. Dit is erg handig, omdat Thanos Sidecar simpelweg de gegevenscatalogus van Prometheus kan bekijken en, naarmate er nieuwe blokken verschijnen, deze in de buckets van de objectopslag kan laden.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/2be803d8d7e0ce9a5ffa441b7778a40b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet laden in objectopslag direct na het schrijven naar de schijf maakt ook de eenvoud van de 'scraper' (Prometheus en Thanos Sidecar) mogelijk. Dit vereenvoudigt onderhoud, kosten en het ontwerp van het systeem.<\/p>\n<p>Zoals u kunt zien, wordt het maken van een back-up van gegevens heel eenvoudig gerealiseerd. Maar hoe zit het met het opvragen van gegevens in de objectopslag?<\/p>\n<p>De Thanos Store-component fungeert als een proxy voor het ophalen van gegevens uit de objectopslag. Net als de Thanos Sidecar maakt hij deel uit van een gossip-cluster en implementeert hij de Store API. Hierdoor kunnen bestaande Querier deze beschouwen als Sidecar, als een extra bron van time series-gegevens\u2014er is geen speciale configuratie nodig.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/5a437ae1bf8a6f79b8d24aeb9dde2d17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBlocks van time series-gegevens bestaan uit enkele grote bestanden. Het on-demand laden ervan zou behoorlijk ineffici\u00ebnt zijn, en lokaal cachen zou enorme hoeveelheden geheugen en schijfruimte vereisen.<\/p>\n<p>In plaats daarvan weet de Store Gateway hoe om te gaan met het opslagformaat van Prometheus. Dankzij een slimme query-planner en het cachen van alleen de benodigde indexdelen van de blocks, is het nu mogelijk om complexe queries te verkorten tot een minimaal aantal HTTP-verzoeken naar bestanden in de objectopslag. Op deze manier kan het aantal verzoeken met vier tot zes ordes worden verminderd en kan een responstijd worden bereikt die in wezen moeilijk te onderscheiden is van verzoeken naar gegevens op lokale SSD's.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/ebcbe1ee16dbac18daa474e7cb4b12b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZoals weergegeven in de bovenstaande diagram, vermindert de Thanos Querier aanzienlijk de kosten van \u00e9\u00e9n verzoek om gegevens in de objectopslag, door het opslagformaat van Prometheus te gebruiken en gerelateerde gegevens dicht bij elkaar te plaatsen. Met deze aanpak kunnen we talrijke enkele verzoeken combineren in een minimaal aantal bulk-operaties.<\/p>\n<h4>Compacteren en downsampling<\/h4>\n<p>\nNadat een nieuw block van time series-gegevens succesvol in de objectopslag is geladen, beschouwen we het als 'historische' gegevens die direct beschikbaar zijn via de Store Gateway.<\/p>\n<p>Echter, na verloop van tijd stapelen blocks van dezelfde bron (Prometheus met Sidecar) zich op en benutten ze al niet meer het volledige potentieel van de indexering. Om dit probleem op te lossen, hebben we een andere component ge\u00efntroduceerd genaamd Compactor. Deze past simpelweg het lokale compaction-mechanisme van Prometheus toe op historische gegevens in de objectopslag en kan worden uitgevoerd als een eenvoudige periodieke batchtaak.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/c7dd83dab074a4c5f93069a4bc152342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDankzij effici\u00ebnte compressie vormt een verzoek aan de opslag gedurende langere tijd geen probleem qua datagrootte. Echter, de potenti\u00eble kosten van het decomprimeren van een miljard waarden en het doorvoeren van deze door de queryverwerker zullen onvermijdelijk leiden tot een aanzienlijke toename van de query-uitvoeringstijd. Aan de andere kant, aangezien er honderden datapunten per pixel op het scherm zijn, wordt het zelfs onmogelijk om de gegevens in volledige resolutie te visualiseren. Daarom is downsampling niet alleen mogelijk, maar zal het ook niet leiden tot merkbare verlies van nauwkeurigheid. <\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/5f36a05aba3fbffa905b6a8da482ab3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVoor het downsampled gegevens verzamelt Compactor continu gegevens met een resolutie van vijf minuten en \u00e9\u00e9n uur. Voor elk onbewerkte fragment, gecodeerd met behulp van TSDB XOR-compressie, worden verschillende soorten geaggregeerde gegevens opgeslagen, zoals min, max of sum voor \u00e9\u00e9n blok. Dit stelt de Querier in staat om automatisch de aggregaat te kiezen die geschikt is voor de gegeven PromQL-query. <\/p>\n<p>Voor het gebruik van gegevens met verminderde nauwkeurigheid hoeft de gebruiker geen speciale configuratie uit te voeren. De Querier schakelt automatisch tussen verschillende resoluties en onbewerkte gegevens naarmate de gebruiker in- en uitzoomt. Indien gewenst kan de gebruiker dit direct beheren via de parameter \u201cstep\u201d in de query. <\/p>\n<p>Aangezien de kosten voor het opslaan van \u00e9\u00e9n GB laag zijn, slaat Thanos standaard de oorspronkelijke gegevens en gegevens met een resolutie van vijf minuten en \u00e9\u00e9n uur op. Er is geen noodzaak om de oorspronkelijke gegevens te verwijderen.<\/p>\n<h2>Recording rules<\/h2>\n<p>\nZelfs met Thanos zijn recording rules een essentieel onderdeel van de monitoringstack. Ze verminderen de complexiteit, vertraging en kosten van queries. Ze zijn ook handig voor gebruikers om geaggregeerde gegevens op metrics te ontvangen. Thanos is gebaseerd op de vanilla instapversies van Prometheus, dus het is volkomen legitiem om recording rules en alerting rules op de bestaande Prometheus-server op te slaan. In sommige gevallen kan dit echter onvoldoende zijn:<\/p>\n<ul>\n<li>Global alert en rule (bijvoorbeeld een waarschuwing wanneer de service niet draait op meer dan twee van de drie clusters).<\/li>\n<li>Rule voor gegevens buiten de lokale opslag.<\/li>\n<li>De ambitie om alle rules en alerts op \u00e9\u00e9n plek te bewaren.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/ab48e044b952bd891932b99e248120fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVoor al deze situaties bevat Thanos een aparte component, genaamd Ruler, die regels en waarschuwingen berekent via Thanos Queries. Door gebruik te maken van de goed bekende StoreAPI kan de Query-knoop toegang krijgen tot vers berekende metrics. Later worden deze ook opgeslagen in objectopslag en worden ze toegankelijk via de Store Gateway.<\/p>\n<h2>De kracht van Thanos<\/h2>\n<p>\nThanos is flexibel genoeg om aan uw eisen te voldoen. Dit is vooral handig bij de migratie van een eenvoudige Prometheus. Laten we snel door een klein voorbeeld herinneren wat we hebben geleerd over de componenten van Thanos. Zo kunt u uw vanilla Prometheus naar de wereld van 'onbeperkte opslag van metrics' brengen:<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 schaalbare Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/f6ee4185af57d2a1869890014e6a0062.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Voeg Thanos Sidecar toe aan uw Prometheus-servers - bijvoorbeeld als een naastgelegen container in een Kubernetes-pod.<\/li>\n<li>Rol meerdere replica's van Thanos Querier uit voor de mogelijkheid om gegevens te bekijken. Op dit moment is het gemakkelijk om gossip tussen Scraper en Querier in te stellen. Gebruik de metric 'thanos_cluster_members' om de interactie tussen componenten te controleren.<\/li>\n<\/ol>\n<p>\nSlechts deze twee stappen zijn voldoende om een global view en naadloze deduplicatie van gegevens van potenti\u00eble HA-replica's van Prometheus te waarborgen! Verbind eenvoudig uw dashboards met het HTTP-eindpunt van Querier of gebruik de Thanos UI direct.<\/p>\n<p>Als u echter een back-up van metrics en langdurige opslag nodig heeft, moet u nog drie stappen uitvoeren:<\/p>\n<ol>\n<li>Maak een AWS S3- of GCS-bucket aan. Configureer de Sidecar om gegevens naar deze buckets te kopi\u00ebren. Nu kunt u de lokale opslag van gegevens minimaliseren.<\/li>\n<li>D\u00e9ployeer de Store Gateway en koppel deze aan de bestaande gossip-cluster. Nu kunt u verzoeken indienen voor gegevens in de back-ups!<\/li>\n<li>D\u00e9ployeer de Compactor om de effici\u00ebntie van verzoeken voor lange tijdsintervallen te verbeteren, door te compacteren en te downsample.<\/li>\n<\/ol>\n<p>\nAls u meer wilt leren, neem gerust een kijkje op onze <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/tree\/master\/kube\">kubernetes manifestvoorbeelden<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/blob\/master\/docs\/getting-started.md\">beginnen<\/a><\/noindex>!<\/p>\n<p>In slechts vijf stappen hebben we Prometheus omgevormd tot een betrouwbare monitoringssysteem met een global view, onbeperkte opslagduur en potenti\u00eble hoge beschikbaarheid van metrics.<\/p>\n<h3>Pull request: we hebben u nodig!<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">Thanos<\/a><\/noindex> vanaf het begin was een open-sourceproject. Naadloze integratie met Prometheus en de mogelijkheid om slechts een deel van Thanos te gebruiken, maakt het een uitstekende keuze voor het schalen van uw monitoringsysteem zonder al te veel moeite.<\/p>\n<p>We zijn altijd blij met GitHub Pull Requests en Issues. Aarzel ook niet om contact met ons op te nemen via GitHub Issues of Slack.<noindex><a rel=\"nofollow\" href=\"https:\/\/join.slack.com\/t\/improbable-eng\/shared_invite\/enQtMzQ1ODcyMzQ5MjM4LWY5ZWZmNGM2ODc5MmViNmQ3ZTA3ZTY3NzQwOTBlMTkzZmIxZTIxODk0OWU3YjZhNWVlNDU3MDlkZGViZjhkMjc\"> Improbable-eng #thanos<\/a><\/noindex>, als je vragen of feedback hebt, of je wilt je ervaringen met ons delen! Als je vindt dat we goed werk leveren bij Improbable, aarzel dan niet om contact met ons op te nemen \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\/careers\/\">we hebben altijd vacatures.<\/a><\/noindex>!<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">Meer informatie over de cursus.<br \/>\n<\/a><\/noindex><\/p>\n<p>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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 schaalbare Prometheus | ProHoster","description":"De vertaling van het artikel is speciaal voorbereid voor studenten van de cursus 'DevOps-praktijken en -tools'.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/81888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=81888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/81888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/81889"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=81888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=81888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=81888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}