Dela via


Metodtips för skalning av Azure Monitor-arbetsytor med Azure Monitor-hanterad tjänst för Prometheus

Med Azure Monitor-hanterad tjänst för Prometheus kan du samla in och analysera mått i stor skala. Prometheus-mått lagras i Azure Monitor-arbetsytor. Arbetsytan stöder analysverktyg som Azure Managed Grafana, Azure Monitor Metrics Explorer med PromQL och öppen källkod verktyg som PromQL och Grafana.

Den här artikeln innehåller metodtips för att organisera dina Azure Monitor-arbetsytor för att uppfylla din skala och växande datainmatning.

Designvillkor för topologi

En enda Azure Monitor-arbetsyta kan vara tillräcklig för många användningsfall. Vissa organisationer skapar flera arbetsytor för att bättre uppfylla sina krav. När du identifierar rätt kriterier för att skapa ytterligare arbetsytor skapar du det lägsta antalet arbetsytor som matchar dina krav, samtidigt som du optimerar för minimal administrativ hantering.

Följande är scenarier som kräver att en Azure Monitor-arbetsyta delas upp i flera arbetsytor:

Scenarium Bästa praxis
Suveräna moln När du arbetar med mer än ett nationellt moln skapar du en Azure Monitor-arbetsyta i varje moln.
Efterlevnads- eller regelkrav Om du omfattas av regler som kräver lagring av data i specifika regioner skapar du en Azure Monitor-arbetsyta per region enligt dina behov.
Regional skalning När du hanterar mått för regionalt olika organisationer, till exempel stora tjänster eller finansinstitut med regionala konton, skapar du en Azure Monitor-arbetsyta per region.
Azure-användare Skapa en Azure Monitor-arbetsyta i varje klientorganisation för flera Azure-klienter. Det går inte att köra frågor mot data mellan klienter.
Distributionsmiljöer Skapa en separat arbetsyta för var och en av dina distributionsmiljöer för att underhålla diskreta mått för utvecklings-, test-, förproduktions- och produktionsmiljöer.
Tjänstbegränsningar och kvoter Azure Monitor-arbetsytor har standardbegränsningar för inmatning, vilket kan ökas genom att öppna ett supportärende. Om du närmar dig gränsen eller uppskattar att du överskrider inmatningsgränsen kan du överväga att begära en ökning eller dela upp arbetsytan i två eller flera arbetsytor.

Tjänstbegränsningar och kvoter

Azure Monitor-arbetsytor har standardkvoter och begränsningar för mått på 1 miljon händelser som matas in per minut. När din användning växer och du behöver mata in fler mått kan du begära en ökning. Om dina kapacitetskrav är exceptionellt stora och dina datainmatningsbehov överskrider gränserna för en enskild Azure Monitor-arbetsyta bör du överväga att skapa flera Azure Monitor-arbetsytor. Använd azure monitor-arbetsytans plattformsmått för att övervaka användning och gränser. Mer information om gränser och kvoter finns i Tjänstbegränsningar och kvoter för Azure Monitor.

Överväg följande metodtips för att hantera gränser och kvoter för Azure Monitor-arbetsytor:

Bästa praxis Beskrivning
Övervaka och skapa en avisering om inmatningsgränser och användning. I Azure Portal navigerar du till din Azure Monitor-arbetsyta. Gå till Mått och kontrollera att måtten aktiv tidsserie % användning och händelser per minut inmatad % användning är under 100%. Ange en Azure Monitor-avisering för att övervaka användningen och utlöses när användningen är större än 80 % av gränsen. Mer information om övervakning av användning och gränser finns i Hur kan jag övervaka tjänstbegränsningar och kvoter.
Begär en gränsökning när användningen överskrider 80 % av den aktuella gränsen. När din Azure-användning växer kommer mängden data som matas in sannolikt att öka. Vi rekommenderar att du begär en ökning av gränserna om datainmatningen överskrider eller nära 80 % av inmatningsgränsen. Information om hur du begär en gränsökning finns i Begära en ökning av inmatningsgränsen.
Beräkna den beräknade skalan. När din användning växer och du matar in fler mått i din arbetsyta gör du en uppskattning av den beräknade skalan och tillväxttakten. Baserat på dina prognoser begär du en ökning av gränsen.
Inmatning med Fjärrskrivning med azure monitor-containern för sidovagn. Om du använder Azure Monitor-containern för sidovagn och fjärrskrivning för att mata in mått i en Azure Monitor-arbetsyta bör du överväga följande begränsningar:
  • Containern på sidovagnen kan bearbeta upp till 150 000 unika tidsserier.
  • Containern kan utlösa fel som hanterar begäranden över 150 000 på grund av det stora antalet samtidiga anslutningar. Åtgärda det här problemet genom att öka den fjärranslutna batchstorleken från standardvärdet 500 till 1 000. Om du ändrar den fjärranslutna batchstorleken minskar antalet öppna anslutningar.
  • DCR/DCE-gränser. Begränsningar gäller för datainsamlingsregler (DCR) och datainsamlingsslutpunkter (DCE) som skickar Prometheus-mått till din Azure Monitor-arbetsyta. Information om hur du övervakar dessa gränser finns i Visa och övervaka DCR-gränser. Det går inte att höja dessa gränser.

    Överväg att skapa ytterligare DCR:er och DCE:er för att distribuera inmatningsbelastningen över flera slutpunkter. Den här metoden hjälper till att optimera prestanda och säkerställa effektiv datahantering. Mer information om hur du skapar datainsamlingsslutpunkter och datainsamlingsregler finns i Så här skapar du en anpassad datainsamlingsslutpunkt (DCE) och en anpassad datainsamlingsregel (DCR) för en befintlig Azure Monitor-arbetsyta för att mata in Prometheus-mått.

    Optimera prestanda för stora mängder data

    Intag

    Tänk på följande metodtips för att optimera inmatningen:

    Bästa praxis Beskrivning
    Identifiera mått med hög kardinalitet. Identifiera mått som har hög kardinalitet eller mått som genererar många tidsserier. Användningsinsikter för Azure Monitor-arbetsytor ger insikter om användning av mått och möjligheter till kostnadsoptimering genom att tillhandahålla information om tidsserier och händelseanvändning. När du har identifierat mått med hög kardinalitet optimerar du dem för att minska antalet tidsserier genom att släppa onödiga etiketter.
    Använd Prometheus-konfiguration för att optimera inmatning. Azure Managed Prometheus tillhandahåller konfigurationsmappar som har inställningar som kan konfigureras och användas för att optimera inmatning. Mer information finns i ama-metrics-settings-configmap och ama-metrics-prometheus-config-configmap. Dessa konfigurationer har samma format som Prometheus-konfigurationsfilen.
    Information om hur du anpassar samlingen finns i Anpassa skrapning av Prometheus-mått i Azure Monitor-hanterad tjänst för Prometheus. Tänk till exempel på följande:

  • Justera insamlingsintervall.
  • Standardfrekvensen för skrapning är 30 sekunder, vilket kan ändras per standardmål med hjälp av konfigurationskartan. Om du vill balansera kompromissen mellan datakornighet och resursanvändning justerar scrape_interval du och scrape_timeout baserat på måttens allvarlighetsgrad.

  • Släpp onödiga etiketter för mått med hög kardinalitet.
  • För mått med hög kardinalitet identifierar du etiketter som inte behövs och släpper dem för att minska antalet tidsserier. metric_relabel_configs Använd för att släppa specifika etiketter från inmatning. Mer information finns i Prometheus-konfiguration.

    Använd konfigurationskartan, ändra inställningarna efter behov och tillämpa konfigurationskartan på kube-systemnamnområdet för klustret. Om du använder fjärrinskrivning till och Azure Monitor-arbetsytan tillämpar du anpassningarna under inmatningen direkt i Prometheus-konfigurationen.

    Frågor

    Tänk på följande metodtips för att optimera frågor:

    Använda inspelningsregler för att optimera frågeprestanda

    Prometheus-inspelningsregler används för att förberäkna ofta använda eller beräkningsmässigt dyra frågor, vilket gör dem mer effektiva och snabbare att fråga. Inspelningsregler är särskilt användbara för mått med stora volymer där frågor mot rådata kan vara långsamma och resursintensiva. Mer information finns i Inspelningsregler. Azure Managed Prometheus är ett hanterat och skalbart sätt att skapa och uppdatera inspelningsregler med hjälp av Azure Managed Prometheus-regelgrupper.

    När regelgrupperna har skapats läser Azure Managed Prometheus in och börjar utvärdera dem automatiskt. Fråga efter regelgrupper från Azure Monitor-arbetsytan som andra Prometheus-mått.

    Inspelningsregler har följande fördelar:

    • Förbättra frågeprestanda Inspelningsregler kan användas för att förberäkna komplexa frågor, vilket gör dem snabbare att fråga senare. Förberäkning av komplexa frågor minskar belastningen på Prometheus när dessa mått efterfrågas.

    • Effektivitet och minskad frågetid Inspelningsregler förberäknar frågeresultaten i förväg, vilket minskar den tid det tar att fråga efter data. Detta är särskilt användbart för instrumentpaneler med flera paneler eller mått med hög kardinalitet.

    • Enkelhet Inspelningsregler förenklar frågor i Grafana eller andra visualiseringsverktyg, eftersom de kan referera till förberäknade mått.

    I följande exempel visas en inspelningsregel som definierats i Azure Managed Prometheus-regelgruppen:

    "record": "job:request_duration_seconds:avg ",
    "expression": "avg(rate(request_duration_seconds_sum[5m])) by (job)",
    "labels": {  "workload_type": "job"
                            },
    "enabled": true
    

    För mer komplexa mått skapar du inspelningsregler som aggregerar flera mått eller utför mer avancerade beräkningar. I följande exempel instance:node_cpu_utilisation:rate5m beräknar processoranvändningen när processorn inte är inaktiv

    "record": "instance:node_cpu_utilisation:rate5m",
     "expression": "1 - avg without (cpu) (sum without (mode)(rate(node_cpu_seconds_total{job=\"node\", mode=~\"idle|iowait|steal\"}[5m])))",
    "labels": {
                                "workload_type": "job"
                            },
    "enabled": true
    

    Överväg följande metodtips för att optimera inspelningsregler:

    Bästa praxis Beskrivning
    Identifiera mått med hög volym. Fokusera på mått som efterfrågas ofta och har hög kardinalitet.
    Optimera regelutvärderingsintervallet. Justera utvärderingsintervallet för dina inspelningsregler för att balansera mellan datas färskhet och beräkningsbelastning.
    Övervaka prestanda. Övervaka frågeprestanda och justera inspelningsregler efter behov.
    Optimera regler genom att begränsa omfånget. Om du vill göra inspelningsregler snabbare begränsar du dem i omfånget till ett specifikt kluster. Mer information finns i Begränsa regler till ett visst kluster.

    Använda filter i frågor

    Att optimera Prometheus-frågor med hjälp av filter innebär att förfina frågorna så att endast nödvändiga data returneras, vilket minskar mängden data som bearbetas och förbättrar prestandan. Följande är några vanliga tekniker för att förfina Prometheus-frågor.

    Bästa praxis Beskrivning
    Använd etikettfilter. Etikettfilter hjälper till att begränsa data till bara det du behöver. Prometheus tillåter filtrering med hjälp {label_name="label_value"} av syntax. Om du har ett stort antal mått i flera kluster är ett enkelt sätt att begränsa tidsserier att använda cluster filtret.

    I stället för att till exempel fråga filtrerar container_cpu_usage_seconds_totaldu efter kluster container_cpu_usage_seconds_total{cluster="cluster1"}.
    Använd tidsintervallväljare. Om du använder specifika tidsintervall kan du avsevärt minska mängden data som efterfrågas.

    I stället för att till exempel köra frågor mot alla datapunkter under de senaste sju dagarna http_requests_total{job="myapp"}frågar du efter den senaste timmen med hjälp av http_requests_total{job="myapp"}[1h].
    Använd sammansättning och gruppering. Sammansättningsfunktioner kan användas för att sammanfatta data, vilket kan vara effektivare än bearbetning av rådatapunkter. När du aggregerar data kan du använda by för att gruppera efter specifika etiketter eller without för att exkludera specifika etiketter.

    Du kan till exempel summera begäranden grupperade efter jobb: sum(rate(http_requests_total[5m])) by (job).
    Filtrera tidigt i frågan. Om du vill begränsa datamängden från början använder du filter så tidigt som möjligt i din fråga. I stället för sum(rate(http_requests_total[5m])) by (job)filtrerar du först och aggregerar sedan enligt följande: sum(rate(http_requests_total{job="myapp"}[5m])) by (job).
    Undvik regex där det är möjligt. Regex-filter kan vara kraftfulla men är också beräkningsmässigt dyra. Använd exakta matchningar när det är möjligt. I stället för http_requests_total{job=~"myapp.*"} använder du till exempel http_requests_total{job="myapp"}.
    Använd förskjutning för historiska data. Om du jämför aktuella data med historiska data använder du offset modifieraren.

    Om du till exempel vill jämföra aktuella begäranden med begäranden från 24 timmar sedan använder du rate(http_requests_total[5m]) - rate(http_requests_total[5m] offset 24h).
    Begränsa datapunkter i diagram. När du skapar diagram begränsar du antalet datapunkter för att förbättra renderingsprestandan. Använd stegparametern för att styra upplösningen.

    Till exempel i Grafana: Ange ett högre stegvärde för att minska datapunkter:http_requests_total{job="myapp"}[1h:10s].

    Parallella frågor

    Att köra ett stort antal parallella frågor i Prometheus kan leda till flaskhalsar i prestanda och kan påverka stabiliteten på Prometheus-servern. Följ metodtipsen nedan om du vill hantera en stor mängd parallella frågor effektivt:

    Bästa praxis Beskrivning
    Frågeinläsningsdistribution. Distribuera frågebelastningen genom att sprida frågorna över olika tidsintervall eller Prometheus-instanser.
    Förskjutna frågor. Schemalägg frågor så att de körs med olika intervall för att undvika toppar i samtidiga frågekörningar.

    Om du fortfarande ser problem med att köra många parallella frågor skapar du ett supportärende för att begära en ökning av frågegränserna.

    Aviseringar och inspelningsregler

    Optimera aviseringar och inspelningsregler för hög skala

    Prometheus-aviseringar och inspelningsregler kan definieras som Prometheus-regelgrupper. En regelgrupp kan innehålla upp till 20 aviseringar eller inspelningsregler. Skapa upp till 500 regelgrupper för varje arbetsyta för att hantera antalet aviseringar/regler som krävs. Om du vill höja den här gränsen öppnar du ett supportärende

    När du definierar inspelningsreglerna bör du ta hänsyn till utvärderingsintervallet för att optimera antalet tidsserier per regel och prestanda för regelutvärderingar. Utvärderingsintervallen kan vara mellan 1 minut och 24 timmar. Standardvärdet är 1 minut.

    Använd Resource Health för att visa frågor från inspelningsregelstatus

    Konfigurera Resource Health för att visa hälsotillståndet för din Prometheus-regelgrupp i portalen. Med Resource Health kan du identifiera problem i dina inspelningsregler, till exempel felaktig konfiguration eller problem med frågebegränsning. Mer information om hur du konfigurerar Resource Health finns i Visa resurshälsotillstånd för dina Prometheus-regelgrupper.