{"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\/no\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","title":{"rendered":"Thanos \u2014 skalerbar Prometheus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Oversettelsen av artikkelen er forberedt spesielt for studentene i kurset <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">\u201cDevOps Practices and Tools\u201d<\/a><\/noindex>.<\/i><\/b><\/p>\n<p>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fabxc\">Fabian Reinartz<\/a><\/noindex> \u2014 programvareutvikler, Go-entusiast og glad i \u00e5 l\u00f8se komplekse problemer. Han er ogs\u00e5 vedlikeholder av Prometheus og medgr\u00fcnder av Kubernetes SIG instrumentation. Tidligere var han produksjonsingeni\u00f8r hos SoundCloud og ledet overv\u00e5kningsgruppen i CoreOS. N\u00e5 jobber han i Google.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Bplotka\">Bartek Plotka<\/a><\/noindex> \u2014 infrastrukturingeni\u00f8r hos Improbable. Han interesserer seg for nye teknologier og utfordringer innen distribuerte systemer. Har erfaring med lavniv\u00e5programmering i Intel, erfaring som bidragsyter i Mesos og produksjonsopplevelse innen SRE i verdensklasse hos Improbable. Han jobber med \u00e5 forbedre mikroserviceverdenen. Hans tre kj\u00e6rligheter: Golang, open source og volleyball.<\/i><\/p>\n<p>Ser man p\u00e5 v\u00e5rt flaggskipprodukt SpatialOS, kan man gjette at Improbable trenger en h\u00f8y-dynamisk skyinfrastruktur p\u00e5 global skala med titalls Kubernetes-klynger. Vi var blant de f\u00f8rste til \u00e5 begynne \u00e5 bruke overv\u00e5kningssystemet <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex>. Prometheus kan spore millioner av metrikker i sanntid og leveres med et kraftig sp\u00f8rringsspr\u00e5k som gj\u00f8r det mulig \u00e5 hente n\u00f8dvendig informasjon.<\/p>\n<p>Simplicity and reliability is one of Prometheus's main advantages. However, after reaching a certain scale, we faced several shortcomings. To solve these issues, we developed <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/\">Thanos<\/a><\/noindex> \u2014 et prosjekt med \u00e5pen kildekode utviklet av Improbable, for s\u00f8ml\u00f8s transformasjon av eksisterende Prometheus-klynger til et samlet overv\u00e5kingssystem med ubegrenset lagring av historiske data. Thanos er tilgjengelig 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\">Hold deg oppdatert med de siste nyhetene fra Improbable.<\/a><\/noindex><\/p>\n<h2>V\u00e5re m\u00e5l med Thanos<\/h2>\n<p>\nVed en viss skala oppst\u00e5r problemer som overstiger evnene til vanilje-Prometheus. Hvordan lagre petabyte av historiske data p\u00e5 en trygg og kostnadseffektiv m\u00e5te? Kan dette gj\u00f8res uten \u00e5 g\u00e5 p\u00e5 bekostning av responstiden p\u00e5 foresp\u00f8rselen? Kan man f\u00e5 tilgang til alle metrikker p\u00e5 forskjellige Prometheus-servere med \u00e9n API-foresp\u00f8rsel? Er det mulig \u00e5 p\u00e5 en eller annen m\u00e5te kombinere dupliserte data samlet med Prometheus HA?<\/p>\n<p>For \u00e5 l\u00f8se disse sp\u00f8rsm\u00e5lene har vi laget Thanos. I de f\u00f8lgende avsnittene beskrives hvordan vi n\u00e6rmet oss l\u00f8sningene p\u00e5 disse problemene og de m\u00e5lene vi hadde.<\/p>\n<h4>Foresp\u00f8rsel om data fra flere Prometheus-installasjoner (global query)<\/h4>\n<p>\nPrometheus tilbyr en funksjonell tiln\u00e6rming til sharding. Selv en enkelt Prometheus-server gir tilstrekkelig skalerbarhet til \u00e5 frigj\u00f8re brukerne fra kompleksiteten av horisontal sharding i praktisk talt alle bruksomr\u00e5der.<\/p>\n<p>Selv om dette er en utmerket distribusjonsmodell, er det ofte n\u00f8dvendig \u00e5 f\u00e5 tilgang til data p\u00e5 forskjellige Prometheus-servere via et enkelt API eller UI \u2014 global visning. Selvf\u00f8lgelig kan flere foresp\u00f8rseler vises i en enkelt Grafana-panel, men hver foresp\u00f8rsel kan kun utf\u00f8res p\u00e5 \u00e9n Prometheus-server. P\u00e5 den annen side kan du med Thanos foresp\u00f8rre og aggregere data fra flere Prometheus-servere, siden alle er tilgjengelige fra ett endepunkt.<\/p>\n<p>Tidligere, for \u00e5 oppn\u00e5 global visning i Improbable, organiserte vi v\u00e5re Prometheus-installasjoner i en lagdelt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\/blob\/master\/docs\/federation.md#hierarchical-federation\">Hierarchical Federation<\/a><\/noindex>. Dette innebar \u00e5 opprette en meta-server for Prometheus, som samler inn en del m\u00e5linger fra hver \"leaf\" 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 tiln\u00e6rmingen viste seg \u00e5 v\u00e6re problematisk. Den f\u00f8rte til komplisert konfigurasjon, la til en ekstra potensiell feilkilde og p\u00e5f\u00f8rte komplekse regler for \u00e5 tilby den federerte endepunktet kun de n\u00f8dvendige dataene. I tillegg tillater ikke slik federasjon virkelig \u00e5 oppn\u00e5 en global visning, ettersom ikke alle data er tilgjengelige fra \u00e9n API-foresp\u00f8rsel.<\/p>\n<p>Dette er n\u00e6rt knyttet til et enhetlig syn p\u00e5 data samlet p\u00e5 h\u00f8ytilgjengelige (high-availability, HA) Prometheus-servere. HA-modellen til Prometheus samler uavhengig data to ganger, noe som er s\u00e5 enkelt at det knapt kan bli enklere. Det ville imidlertid v\u00e6rt veldig praktisk \u00e5 bruke et samlet og deduplisert syn p\u00e5 begge str\u00f8mmer.<\/p>\n<p>Selvf\u00f8lgelig er det et behov for h\u00f8ytilgjengelige servere for Prometheus. I Improbable tar vi virkelig dataoverv\u00e5king p\u00e5 minuttbasis alvorlig, men \u00e5 ha en enkelt instans av Prometheus i klyngen er et enkelt feilpunkt. Enhver konfigurasjonsfeil eller maskinvarefeil kan potensielt f\u00f8re til tap av viktig data. Selv en enkel distribusjon kan f\u00f8re til sm\u00e5 avbrudd i innsamlingen av metrikker, siden omstart kan ta betydelig lengre tid enn skrapetintervallet.<\/p>\n<h4>P\u00e5litelige historiske data lagring<\/h4>\n<p>\nBillig, rask og langvarig lagring av metrikker er v\u00e5r dr\u00f8m (som deles av de fleste brukere av Prometheus). Hos Improbable m\u00e5tte vi sette lagringsperioden for metrikker til ni dager (for Prometheus 1.8). Dette legger \u00e5penbare begrensninger p\u00e5 hvor langt tilbake vi kan se.<\/p>\n<p>Prometheus 2.0 har blitt bedre p\u00e5 dette omr\u00e5det, ettersom antall tidsserier ikke lenger p\u00e5virker den totale ytelsen til serveren (se <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nDalewt4BOw\">KubeCon keynote om Prometheus 2<\/a><\/noindex>). Likevel lagrer Prometheus data p\u00e5 lokal disk. Selv om h\u00f8yeffektiv datakomprimering kan redusere bruken av lokal SSD betydelig, finnes det til slutt fortsatt en grense for mengden historiske data som kan lagres.<\/p>\n<p>I tillegg bryr vi oss hos Improbable om p\u00e5litelighet, enkelhet og kostnad. Store lokale disker er vanskeligere \u00e5 administrere og sikkerhetskopiere. De er dyrere og krever flere verkt\u00f8y for sikkerhetskopiering, noe som f\u00f8rer til un\u00f8dvendig kompleksitet.<\/p>\n<h4>Nedsampling<\/h4>\n<p>\nDa vi begynte \u00e5 jobbe med historiske data, inns\u00e5 vi at det finnes fundamentale vanskeligheter med O-stor, som gj\u00f8r at foresp\u00f8rslene blir tregere og tregere n\u00e5r vi jobber med data over uker, m\u00e5neder og \u00e5r.<\/p>\n<p>Den standard l\u00f8sningen p\u00e5 dette problemet vil v\u00e6re <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Decimation_(signal_processing)\">nedsampling<\/a><\/noindex> (downsampling) \u2014 redusere samplingfrekvensen av signalet. Ved \u00e5 senke samplingfrekvensen kan vi \"skalere ned\" til et st\u00f8rre tidsrom og opprettholde det samme antallet pr\u00f8ver, noe som vil bevare responsiviteten i foresp\u00f8rslene.<\/p>\n<p>Nedsampling av eldre data er et uunng\u00e5elig krav for enhver l\u00f8sning for langsiktig lagring og g\u00e5r utover vanilje-Prometheus.<\/p>\n<h4>Ytterligere m\u00e5l<\/h4>\n<p>\nEt av de opprinnelige m\u00e5lene med Thanos-prosjektet var s\u00f8ml\u00f8s integrasjon med eksisterende Prometheus-installasjoner. Det andre m\u00e5let var enkel drift med minimal inngangsbarriere. Eventuelle avhengigheter m\u00e5 kunne oppfylles enkelt for b\u00e5de sm\u00e5 og store brukere, noe som ogs\u00e5 inneb\u00e6rer at den grunnleggende kostnaden er ubetydelig.<\/p>\n<h2>Thanos-arkitektur<\/h2>\n<p>\nEtter at vi har listet opp v\u00e5re m\u00e5l i avsnittet ovenfor, la oss jobbe med dem og se hvordan Thanos l\u00f8ser disse problemene.<\/p>\n<h4>Global visning<\/h4>\n<p>\nFor a global view over existing Prometheus instances, we need to link a single entry point for requests to all servers. This is precisely 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, allowing for time series data selection by labels and time range.<\/p>\n<p>On the other side is a horizontally scalable, stateless Querier component, which does a bit more than just answering PromQL queries via the standard Prometheus HTTP API. The Querier, Sidecar, and other Thanos components interact through <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 corresponding Store API server, namely our Sidecars, and retrieves time series data from the relevant Prometheus servers.<\/li>\n<li>It then combines the responses and executes the PromQL query on them. The Querier can merge both non-overlapping 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 single view. In fact, Thanos can be used solely for this capability. No modifications are needed on existing Prometheus servers!<\/p>\n<h4>Unlimited storage duration!<\/h4>\n<p>\nHowever, sooner or later we will want to retain data that goes beyond the usual retention period of Prometheus. For storing historical data, we chose object storage. It is widely available in any cloud and also in local data centers, and it's 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. A 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 object storage immediately after writing to disk also helps maintain the simplicity of the scraper (Prometheus and Thanos Sidecar), which simplifies system maintenance, cost, and design.<\/p>\n<p>Som du kan se, er det veldig enkelt \u00e5 ta sikkerhetskopi av data. Men hva med foresp\u00f8rselen til dataene i objektlagringen?<\/p>\n<p>Thanos Store-komponenten fungerer som en proxy for \u00e5 hente data fra objektlagringen. Akkurat som Thanos Sidecar deltar den i et gossip-kluster og implementerer Store API. Dermed kan eksisterende Querier behandle den som Sidecar, som en annen kilde til tidsseriedata \u2014 ingen spesialkonfigurasjon er n\u00f8dvendig.<\/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 \/>\nTidsseriedataene best\u00e5r av flere store filer. \u00c5 laste dem p\u00e5 foresp\u00f8rsel ville v\u00e6rt ganske ineffektivt, og lokal caching ville krevd enorme ressurser for minne og lagringsplass.<\/p>\n<p>I stedet vet Store Gateway hvordan man h\u00e5ndterer Prometheus lagringsformat. Takket v\u00e6re en smart foresp\u00f8rselplanlegger og caching av bare n\u00f8dvendige indeksdeler av blokkene, er det mulig \u00e5 redusere komplekse foresp\u00f8rsel til et minimum av HTTP-foresp\u00f8rsel til filer i objektlagringen. Dermed kan antallet foresp\u00f8rsel reduseres med fire til seks st\u00f8rrelsesordener og oppn\u00e5 responstid som generelt er vanskelig \u00e5 skille fra foresp\u00f8rsel til data p\u00e5 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, reduserer Thanos Querier kostnadene for en foresp\u00f8rsel til data i objektlagringen betydelig ved \u00e5 bruke Prometheus lagringsformat og plassere relaterte data n\u00e6r hverandre. Ved \u00e5 bruke denne tiln\u00e6rmingen kan vi sammensl\u00e5 mange individuelle foresp\u00f8rsel til et minimum av bulk-operasjoner.<\/p>\n<h4>Kompresjon og nedsampling<\/h4>\n<p>\nEtter at en ny blokk med tidsseriedata har blitt lastet opp til objektlagringen, betrakter vi den som \"historiske\" data som umiddelbart blir tilgjengelige via Store Gateway.<\/p>\n<p>Imidlertid, etter en stund, akkumuleres blokkene fra en kilde (Prometheus med Sidecar) og utnytter ikke lenger hele indekseringspotensialet. For \u00e5 l\u00f8se dette problemet har vi introdusert en annen komponent kalt Compactor. Den bruker ganske enkelt den lokale kompresjonsmekanismen til Prometheus p\u00e5 de historiske dataene i objektlagringen og kan kj\u00f8res som en enkel periodisk batchjobb.<\/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 \/>\nTakk vere effektiv komprimering, utgjer ikkje foresp\u00f8rselen i lagringssystemet eit problem sj\u00f8lv over lengre tid fr\u00e5 eit datast\u00f8rrelsesynspunkt. Men den potensielle kostnaden ved \u00e5 pakke ut milliardar av verdiar og k\u00f8yre dei gjennom foresp\u00f8rselbehandlaren vil uunng\u00e5eleg f\u00f8re til ein markant auke i behandlingstida for foresp\u00f8rselen. P\u00e5 den andre sida, sidan kvar skjermpiksel har hundrevis av datapunkt, blir det umogleg \u00e5 visualisere data i full oppl\u00f8ysing. S\u00e5leis er nedoverpr\u00f8ving ikkje berre mogleg, men f\u00f8rer heller ikkje til merkbar tap av presisjon. <\/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 \/>\nFor nedoverpr\u00f8ving av data aggregerer Compactor kontinuerleg data med ei oppl\u00f8ysing p\u00e5 fem minutt og ein time. For kvar r\u00e5del av data koda med TSDB XOR-komprimering, blir ulike typar aggregerte data lagra, som min, max eller sum for ei blokk. Dette gjer at Querier automatisk kan velje aggreget som passar for den aktuelle PromQL-foresp\u00f8rselen. <\/p>\n<p>For \u00e5 bruke data med redusert presisjon treng brukaren ingen spesialkonfigurasjon. Querier vekslar automatisk mellom ulike oppl\u00f8ysingar og r\u00e5data etter kvart som brukaren zoomar inn og ut. Om \u00f8nskelig kan brukaren styre dette direkte via parameteren \u201cstep\u201d i foresp\u00f8rselen. <\/p>\n<p>Sidan kostnaden for lagring av ein GB er l\u00e5g, lagrar Thanos som standard r\u00e5data, data med ei oppl\u00f8ysing p\u00e5 fem minutt og p\u00e5 ein time. Det er ikkje behov for \u00e5 slette raw data.<\/p>\n<h2>Opptakreglar<\/h2>\n<p>\nSj\u00f8lv utan Thanos er opptakreglar ein viktig del av overv\u00e5kingsstakken. Dei reduserer kompleksitet, latency og kostnad ved foresp\u00f8rslene. Dei er ogs\u00e5 nyttige for brukarar n\u00e5r det gjeld \u00e5 f\u00e5 aggregerte data om metrikkar. Thanos bygger p\u00e5 vanlige instansar av Prometheus, s\u00e5 det er heilt akseptabelt \u00e5 lagre opptakreglar og varslingsreglar p\u00e5 den eksisterande Prometheus-serveren. Men i nokre tilfelle kan dette vere utilstrekkeleg:<\/p>\n<ul>\n<li>Globale varslar og reglar (for eksempel varsling n\u00e5r tenesta ikkje fungerer p\u00e5 meir enn to av tre klynger).<\/li>\n<li>Regel for data utanfor det lokale lagringssystemet.<\/li>\n<li>\u00d8nsket om \u00e5 lagre alle reglar og varslar p\u00e5 eitt staden.<\/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 computes rules and alerts through Thanos Queries. By providing the well-known StoreAPI, the Query node can access freshly computed metrics. Later, they are also stored in object storage and made available through Store Gateway.<\/p>\n<h2>The Power of Thanos<\/h2>\n<p>\nThanos is flexible enough to be tailored to your needs. This is especially useful when migrating from a simple Prometheus. Let\u2019s quickly recall what we learned about Thanos components with a small example. Here\u2019s how to transition your vanilla Prometheus into the world of \u2018unlimited metric storage\u2019:<\/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 Thanos Sidecar to your Prometheus servers \u2014 for instance, as an adjacent container in a Kubernetes pod.<\/li>\n<li>Distribuer flere kopier av Thanos Querier for \u00e5 kunne vise data. P\u00e5 dette stadiet er det enkelt \u00e5 konfigurere gossip mellom Scraper og Querier. For \u00e5 sjekke interaksjonen mellom komponentene, bruk m\u00e5lingen 'thanos_cluster_members'.<\/li>\n<\/ol>\n<p>\nThese two steps alone are enough to ensure a global view and seamless deduplication of data from potential HA replicas of Prometheus! Simply connect your dashboards to the HTTP endpoint of Querier or use the Thanos UI directly.<\/p>\n<p>However, if you require metric backup and long-term storage, you will need to complete three more steps:<\/p>\n<ol>\n<li>Create an AWS S3 or GCS bucket. Configure the Sidecar to copy data into 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 backup data!<\/li>\n<li>Deploy Compactor to enhance query efficiency for longer 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 retention 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> has been an open-source project from the very beginning. Seamless integration with Prometheus and the ability to use only part of Thanos makes it a great choice for scaling the monitoring system without unnecessary effort.<\/p>\n<p>Vi er alltid glade for GitHub Pull Requests og Issues. Samtidig, ikke n\u00f8l med \u00e5 kontakte oss 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\u00f8rsm\u00e5l eller tilbakemeldinger, eller hvis du \u00f8nsker \u00e5 dele din erfaring med oss! Hvis du liker det vi gj\u00f8r i Improbable, ikke n\u00f8l med \u00e5 ta kontakt med oss \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\/careers\/\">vi har alltid ledige stillinger<\/a><\/noindex>!<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">L\u00e6r mer 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.5 - 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\/no\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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":"Oversettelsen av artikkelen er laget spesielt for studentene p\u00e5 kurset \u00abDevOps praksis og verkt\u00f8y\u00bb.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/81888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=81888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/81888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/81889"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=81888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=81888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=81888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}