{"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\/da\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","title":{"rendered":"Thanos \u2014 skalerbar Prometheus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Overs\u00e6ttelsen er specielt udarbejdet til studerende p\u00e5 kurset <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">\u201eDevOps praksis og v\u00e6rkt\u00f8jer\u201c<\/a><\/noindex>.<\/i><\/b><\/p>\n<p>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fabxc\">Fabian Reinartz<\/a><\/noindex> er softwareudvikler, Go-entusiast og elsker at l\u00f8se komplekse problemer. Han er ogs\u00e5 maintainer af Prometheus og medstifter af Kubernetes SIG instrumentation. Tidligere var han produktionsingeni\u00f8r hos SoundCloud og ledte overv\u00e5gningsgruppen hos CoreOS. I \u00f8jeblikket arbejder han hos Google.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Bplotka\">Bartek Plotka<\/a><\/noindex> er infrastrukturingeni\u00f8r hos Improbable. Han interesserer sig for nye teknologier og udfordringer inden for distribuerede systemer. Han har erfaring med lavniveau-programmering hos Intel, har bidraget til Mesos og har verdensomsp\u00e6ndende SRE-erfaring hos Improbable. Han arbejder p\u00e5 at forbedre mikrotjenestens verden. Tre af hans passioner: Golang, open source og volleyball.<\/i><\/p>\n<p>N\u00e5r man ser p\u00e5 vores flagskibsprodukt SpatialOS, kan man fornemme, at Improbable har brug for en h\u00f8jtydende cloud-infrastruktur i global skala med dusinvis af Kubernetes-klynger. Vi var blandt de f\u00f8rste til at begynde at bruge overv\u00e5gningssystemet <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex>. Prometheus kan overv\u00e5ge millioner af metrics i realtid og leveres med et kraftfuldt foresp\u00f8rgselssprog, der g\u00f8r det muligt at tr\u00e6kke de n\u00f8dvendige oplysninger.<\/p>\n<p>Enkelheden og p\u00e5lideligheden af Prometheus er en af dets prim\u00e6re fordele. Men efter at have n\u00e5et en bestemt skala st\u00f8dte vi p\u00e5 flere ulemper. For at l\u00f8se disse problemer har vi udviklet <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/\">Thanos<\/a><\/noindex> , et open source-projekt skabt af Improbable, til problemfri transformation af eksisterende Prometheus-klynger til et enkelt overv\u00e5gningssystem med ubegr\u00e6nset opbevaring af historiske data. Thanos er tilg\u00e6ngelig p\u00e5 Github <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">her<\/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\">Bliv opdateret med de seneste nyheder fra Improbable.<\/a><\/noindex><\/p>\n<h2>Vores m\u00e5l med Thanos<\/h2>\n<p>\nVed en given skala opst\u00e5r der problemer, der g\u00e5r ud over de muligheder, som vanille Prometheus har. Hvordan opbevarer man p\u00e5lideligt og \u00f8konomisk petabytes af historiske data? Kan dette g\u00f8res uden at g\u00e5 p\u00e5 kompromis med svartiden p\u00e5 foresp\u00f8rgsler? Kan man f\u00e5 adgang til alle metrics, der ligger p\u00e5 forskellige Prometheus-servere, med \u00e9t API-kald? Kan man p\u00e5 en eller anden m\u00e5de kombinere de replicerede data, der er indsamlet med Prometheus HA?<\/p>\n<p>For at besvare disse sp\u00f8rgsm\u00e5l har vi skabt Thanos. I de f\u00f8lgende afsnit beskriver vi, hvordan vi greb disse udfordringer an, og forklarer de m\u00e5l, vi har sat os.<\/p>\n<h4>Dataforesp\u00f8rgsel fra flere Prometheus-instans (global query)<\/h4>\n<p>\nPrometheus tilbyder en funktionel tilgang til sharding. Selv en enkelt Prometheus-server giver tilstr\u00e6kkelig skalerbarhed til at befri brugerne fra kompleksiteten ved horisontal sharding i n\u00e6sten alle anvendelsesscenarier.<\/p>\n<p>Sk\u00f8nt dette er en fremragende implementeringsmodel, er det ofte n\u00f8dvendigt at f\u00e5 adgang til data p\u00e5 forskellige Prometheus-servere gennem et enkelt API eller UI \u2014 globalt overblik. Selvf\u00f8lgelig er der mulighed for at vise flere foresp\u00f8rgsler i et enkelt Grafana-panel, men hver foresp\u00f8rgsel kan kun udf\u00f8res p\u00e5 \u00e9n Prometheus-server. P\u00e5 den anden side, med Thanos kan du foresp\u00f8rge og aggregere data fra flere Prometheus-servere, da de alle er tilg\u00e6ngelige fra et enkelt endpoint.<\/p>\n<p>Tidligere, for at opn\u00e5 globalt overblik i Improbable, organiserede vi vores Prometheus-forekomster i en multilevel <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\/blob\/master\/docs\/federation.md#hierarchical-federation\">Hierarchical Federation<\/a><\/noindex>. Dette bet\u00f8d oprettelse af en metaserver for Prometheus, der indsamler en del af m\u00e5lingerne fra hver \"blad\" server.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/82590f017734f5dc1038a0e13f772d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDenne tilgang viste sig at v\u00e6re problematisk. Den f\u00f8rte til en kompleks konfiguration, tilf\u00f8jede en yderligere potentiel fejlkilde og anvendte komplicerede regler for at give den federated endpoint kun de n\u00f8dvendige data. Desuden tillader denne form for federation ikke et \u00e6gte globalt overblik, da ikke alle data er tilg\u00e6ngelige fra en enkelt API-anmodning.<\/p>\n<p>Dette er t\u00e6t relateret til det ensartede datasyn, der er indsamlet p\u00e5 h\u00f8jtilg\u00e6ngelige (high-availability, HA) Prometheus-servere. HA-modellen for Prometheus indsamler data uafh\u00e6ngigt to gange, hvilket er s\u00e5 enkelt, at det ikke kan v\u00e6re lettere. Dog ville det v\u00e6re meget mere praktisk at bruge en samlet og dedupliceret fremstilling af begge str\u00f8mme.<\/p>\n<p>Der er selvf\u00f8lgelig et behov for h\u00f8jt tilg\u00e6ngelige Prometheus-servere. Hos Improbable tager vi minut-for-minut overv\u00e5gning af data meget alvorligt, men at have \u00e9n Prometheus-forekomst i klyngen er en enkelt fejlkilde. Enhver konfigurationsfejl eller hardwarefejl kan potentielt f\u00f8re til tab af vigtige data. Selv en simpel implementering kan f\u00f8re til sm\u00e5 afbrydelser i metricsindsamlingen, da genstart kan tage betydeligt l\u00e6ngere tid end skrabefrekvensen.<\/p>\n<h4>P\u00e5lidelig opbevaring af historiske data<\/h4>\n<p>\nBilligt, hurtigt og langsigtet metric-lagring er vores dr\u00f8m (som deles af de fleste brugere af Prometheus). Hos Improbable m\u00e5tte vi indstille opbevaringsperioden for metrics til ni dage (for Prometheus 1.8). Dette skaber \u00e5benlyse begr\u00e6nsninger for, hvor langt tilbage vi kan se.<\/p>\n<p>Prometheus 2.0 er blevet bedre i denne henseende, da antallet af tidsserier ikke l\u00e6ngere p\u00e5virker serverens samlede ydeevne (se <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nDalewt4BOw\">KubeCon-keynote om Prometheus 2<\/a><\/noindex>). Ikke desto mindre gemmer Prometheus data p\u00e5 den lokale disk. Selvom h\u00f8jtydende datakomprimering kan reducere brugen af lokal SSD betydeligt, er der stadig en gr\u00e6nse for m\u00e6ngden af historiske data, der kan gemmes.<\/p>\n<p>Derudover v\u00e6rner vi hos Improbable om p\u00e5lidelighed, enkelhed og omkostninger. Store lokale diske er mere komplekse at administrere og sikkerhedskopiere. De er dyrere og kr\u00e6ver flere v\u00e6rkt\u00f8jer til sikkerhedskopiering, hvilket f\u00f8rer til un\u00f8dvendig kompleksitet.<\/p>\n<h4>Nedpr\u00f8ving<\/h4>\n<p>\nDa vi begyndte at arbejde med historiske data, inds\u00e5 vi, at der er fundamentale problemer med O-storstilet, som g\u00f8r foresp\u00f8rgsler langsommere og langsommere, n\u00e5r vi arbejder med data fra uger, m\u00e5neder og \u00e5r.<\/p>\n<p>Standardl\u00f8sningen p\u00e5 dette problem er <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Decimation_(signal_processing)\">nedpr\u00f8vning<\/a><\/noindex> (downsampling) \u2014 reduktion af signalets pr\u00f8vehastighed. Ved at s\u00e6nke pr\u00f8vehastigheden kan vi \"skalere ned\" til et st\u00f8rre tidsrum og opretholde det samme antal pr\u00f8ver, hvilket vil sikre foresp\u00f8rgningens responsivitet.<\/p>\n<p>Nedpr\u00f8vning af gamle data er et uundg\u00e5eligt krav for enhver l\u00f8sning til langsigtet lagring og g\u00e5r ud over standard Prometheus.<\/p>\n<h4>Yderligere m\u00e5l<\/h4>\n<p>\nEt af de oprindelige m\u00e5l for Thanos-projektet var problemfri integration med eksisterende Prometheus-installationer. Det andet m\u00e5l var nem betjening med minimal adgangsbarriere. Enhver afh\u00e6ngighed skal v\u00e6re let at opfylde for b\u00e5de sm\u00e5 og store brugere, hvilket ogs\u00e5 foruds\u00e6tter lave grundomkostninger.<\/p>\n<h2>Thanos-arkitektur<\/h2>\n<p>\nN\u00e5r vi nu har opremset vores m\u00e5l i det forrige afsnit, lad os arbejde hen imod dem og se, hvordan Thanos adresserer disse problemer.<\/p>\n<h4>Global visning<\/h4>\n<p>\nFor a global view overlaying existing Prometheus instances, we need to link a single entry point for requests to all servers. This is exactly what the Thanos component does. <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2015\/06\/the-distributed-system-toolkit-patterns#example-1-sidecar-containers\">Sidecar<\/a><\/noindex>. It is deployed alongside each Prometheus server and acts as a proxy, serving local Prometheus data through the gRPC Store API interface, which allows querying time series data by labels and time range.<\/p>\n<p>On the other hand, there is a horizontally scalable stateless Querier component that does a bit more than just responding to PromQL queries through the standard Prometheus HTTP API. The Querier, Sidecar, and other Thanos components interact via <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">the gossip protocol.<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/fbcf1e756f5da4e8529f17abd4cedd00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>When the Querier receives a request, it connects to the appropriate Store API server, meaning our Sidecars, and retrieves time series data from the corresponding Prometheus servers.<\/li>\n<li>After that, it merges the responses and performs the PromQL query on them. The Querier can merge both non-overlapping data and duplicated data from HA Prometheus servers.<\/li>\n<\/ol>\n<p>\nThis solves the main part of our puzzle \u2014 merging data from isolated Prometheus servers into a unified view. In fact, Thanos can be used solely for this capability. No changes are required to existing Prometheus servers!<\/p>\n<h4>Unlimited retention!<\/h4>\n<p>\nHowever, sooner or later we will want to store data that goes beyond the usual retention period of Prometheus. For historical data storage, we have chosen object storage. It is widely available in any cloud, as well as in local data centers, and is very cost-effective. Moreover, virtually any object storage is accessible via the well-known S3 API.<\/p>\n<p>Prometheus writes data from memory to disk approximately every two hours. Each block of stored data contains all data for a fixed time interval and is immutable. This is very convenient, as Thanos Sidecar can simply look at the Prometheus data directory and load new blocks into the object storage buckets as they appear.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/2be803d8d7e0ce9a5ffa441b7778a40b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUploading to the object storage immediately after writing to disk also helps to maintain the simplicity of the scraper (Prometheus and Thanos Sidecar). This simplifies the maintenance, cost, and design of the system.<\/p>\n<p>Som du kan se, er sikkerhedskopiering af data meget enkelt at implementere. Men hvad med foresp\u00f8rgslen til data i objektlagringen?<\/p>\n<p>Thanos Store-komponenten fungerer som en proxy til at hente data fra objektlagringen. Ligesom Thanos Sidecar deltager den i gossip-klassen og implementerer Store API. P\u00e5 denne m\u00e5de kan eksisterende Querier se den som en Sidecar, som en anden kilde til tidsserie-data \u2013 der kr\u00e6ves ingen s\u00e6rlig ops\u00e6tning.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/5a437ae1bf8a6f79b8d24aeb9dde2d17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTidsserie-data best\u00e5r af flere store filer. At hente dem efter behov ville v\u00e6re ret ineffektivt, og lokal caching ville kr\u00e6ve enorm m\u00e6ngde hukommelse og diskplads.<\/p>\n<p>I stedet ved Store Gateway, hvordan man h\u00e5ndterer Prometheus lagringsformat. Takket v\u00e6re en smart foresp\u00f8rgselsplanl\u00e6gger og caching af kun de n\u00f8dvendige indeksdele af filerne, er det blevet muligt at reducere komplekse foresp\u00f8rgsler til et minimum antal HTTP-foresp\u00f8rgsler til objektlagringen. Dermed kan antallet af anmodninger reduceres med fire til seks st\u00f8rrelsesordener og opn\u00e5 en responstid, der generelt er sv\u00e6r at skelne fra anmodninger til data p\u00e5 en lokal SSD.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/ebcbe1ee16dbac18daa474e7cb4b12b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom vist i diagrammet ovenfor reducerer Thanos Querier betydeligt omkostningerne ved en enkelt foresp\u00f8rgsel til data i objektlagringen ved at bruge Prometheus lagringsformatet og placere relaterede data t\u00e6t p\u00e5 hinanden. Ved at bruge denne tilgang kan vi kombinere mange enkeltst\u00e5ende anmodninger til et minimalt antal bulk-operationer.<\/p>\n<h4>Kompaktering og nedsampling<\/h4>\n<p>\nN\u00e5r en ny blok af tidsserie-data er blevet uploadet til objektlagringen, betragter vi den som 'historiske' data, der straks er tilg\u00e6ngelige via Store Gateway.<\/p>\n<p>Efter noget tid ophobes blokke fra en kilde (Prometheus med Sidecar) og udnytter ikke l\u00e6ngere hele potentialet for indeksering. For at l\u00f8se dette problem har vi introduceret en anden komponent kaldet Compactor. Den anvender blot den lokale komprimeringsmekanisme fra Prometheus til de historiske data i objektlagringen og kan k\u00f8res som en simpel periodisk batchopgave.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/c7dd83dab074a4c5f93069a4bc152342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTakket v\u00e6re effektiv komprimering udg\u00f8r en foresp\u00f8rgsel til lageret over l\u00e6ngere tid ikke et problem med hensyn til datast\u00f8rrelse. Den potentielle omkostning ved at dekomprimere en milliard v\u00e6rdier og k\u00f8re dem gennem foresp\u00f8rgselsbehandleren vil imidlertid uundg\u00e5eligt f\u00f8re til en betydelig stigning i foresp\u00f8rgselens behandlingstid. P\u00e5 den anden side, da der er hundrede datapunkter for hver sk\u00e6rmpixel, bliver det umuligt selv at visualisere dataene i fuld opl\u00f8sning. S\u00e5ledes er nedsampling ikke kun muligt, men vil heller ikke f\u00f8re til m\u00e6rkbare tab i pr\u00e6cision. <\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/5f36a05aba3fbffa905b6a8da482ab3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTil nedsampling af data aggregerer Compactor kontinuerligt data med en opl\u00f8sning p\u00e5 fem minutter og en time. For hvert r\u00e5 fragment, der er kodet med TSDB XOR-komprimering, lagres forskellige typer aggregerede data, s\u00e5som min, max eller sum for en blok. Dette g\u00f8r det muligt for Querier automatisk at v\u00e6lge den aggregerede data, der passer til den givne PromQL-foresp\u00f8rgsel. <\/p>\n<p>For at bruge data med nedsat n\u00f8jagtighed kr\u00e6ves der ingen speciel konfiguration fra brugeren. Querier skifter automatisk mellem forskellige opl\u00f8sninger og r\u00e5data, n\u00e5r brugeren zoomer ind og ud. Hvis brugeren \u00f8nsker det, kan de styre dette direkte via \u2018step\u2019-parameteren i foresp\u00f8rgslen. <\/p>\n<p>Da omkostningen ved at opbevare \u00e9n GB er lille, gemmer Thanos som standard originale data, data med en opl\u00f8sning p\u00e5 fem minutter og en time. Der er ikke behov for at slette de originale data.<\/p>\n<h2>Recording rules<\/h2>\n<p>\nSelv med Thanos er recording rules en v\u00e6sentlig del af overv\u00e5gningsstakken. De reducerer kompleksiteten, forsinkelsen og omkostningerne ved foresp\u00f8rgsler. De er ogs\u00e5 praktiske for brugere, der \u00f8nsker at f\u00e5 aggregerede data om metrikker. Thanos er baseret p\u00e5 vanilje-forekomster af Prometheus, s\u00e5 det er helt acceptabelt at gemme recording rules og alerting rules p\u00e5 den eksisterende Prometheus-server. I nogle tilf\u00e6lde kan dette dog v\u00e6re utilstr\u00e6kkeligt:<\/p>\n<ul>\n<li>Globale alert og regel (for eksempel en alarm, n\u00e5r tjenesten ikke fungerer p\u00e5 mere end to ud af tre klynger).<\/li>\n<li>Regel for data uden for det lokale lager.<\/li>\n<li>Str\u00e6ben efter at opbevare alle regler og alarmer \u00e9t sted.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/ab48e044b952bd891932b99e248120fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor all these cases, Thanos includes a separate component called Ruler, which calculates rules and alerts through Thanos Queries. Providing a well-known StoreAPI, the Query node can access freshly computed metrics. Later, these metrics are also stored in object storage and become available through Store Gateway.<\/p>\n<h2>Thanos Power<\/h2>\n<p>\nThanos is flexible enough to be customized to your requirements. This is especially useful when migrating from a simple Prometheus. Let's quickly remind ourselves with a small example of what we've learned about Thanos components. Here\u2019s how to transition your vanilla Prometheus into the world of 'unlimited metric storage':<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalerbar Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/f6ee4185af57d2a1869890014e6a0062.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Add the Thanos Sidecar to your Prometheus servers \u2014 for example, a neighboring container in a Kubernetes pod.<\/li>\n<li>Udrul flere Thanos Querier-replikater for datavisning. P\u00e5 dette tidspunkt er det nemt at konfigurere gossip mellem Scraper og Querier. For at kontrollere interaktionen mellem komponenterne skal du bruge m\u00e5lingen 'thanos_cluster_members'.<\/li>\n<\/ol>\n<p>\nThese two steps are sufficient to ensure a global view and seamless data deduplication from potential HA replicas of Prometheus! Just connect your dashboards to the HTTP Querier endpoint or use the Thanos UI interface directly.<\/p>\n<p>However, if you require backup of metrics and long-term storage, three additional steps will be needed:<\/p>\n<ol>\n<li>Create an AWS S3 or GCS bucket. Configure Sidecar to copy data to these buckets. You can now minimize local data storage.<\/li>\n<li>Deploy Store Gateway and connect it to the existing gossip cluster. You can now send queries to the data backups!<\/li>\n<li>Deploy Compactor to enhance query efficiency for prolonged time intervals using compaction and downsampling.<\/li>\n<\/ol>\n<p>\nIf you want to learn more, feel free to check out our <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/tree\/master\/kube\">kubernetes manifest examples<\/a><\/noindex> og <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 just five steps, we transformed Prometheus into a reliable monitoring system with a global view, unlimited storage time, and potential high availability of metrics.<\/p>\n<h3>Pull request: we need you!<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">Thanos<\/a><\/noindex> From the very beginning, it has been an open-source project. Seamless integration with Prometheus and the ability to use only part of Thanos makes it an excellent choice for scaling a monitoring system effortlessly.<\/p>\n<p>Vi er altid glade for GitHub Pull Requests og Issues. T\u00f8v ikke med at kontakte os via Github Issues eller Slack.<noindex><a rel=\"nofollow\" href=\"https:\/\/join.slack.com\/t\/improbable-eng\/shared_invite\/enQtMzQ1ODcyMzQ5MjM4LWY5ZWZmNGM2ODc5MmViNmQ3ZTA3ZTY3NzQwOTBlMTkzZmIxZTIxODk0OWU3YjZhNWVlNDU3MDlkZGViZjhkMjc\"> Improbable-eng #thanos<\/a><\/noindex>, hvis du har sp\u00f8rgsm\u00e5l eller feedback, eller hvis du vil dele din oplevelse! Hvis du kan lide det, vi laver hos Improbable, s\u00e5 kontakt os gerne \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\/careers\/\">vi har altid ledige stillinger<\/a><\/noindex>!<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">F\u00e5 mere at vide om kurset.<br \/>\n<\/a><\/noindex><\/p>\n<p>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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 skalerbar Prometheus | ProHoster","description":"Overs\u00e6ttelsen af artiklen er specielt udarbejdet til studerende p\u00e5 kurset \"DevOps praksis og v\u00e6rkt\u00f8jer\".","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/81888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=81888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/81888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/81889"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=81888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=81888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=81888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}