Anpassa skrapning av Prometheus-mått i Azure Monitor-hanterad tjänst för Prometheus
Den här artikeln innehåller anvisningar om hur du anpassar måttskrapa för ett Kubernetes-kluster med måtttillägget i Azure Monitor.
Konfigurationskartor
Fyra olika konfigurationsmappar kan konfigureras för att tillhandahålla skrapkonfiguration och andra inställningar för måtttillägget. Alla konfigurationskartor ska tillämpas på kube-system
namnområdet för alla kluster.
Kommentar
Ingen av de fyra konfigurationsmapparna finns som standard i klustret när Managed Prometheus är aktiverat. Beroende på vad som behöver anpassas måste du distribuera någon eller alla dessa fyra konfigurationsmappar med samma namn angivna i kube-system
namnområdet. AMA-Metrics-poddar hämtar dessa konfigurationsmappar när du har distribuerat dem till kube-system
namnområdet och startar om om 2–3 minuter för att tillämpa konfigurationsinställningarna som anges i konfigurationsmapparna.
-
ama-metrics-settings-configmap
Den här konfigurationskartan har nedanstående enkla inställningar som kan konfigureras. Du kan ta konfigurationskartan från git hub-lagringsplatsen ovan, ändra inställningarna och tillämpa/distribuera konfigurationskartan tillkube-system
namnområdet för klustret- klusteralias (för att ändra värdet
cluster
för etiketten i varje tidsserie/mått som matas in från ett kluster) - aktivera/inaktivera standardmål för skrapning – Aktivera/INAKTIVERA standardskrapning baserat på mål. Skrapkonfigurationen för dessa standardmål är redan fördefinierad/inbyggd
- aktivera poddanteckningsbaserad skrapning per namnområde
- måttbehållarlistor – den här inställningen används för att styra vilka mått som ska anges för att tillåtas från varje standardmål och för att ändra standardbeteendet
- skrapintervall för standard-/fördefinierade mål.
30 secs
är standardfrekvensen för skrapning och kan ändras per standardmål med hjälp av den här konfigurationskartan - felsökningsläge – om du aktiverar den här INSTÄLLNINGEN kan du felsöka problem med mått/inmatning som saknas – mer information om felsökning
- klusteralias (för att ändra värdet
-
ama-metrics-prometheus-config
Den här konfigurationskartan kan användas för att tillhandahålla Prometheus scrape-konfiguration för addon-replik. Addon kör en singleton-replik och alla tjänster på klusternivå kan identifieras och skrapas genom att tillhandahålla skrapjobb i den här konfigurationskartan. Du kan ta exempelkonfigurationskartan från git hub-lagringsplatsen ovan, lägga till skrapjobb som du behöver och tillämpa/distribuera konfigurationskartan tillkube-system
namnområdet för klustret. Även om detta stöds bör du tänka på att det rekommenderade sättet att skrapa anpassade mål är att använda anpassade resurser -
ama-metrics-prometheus-config-node
(Avancerat) Den här konfigurationskartan kan användas för att tillhandahålla Prometheus scrape config för addon DaemonSet som körs på varje Linux-nod i klustret, och alla nodnivåmål på varje nod kan skrapas genom att tillhandahålla skrapjobb i den här konfigurationskartan. När du använder den här konfigurationskartan kan du använda$NODE_IP
variabeln i din skrapkonfiguration, som ersätts av motsvarande nods IP-adress i DaemonSet-podden som körs på varje nod. På så sätt får du åtkomst till att skrapa allt som körs på noden från måtttillägget DaemonSet. Var försiktig när du använder identifieringar i skrapkonfigurationen på den här konfigurationskartan på nodnivå, eftersom varje nod i klustret konfigurerar och identifierar målen och samlar in redundanta mått. Du kan ta exempelkonfigurationskartan från den ovanstående git hub-lagringsplatsen, lägga till skrapjobb som du behöver och tillämpa/distribuera konfigurationskartan tillkube-system
namnområdet för klustret -
ama-metrics-prometheus-config-node-windows
(Avancerat) Den här konfigurationskartan kan användas för att tillhandahålla Prometheus scrape config för addon DaemonSet som körs på varje Windows-nod i klustret, och nodnivåmål på varje nod kan skrapas genom att tillhandahålla skrapjobb i den här konfigurationskartan. När du använder den här konfigurationskartan kan du använda$NODE_IP
variabeln i din skrapkonfiguration, som ersätts med motsvarande nods IP-adress i DaemonSet-podden som körs på varje nod. På så sätt får du åtkomst till att skrapa allt som körs på noden från måtttillägget DaemonSet. Var försiktig när du använder identifieringar i skrapkonfigurationen på den här konfigurationskartan på nodnivå, eftersom varje nod i klustret konfigurerar och identifierar målen och samlar in redundanta mått. Du kan ta exempelkonfigurationskartan från den ovanstående git hub-lagringsplatsen, lägga till skrapjobb som du behöver och tillämpa/distribuera konfigurationskartan tillkube-system
namnområdet för klustret
Anpassade resursdefinitioner
Azure Monitor-måtttillägget stöder skrapning av Prometheus-mått med Prometheus – Pod Monitors och Service Monitors, ungefär som OSS Prometheus-operatorn. När du aktiverar tillägget distribueras anpassade resursdefinitioner för Podd- och Service Monitor så att du kan skapa egna anpassade resurser. Följ anvisningarna för att skapa och tillämpa anpassade resurser på klustret.
Konfigurationsmapp för måtttilläggsinställningar
Konfigurationskartan ama-metrics-settings-configmap kan laddas ned, redigeras och tillämpas på klustret för att anpassa de färdiga funktionerna i måtttillägget.
Aktivera och inaktivera standardmål
I följande tabell finns en lista över alla standardmål som azure monitor-måtttillägget kan skrapa som standard och om det är aktiverat från början. Standardmålen skrapas var 30:e sekund. En replik distribueras för att skrapa klusteromfattande mål, till exempel kube-state-metrics. En DaemonSet distribueras också för att skrapa nodomfattande mål, till exempel kubelet.
Nyckel | Typ | Aktiverat | Podd | beskrivning |
---|---|---|---|---|
kubelet | bool | true |
Linux DaemonSet | Skrapa kubelet i varje nod i K8s-klustret utan extra skrapkonfiguration. |
cadvisor | bool | true |
Linux DaemonSet | Skrapa cadvisor i varje nod i K8s-klustret utan extra skrapkonfiguration. Endast Linux. |
kubestate | bool | true |
Linux-replik | Skrapa kube-state-metrics i K8s-klustret (installeras som en del av tillägget) utan någon extra skrapkonfiguration. |
nodeexporter | bool | true |
Linux DaemonSet | Mått för skrapnoder utan extra skrapkonfiguration. Endast Linux. |
koredner | bool | false |
Linux-replik | Scrape coredns-tjänsten i K8s-klustret utan extra skrapkonfiguration. |
kubeproxy | bool | false |
Linux DaemonSet | Skrapa kube-proxy i varje Linux-nod som identifieras i K8s-klustret utan extra skrapkonfiguration. Endast Linux. |
apiserver | bool | false |
Linux-replik | Skrapa Kubernetes API-servern i K8s-klustret utan extra skrapkonfiguration. |
windowsexporter | bool | false |
Windows DaemonSet | Skrapa windows-exporter i varje nod i K8s-klustret utan extra skrapkonfiguration. Endast Windows. |
windowskubeproxy | bool | false |
Windows DaemonSet | Skrapa windows-kube-proxy i varje nod i K8s-klustret utan extra skrapkonfiguration. Endast Windows. |
prometheuscollectorhealth | bool | false |
Linux-replik | Skrapa information om containern prometheus-collector, till exempel mängden och storleken på tidsserier som skrapats. |
Om du vill aktivera skrapning av standardmål som inte är aktiverade som standard redigerar du konfigurationskartan ama-metrics-settings-configmap
för att uppdatera målen som anges under default-scrape-settings-enabled
till true
. Tillämpa konfigurationskartan på klustret.
Aktivera poddanteckningsbaserad skrapning
Om du vill skrapa programpoddar utan att behöva skapa en anpassad Prometheus-konfiguration kan anteckningar läggas till i poddarna.
prometheus.io/scrape: "true"
Anteckningen krävs för att podden ska kunna skrapas. Anteckningarna prometheus.io/path
och prometheus.io/port
anger sökvägen och porten som måtten finns på i podden. Anteckningarna för en podd som är värd för mått vid <pod IP>:8080/metrics
skulle vara:
metadata:
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: '/metrics'
prometheus.io/port: '8080'
Att skrapa dessa poddar med specifika anteckningar är inaktiverat som standard. Om du vill aktivera i ama-metrics-settings-configmap
lägger du till regex för namnrymderna för poddarna med anteckningar som du vill skrapa som värdet för fältet podannotationnamespaceregex
.
Följande inställning skrapar till exempel poddar med anteckningar endast i namnrymderna kube-system
och my-namespace
:
pod-annotation-based-scraping: |-
podannotationnamespaceregex = "kube-system|my-namespace"
Varning
Om du skrapar poddanteckningarna från många namnområden kan du generera en mycket stor mängd mått beroende på antalet poddar som har anteckningar.
Anpassa mått som samlas in som standardmål
För alla standardmål matas som standard endast minimala mått som används i standardinspelningsregler, aviseringar och Grafana-instrumentpaneler in enligt beskrivningen i minimal inmatningsprofil. Om du vill samla in alla mått från standardmål uppdaterar du listorna i inställningskonfigurationsmappen under default-targets-metrics-keep-list
och anger minimalingestionprofile
till false
.
Om du vill tillåtalistning av fler mått utöver standardmått som anges för att tillåtas redigerar du inställningarna under default-targets-metrics-keep-list
för motsvarande jobb som du vill ändra för alla standardmål.
Till exempel kubelet
är måttfiltreringsinställningen för standardmålet kubelet. Använd följande skript för att filtrera i mått som samlats in för standardmålen med hjälp av regexbaserad filtrering.
kubelet = "metricX|metricY"
apiserver = "mymetric.*"
Kommentar
Om du använder citattecken eller omvänt snedstreck i regex måste du undvika dem med hjälp av ett omvänt snedstreck som exemplen "test\'smetric\"s\""
och testbackslash\\*
.
Om du vill anpassa standardjobben ytterligare för att ändra egenskaper som samlingsfrekvens eller etiketter inaktiverar du motsvarande standardmål genom att ange configmap-värdet för målet till false
. Använd sedan jobbet med hjälp av en anpassad konfigurationskarta. Mer information om anpassad konfiguration finns i Anpassa skrapning av Prometheus-mått i Azure Monitor.
Klusteralias
Klusteretiketten som läggs till varje tidsserie som skrapas använder den sista delen av det fullständiga AKS-klustrets Azure Resource Manager-resurs-ID. Om resurs-ID:t till exempel är /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-name/providers/Microsoft.ContainerService/managedClusters/myclustername
är myclustername
klusteretiketten .
Om du vill åsidosätta klusteretiketten i den tidsserie som skrapats uppdaterar du inställningen cluster_alias
till valfri sträng under prometheus-collector-settings
i konfigurationskartanama-metrics-settings-configmap
. Du kan skapa den här konfigurationskartan om den inte finns i klustret eller om du kan redigera den befintliga om den redan finns i klustret.
Den nya etiketten visas också i listrutan för klusterparametern på Grafana-instrumentpanelerna i stället för standardetiketten.
Kommentar
Endast alfanumeriska tecken tillåts. Alla andra tecken ersätts med _
. Den här ändringen är att se till att olika komponenter som använder den här etiketten följer den grundläggande alfanumeriska konventionen.
Om du aktiverar inspelnings- och aviseringsregler måste du använda klusteraliasnamnet i klusternamnparametern för regelregistreringsmallen för att reglerna ska fungera.
Felsökningsläge
Varning
Det här läget kan påverka prestanda och bör endast aktiveras under en kort tid för felsökning.
Om du vill visa alla mått som skrapas i felsökningssyfte kan tilläggsagenten för mått konfigureras att köras i felsökningsläge genom att uppdatera inställningen till under inställningen i konfigurationskartan ama-metrics-settings-configmap
.debug-mode
true
enabled
Du kan antingen skapa den här konfigurationskartan eller redigera en befintlig. Mer information finns i avsnittet Felsökningsläge i Felsöka insamling av Prometheus-mått.
Inställningar för skrapintervall
Om du vill uppdatera inställningarna för skrapintervall för alla mål kan du uppdatera varaktigheten i inställningen default-targets-scrape-interval-settings
för det målet i konfigurationskartanama-metrics-settings-configmap
. Du måste ange skrapintervallen i rätt format som anges på den här webbplatsen. Annars tillämpas standardvärdet på 30 sekunder på motsvarande mål. Till exempel – Om du vill uppdatera skrapintervallet kubelet
för jobbet till 60s
kan du uppdatera följande avsnitt i YAML:
default-targets-scrape-interval-settings: |-
kubelet = "60s"
coredns = "30s"
cadvisor = "30s"
kubeproxy = "30s"
apiserver = "30s"
kubestate = "30s"
nodeexporter = "30s"
windowsexporter = "30s"
windowskubeproxy = "30s"
kappiebasic = "30s"
prometheuscollectorhealth = "30s"
podannotations = "30s"
och använd YAML med följande kommando: kubectl apply -f .\ama-metrics-settings-configmap.yaml
Konfigurera anpassade Prometheus-skrapjobb
Du kan skrapa Prometheus-mått med hjälp av Prometheus – Pod Monitors och Service Monitors (rekommenderas), liknande OSS Prometheus-operatorn. Följ anvisningarna för att skapa och tillämpa anpassade resurser på klustret.
Dessutom kan du följa anvisningarna för att skapa, verifiera och tillämpa konfigurationskartan för klustret. Konfigurationsformatet liknar Prometheus-konfigurationsfilen.
Konfigurationstips och exempel för Prometheus
Lär dig några tips från exempel i det här avsnittet.
- Konfiguration med CRD för anpassad skrapningskonfiguration
- Konfigurationsfil för anpassad skrapningskonfiguration
Använd mallarna Pod och Service Monitor och följ API-specifikationen för att skapa dina anpassade resurser (PodMonitor och Service Monitor). Observera att den enda ändring som krävs för befintliga OSS-CR:er för att hämtas av Managed Prometheus är API-gruppen – azmonitoring.coreos.com/v1. Mer information finns här
Kommentar
När den anpassade skrapkonfigurationen inte kan tillämpas på grund av valideringsfel fortsätter standardkonfigurationen av skrapning att användas.
Globala inställningar
Konfigurationsformatet för globala inställningar är detsamma som stöds av OSS prometheus-konfigurationen
global:
scrape_interval: <duration>
scrape_timeout: <duration>
external_labels:
<labelname1>: <labelvalue>
<labelname2>: <labelvalue>
scrape_configs:
- <job-x>
- <job-y>
Inställningarna som anges i det globala avsnittet gäller för alla skrapjobb (både jobb i Configmap och Anpassade resurser) men åsidosättas om de anges i de enskilda jobben.
Kommentar
Om du vill använda globala inställningar som gäller för alla skrapjobb och bara har anpassade resurser behöver du fortfarande skapa en konfigurationskarta med bara de globala inställningarna(Inställningar för var och en av dessa i de anpassade resurserna åsidosätter dem i det globala avsnittet)
Scrape-konfigurationer
För närvarande är de metoder som stöds för målidentifiering för anpassade resurser podd- och tjänstövervakare
Poddar och tjänstövervakare
Mål som identifieras med podd- och tjänstövervakare har olika __meta_*
etiketter beroende på vilken övervakare som används. Du kan använda etiketterna i avsnittet relabelings
för att filtrera mål eller ersätta etiketter för målen.
Se podd- och tjänstövervakarens exempel på poddar och tjänstövervakare.
Ommärkningar
Avsnittet relabelings
tillämpas vid tidpunkten för målidentifieringen och gäller för varje mål för jobbet. I följande exempel visas olika sätt att använda relabelings
.
Lägg till en etikett
Lägg till en ny etikett med namnet example_label
med värdet example_value
för varje mått i jobbet. Använd __address__
bara som källetikett eftersom etiketten alltid finns och lägger till etiketten för varje mål för jobbet.
relabelings:
- sourceLabels: [__address__]
targetLabel: example_label
replacement: 'example_value'
Använda podd- eller tjänstövervakaretiketter
Mål som identifieras med podd- och tjänstövervakare har olika __meta_*
etiketter beroende på vilken övervakare som används. Etiketterna __*
tas bort när målen har upptäckts. Om du vill filtrera med hjälp av dem på måttnivå ska du först behålla dem genom relabelings
att tilldela ett etikettnamn. Använd metricRelabelings
sedan för att filtrera.
# Use the kubernetes namespace as a label called 'kubernetes_namespace'
relabelings:
- sourceLabels: [__meta_kubernetes_namespace]
action: replace
targetLabel: kubernetes_namespace
# Keep only metrics with the kubernetes namespace 'default'
metricRelabelings:
- sourceLabels: [kubernetes_namespace]
action: keep
regex: 'default'
Ommärkning av jobb och instanser
Du kan ändra job
värdena och instance
etiketterna baserat på källetiketten, precis som andra etiketter.
# Replace the job name with the pod label 'k8s app'
relabelings:
- sourceLabels: [__meta_kubernetes_pod_label_k8s_app]
targetLabel: job
# Replace the instance name with the node name. This is helpful to replace a node IP
# and port with a value that is more readable
relabelings:
- sourceLabels: [__meta_kubernetes_node_name]]
targetLabel: instance
Kommentar
Om du har ometiketteringskonfigurationer kontrollerar du att ommärkningen inte filtrerar bort målen och att etiketterna som har konfigurerats korrekt matchar målen.
Ommärkningar av mått
Måttommärkningar tillämpas efter skrapning och före inmatning. Använd avsnittet metricRelabelings
för att filtrera mått efter skrapning. I följande exempel visas hur du gör det.
Ta bort mått efter namn
# Drop the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
action: drop
regex: 'example_metric_name'
Behåll endast vissa mått efter namn
# Keep only the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
action: keep
regex: 'example_metric_name'
# Keep only metrics that start with 'example_'
metricRelabelings:
- sourceLabels: [__name__]
action: keep
regex: '(example_.*)'
Byt namn på mått
Det går inte att byta namn på mått.
Filtrera mått efter etiketter
# Keep metrics only where example_label = 'example'
metricRelabelings:
- sourceLabels: [example_label]
action: keep
regex: 'example'
# Keep metrics only if `example_label` equals `value_1` or `value_2`
metricRelabelings:
- sourceLabels: [example_label]
action: keep
regex: '(value_1|value_2)'
# Keep metrics only if `example_label_1 = value_1` and `example_label_2 = value_2`
metricRelabelings:
- sourceLabels: [example_label_1, example_label_2]
separator: ';'
action: keep
regex: 'value_1;value_2'
# Keep metrics only if `example_label` exists as a label
metricRelabelings:
- sourceLabels: [example_label_1]
action: keep
regex: '.+'
Grundläggande autentiserings- och ägartoken
Följ stegen nedan för att använda basic_auth
inställningarna eller bearer_token
i prometheus-konfigurationen:
Skapa en hemlighet i
kube-system
namnområdet med namnetama-metrics-mtls-secret
.Namnet på nyckeln
password1
kan vara vad som helst så länge det matchar filnamnet ipassword_file
filsökvägen i prometheus-skrapkonfigurationen i nästa steg. Värdet för nyckeln måste vara base64-kodat.apiVersion: v1 kind: Secret metadata: name: ama-metrics-mtls-secret namespace: kube-system type: Opaque data: password1: <base64-encoded-string>
Hemligheten
ama-metrics-mtls-secret
monteras påama-metrics
poddarna vid sökvägen/etc/prometheus/certs/
och görs tillgänglig för Prometheus-skrapan. Nyckeln (password1
i exemplet ovan) är filnamnet. Värdet är base64-avkodat och läggs till som innehållet i filen i containern.Ange sedan filsökvägen i konfigurationen för anpassad skrapning i konfigurationskartan:
Grundläggande autentisering
Fältet
username
ska innehålla den faktiska användarnamnssträngen. Fältetpassword_file
ska innehålla sökvägen till filen som innehåller lösenordet.# Sets the `Authorization` header on every scrape request with the # configured username and password. basic_auth: username: <username string> password_file: /etc/prometheus/certs/password1
Ägartoken
Fältet
bearer_token_file
ska innehålla sökvägen till filen som innehåller token.# Sets the `Authorization` header on every scrape request with the bearer token # read from the configured file. It is mutually exclusive with `bearer_token`. bearer_token_file: /etc/prometheus/certs/password1
Mer information om de här inställningarna finns i dokumentationen om Prometheus scrape_config.
Om du använder både grundläggande autentisering och TLS-autentisering läser du avsnittet nedan. Mer information finns i anteckningsavsnittet nedan.
TLS-baserad skrapning
Om du vill skrapa Prometheus-mått från en https-slutpunkt bör Prometheus-konfigurationen, PodMonitor eller ServiceMonitor ha inställt https
på scheme
och extra TLS-inställningar.
Skapa en hemlighet i
kube-system
namnområdet med namnetama-metrics-mtls-secret
. Varje nyckel/värde-par som anges i dataavsnittet i det hemliga objektet monteras som en separat fil på den här /etc/prometheus/certs-platsen med filnamn som är samma som nycklarna som anges i dataavsnittet. De hemliga värdena ska vara base64-kodade.Nedan visas ett exempel på YAML för en hemlighet:
apiVersion: v1 kind: Secret metadata: name: ama-metrics-mtls-secret namespace: kube-system type: Opaque data: <certfile>: base64_cert_content <keyfile>: base64_key_content
Hemligheten
ama-metrics-mtls-secret
monteras påama-metrics
poddarna vid sökvägen/etc/prometheus/certs/
och görs tillgänglig för Prometheus-skrapan. Nyckeln (password1
i exemplet ovan) är filnamnet. Värdet är base64-avkodat och läggs till som innehållet i filen i containern.Ange sedan filsökvägen i Prometheus-konfigurationen, PodMonitor eller ServiceMonitor:
- Om du vill ange TLS-konfigurationsinställningen i en konfigurationskarta följer du exemplet nedan:
tls_config:
# CA certificate to validate API server certificate with.
ca_file: /etc/prometheus/certs/<certfile>
# Certificate and key files for client cert authentication to the server.
cert_file: /etc/prometheus/certs/<certfile>
key_file: /etc/prometheus/certs/<keyfile>
# Disable validation of the server certificate.
insecure_skip_verify: false
Grundläggande autentisering och TLS
Om du vill använda både grundläggande autentiseringsinställningar och TLS-autentiseringsinställningar i din konfigurationskarta/CRD kontrollerar du att hemligheten ama-metrics-mtls-secret
innehåller alla nycklar under dataavsnittet med motsvarande base64-kodade värden, enligt nedan:
apiVersion: v1
kind: Secret
metadata:
name: ama-metrics-mtls-secret
namespace: kube-system
type: Opaque
data:
certfile: base64_cert_content # used for TLS
keyfile: base64_key_content # used for TLS
password1: base64-encoded-string # used for basic auth
password2: base64-encoded-string # used for basic auth
Kommentar
Kommentar
Sökvägen /etc/prometheus/certs/
är obligatorisk, men password1
kan vara valfri sträng och måste matcha nyckeln för data i hemligheten som skapades ovan. Det beror på att hemligheten ama-metrics-mtls-secret
är monterad i sökvägen /etc/prometheus/certs/
i containern.
Det base64-kodade värdet avkodas automatiskt av ama-metrics-poddarna när hemligheten monteras som fil.
Kontrollera att det hemliga namnet är ama-metrics-mtls-secret
och att det finns i kube-system
namnområdet.
Hemligheten bör skapas först och sedan ska konfigurationskartan, PodMonitor eller ServiceMonitor skapas i kube-system
namnområdet. Ordningen på hemligt skapande är viktig. När det inte finns någon hemlighet men en konfigurationskarta, PodMonitor eller ServiceMonitor som pekar på hemligheten finns följande fel i containerloggarna ama-metrics prometheus-collector: no file found for cert....
Om du vill läsa mer om TLS-konfigurationsinställningar följer du de här konfigurationerna.
Nästa steg
Konfigurera aviseringar för Prometheus-mått
Fråga Prometheus-mått
Läs mer om att samla in Prometheus-mått