Přizpůsobení výstřižků metrik Prometheus ve spravované službě Azure Monitoru pro Prometheus
Tento článek obsahuje pokyny k přizpůsobení výstřižků metrik pro cluster Kubernetes pomocí doplňku metrik ve službě Azure Monitor.
Můžete nakonfigurovat čtyři různé mapy konfigurace tak, aby poskytovaly konfiguraci výstřižku a další nastavení doplňku metrik. Všechny mapy konfigurace by se měly použít na kube-system
obor názvů pro libovolný cluster.
Poznámka
Žádná ze čtyř map konfigurace v clusteru ve výchozím nastavení neexistuje, když je povolená spravovaná služba Prometheus. V závislosti na tom, co je potřeba přizpůsobit, musíte v oboru názvů nasadit všechny nebo všechny tyto čtyři konfigurační mapy se stejným názvem kube-system
. Pody AMA-Metrics vyzvednou tyto mapy konfigurace po nasazení do kube-system
oboru názvů a restartují se během 2 až 3 minut, aby se použila nastavení konfigurace zadaná v konfiguračních mapách.
ama-metrics-settings-configmap
Tato mapa konfigurace obsahuje následující jednoduchá nastavení, která je možné nakonfigurovat. Z výše uvedeného úložiště Git Hubu můžete převést mapu konfigurace, změnit nastavení a použít/nasadit mapu konfigurace dokube-system
oboru názvů pro váš cluster.- alias clusteru (změna hodnoty popisku
cluster
v každé časové řadě nebo metrikě, která se ingestuje z clusteru) - povolení nebo zakázání výchozích cílů výstřižků – Zapněte/vypněte výchozí výstřižky na základě cílů. Konfigurace výstřižků pro tyto výchozí cíle už je předem definovaná nebo integrovaná
- povolení výstřižku na základě poznámek podů na obor názvů
- Seznamy uchování metrik – toto nastavení slouží k řízení, které metriky se mají povolit z každého výchozího cíle, a ke změně výchozího chování.
- intervaly výstřižků pro výchozí nebo předdefinované cíle
30 secs
je výchozí frekvence výstřižků a dá se změnit podle výchozího cíle pomocí této mapy konfigurace. - režim ladění – zapnutí tohoto zapnutí pomáhá ladit chybějící metriku nebo problémy s příjmem dat – další informace o řešení potíží
- alias clusteru (změna hodnoty popisku
ama-metrics-prometheus-config
Tuto mapu konfigurace lze použít k poskytnutí konfigurace výstřižku Prometheus pro repliku doplňku. Doplněk spustí jednoúčelovou repliku a všechny služby na úrovni clusteru se dají zjistit a sešrotovat poskytnutím úloh výstřižků v této mapě konfigurace. Ukázkovou mapu konfigurace můžete vzít z výše uvedeného úložiště Git Hubu, přidat úlohy výstřižků, které byste potřebovali, a použít nebo nasadit mapu konfigurace dokube-system
oboru názvů pro váš cluster. I když se to podporuje, mějte na paměti, že doporučený způsob škrábání vlastních cílů používá vlastní prostředky.ama-metrics-prometheus-config-node
(Upřesnit) Tuto mapu konfigurace lze použít k zajištění konfigurace výstřižku Prometheus pro doplněk DaemonSet, který běží na všech linuxových uzlech v clusteru, a všechny cíle na úrovni uzlů na každém uzlu je možné sešrotovat poskytnutím úloh výstřižků v této konfigurační mapě. Pokud použijete tuto mapu konfigurace, můžete v konfiguraci výstřižku použít$NODE_IP
proměnnou, která se nahradí IP adresou odpovídajícího uzlu v podu DaemonSet spuštěném na každém uzlu. Tímto způsobem získáte přístup k výstřižku všeho, co běží na daném uzlu, z doplňku metrik DémonemonSet. Při použití zjišťování v konfiguraci výstřižků v této mapě konfigurace na úrovni uzlu buďte opatrní, protože každý uzel v clusteru nastaví a zjistí cíle a shromáždí redundantní metriky. Ukázkovou mapu konfigurace můžete vzít z výše uvedeného úložiště Git Hubu, přidat úlohy výstřižků, které byste potřebovali, a použít nebo nasadit mapu konfigurace dokube-system
oboru názvů pro váš cluster.ama-metrics-prometheus-config-node-windows
(Upřesnit) Tuto mapu konfigurace lze použít k zajištění konfigurace výstřižku Prometheus pro doplněk DaemonSet, který běží na každém uzlu Windows v clusteru, a cíle na úrovni uzlu na každém uzlu je možné sešrotovat poskytnutím úloh výstřižků v této konfigurační mapě. Pokud použijete tuto mapu konfigurace, můžete v konfiguraci výstřižku použít$NODE_IP
proměnnou, která bude nahrazena IP adresou odpovídajícího uzlu v podu DaemonSet spuštěném na každém uzlu. Tímto způsobem získáte přístup k výstřižku všeho, co běží na daném uzlu, z doplňku metrik DémonemonSet. Při použití zjišťování v konfiguraci výstřižků v této mapě konfigurace na úrovni uzlu buďte opatrní, protože každý uzel v clusteru nastaví a zjistí cíle a shromáždí redundantní metriky. Ukázkovou mapu konfigurace můžete vzít z výše uvedeného úložiště Git Hubu, přidat úlohy výstřižků, které byste potřebovali, a použít nebo nasadit mapu konfigurace dokube-system
oboru názvů pro váš cluster.
Doplněk metrik Azure Monitoru podporuje výstřižky metrik Prometheus pomocí nástroje Prometheus – Monitory podů a monitorování služeb, podobně jako operátor OSS Prometheus. Povolením doplňku nasadíte definice vlastních prostředků Pod a Service Monitor, abyste mohli vytvářet vlastní prostředky. Podle pokynů vytvořte a použijte vlastní prostředky v clusteru.
Mapu ama-metrics-settings-configmap je možné stáhnout, upravit a použít v clusteru, aby se přizpůsobily předefinované funkce doplňku metrik.
Následující tabulka obsahuje seznam všech výchozích cílů, které doplněk metrik Služby Azure Monitor může ve výchozím nastavení vyšrotovat a jestli je původně povolený. Výchozí cíle se sešrotují každých 30 sekund. Replika se nasadí do sešrotovaných cílů v rámci clusteru, jako jsou metriky kube-state-metrics. DaemonSet se také nasadí do výstřižků cílů pro celý uzel, jako je kubelet.
Klíč | Typ | Povoleno | Pod | Popis |
---|---|---|---|---|
kubelet | bool | true |
Linux DaemonSet | Výstřižky kubeletu v každém uzlu v clusteru K8s bez další konfigurace výstřižků. |
cadvisor | bool | true |
Linux DaemonSet | Výstřižky cadvisoru v každém uzlu v clusteru K8s bez další konfigurace výstřižků. Pouze Linux. |
kubestate | bool | true |
Replika Linuxu | Výstřižky metrik kube-state-metrics v clusteru K8s (nainstalované jako součást doplňku) bez jakékoli další konfigurace výstřižků. |
nodeexporter | bool | true |
Linux DaemonSet | Výstřižky metrik uzlů bez další konfigurace výstřižků Pouze Linux. |
coredns | bool | false |
Replika Linuxu | Služba Scrape coredns v clusteru K8s bez další konfigurace výstřižků. |
kubeproxy | bool | false |
Linux DaemonSet | Výstřižky kube-proxy v každém linuxovém uzlu zjištěném v clusteru K8s bez další konfigurace výstřižků. Pouze Linux. |
apiserver | bool | false |
Replika Linuxu | Sešrotujte server rozhraní API Kubernetes v clusteru K8s bez další konfigurace výstřižků. |
windowsexporter | bool | false |
Windows DaemonSet | V každém uzlu v clusteru K8s můžete vystřihot exportér oken bez jakékoli další konfigurace výstřižků. Jenom Windows. |
windowskubeproxy | bool | false |
Windows DaemonSet | Sešrotujte windows-kube-proxy v každém uzlu v clusteru K8s bez další konfigurace výstřižků. Jenom Windows. |
prometheuscollectorhealth | bool | false |
Replika Linuxu | Vystřihujte informace o kontejneru kolektoru prometheus, jako je množství a velikost časových řad sešrotovaných. |
Pokud chcete zapnout výstřižky výchozích cílů, které nejsou ve výchozím nastavení povolené, upravte mapu ama-metrics-settings-configmap
konfigurace a aktualizujte cíle uvedené v seznamu default-scrape-settings-enabled
na true
. Použijte mapu configmap pro váš cluster.
Pokud chcete sešrotovat pody aplikací bez nutnosti vytvořit vlastní konfiguraci Prometheus, můžete do podů přidat poznámky. Poznámka prometheus.io/scrape: "true"
se vyžaduje, aby se pod šrotoval. Poznámky a prometheus.io/port
označují cestu a port, na které jsou metriky prometheus.io/path
hostované na podu. Poznámky pro pod, který hostuje metriky <pod IP>:8080/metrics
, by byly následující:
metadata:
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: '/metrics'
prometheus.io/port: '8080'
Výstřižky těchto podů s konkrétními poznámkami jsou ve výchozím nastavení zakázané. Chcete-li povolit, přidejte do pole ama-metrics-settings-configmap
regulární výraz pro obory názvů podů s poznámkami, které chcete odebrat jako hodnotu pole podannotationnamespaceregex
.
Například následující nastavení šrotuje pody s poznámkami pouze v oborech názvů kube-system
a my-namespace
:
pod-annotation-based-scraping: |-
podannotationnamespaceregex = "kube-system|my-namespace"
Upozornění
Výstřižky poznámek podů z mnoha oborů názvů můžou generovat velmi velký objem metrik v závislosti na počtu podů, které mají poznámky.
Ve výchozím nastavení se pro všechny výchozí cíle ingestují jenom minimální metriky používané ve výchozích pravidlech nahrávání, upozorněních a řídicích panelech Grafana, jak je popsáno v profilu minimálního příjmu dat. Chcete-li shromažďovat všechny metriky z výchozích cílů, aktualizujte seznamy keep-lists v konfigurační mapě nastavení v části default-targets-metrics-keep-list
a nastavte minimalingestionprofile
na false
.
Pokud chcete povolit seznam dalších metrik kromě výchozích metrik, které jsou uvedené jako povolené, u všech výchozích cílů upravte nastavení default-targets-metrics-keep-list
pro odpovídající úlohu, kterou chcete změnit.
Jedná se například kubelet
o nastavení filtrování metrik pro výchozí cílový kubelet. Pomocí následujícího skriptu můžete filtrovat metriky shromážděné pro výchozí cíle pomocí filtrování založeného na regulárním výrazu.
kubelet = "metricX|metricY"
apiserver = "mymetric.*"
Poznámka
Pokud v regulárním výrazu použijete uvozovky nebo zpětné lomítka, musíte je uvozovat pomocí zpětného lomítka, jako jsou příklady "test\'smetric\"s\""
a testbackslash\\*
.
Chcete-li dále přizpůsobit výchozí úlohy pro změnu vlastností, jako je frekvence kolekce nebo popisky, zakažte odpovídající výchozí cíl nastavením hodnoty configmap pro cíl na false
hodnotu . Pak tuto úlohu použijte pomocí vlastní mapy konfigurace. Podrobnosti o vlastní konfiguraci najdete v tématu Přizpůsobení výstřižků metrik Prometheus ve službě Azure Monitor.
Popisek clusteru, který se připojí k každému výstřižku řady, používá poslední část celého ID prostředku Azure Resource Manageru celého clusteru AKS. Například pokud je /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-name/providers/Microsoft.ContainerService/managedClusters/myclustername
ID prostředku , popisek clusteru je myclustername
.
Chcete-li přepsat popisek clusteru v časové řadě sešrotovaný, aktualizujte nastavení cluster_alias
na libovolný řetězec prometheus-collector-settings
v konfigurační mapě ama-metrics-settings-configmap
. Tuto mapu konfigurace můžete vytvořit, pokud v clusteru neexistuje, nebo můžete existující mapu upravit, pokud už v clusteru existuje.
Nový popisek se také zobrazí v rozevíracím seznamu parametrů clusteru na řídicích panelech Grafana místo výchozího popisku.
Poznámka
Jsou povoleny pouze alfanumerické znaky. Všechny ostatní znaky jsou nahrazeny znakem _
. Tato změna spočívá v tom, že různé komponenty, které tento popisek využívají, dodržují základní alfanumerické konvence.
Pokud povolujete pravidla nahrávání a upozorňování, nezapomeňte pro fungování pravidel použít název aliasu clusteru v parametru názvu clusteru šablony onboardingu pravidel.
Upozornění
Tento režim může mít vliv na výkon a měl by být povolený jen na krátkou dobu pro účely ladění.
Chcete-li zobrazit každou metriku, která se pro účely ladění šrotuje, je možné nakonfigurovat, aby se doplněk metrik spustil v režimu ladění aktualizací nastavení enabled
na pod nastavením v konfigurační mapěama-metrics-settings-configmap
.debug-mode
true
Tuto mapu konfigurace můžete vytvořit nebo upravit existující. Další informace naleznete v části Režim ladění v řešení potíží s kolekcí metrik Prometheus.
Chcete-li aktualizovat nastavení intervalu výstřižku pro jakýkoli cíl, můžete aktualizovat dobu trvání v nastavení default-targets-scrape-interval-settings
pro tento cíl v konfigurační mapě ama-metrics-settings-configmap
. Musíte nastavit intervaly výstřižků ve správném formátu určeném na tomto webu. V opačném případě se na odpovídající cíle použije výchozí hodnota 30 sekund. Pokud například chcete aktualizovat interval výstřižku pro kubelet
úlohu 60s
, můžete v YAML aktualizovat následující část:
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"
a použijte YAML pomocí následujícího příkazu: kubectl apply -f .\ama-metrics-settings-configmap.yaml
Metriky Prometheus můžete sešrotovat pomocí monitorů podů a monitorování služeb (doporučeno), podobně jako u operátoru OSS Prometheus. Podle pokynů vytvořte a použijte vlastní prostředky v clusteru.
Kromě toho můžete postupovat podle pokynů k vytvoření, ověření a použití konfigurační mapy pro váš cluster. Konfigurační formát je podobný konfiguračnímu souboru Prometheus.
Seznamte se s tipy z příkladů v této části.
- Konfigurace s využitím CRD pro vlastní konfiguraci výstřižků
- Konfigurační soubor pro vlastní konfiguraci výstřižků
Použijte šablony Pod a Service Monitor a postupujte podle specifikace rozhraní API k vytvoření vlastních prostředků (PodMonitor a Service Monitor). Všimněte si , že jedinou změnou vyžadovanou pro stávající žádosti OSS pro vyzvednutí spravovaným nástrojem Prometheus je skupina rozhraní API – azmonitoring.coreos.com/v1. Další informace najdete tady .
Poznámka
Pokud se konfigurace vlastního výstřižku nepodaří použít kvůli chybám ověření, bude se nadále používat výchozí konfigurace výstřižku.
Pokud chcete použít globální nastavení, která platí pro všechny úlohy výstřižků, a máte jenom vlastní prostředky , budete muset vytvořit mapu konfigurace pouze s globálním nastavením (nastavení pro každý z nich ve vlastních prostředcích přepíše ty v globální části).
Podporované metody zjišťování cílů pro vlastní prostředky jsou v současné době podem a monitorováním služeb.
Cíle zjištěné pomocí monitorování podů a služeb mají různé __meta_*
popisky v závislosti na tom, jaké monitorování se používá. Popisky v oddílu relabelings
můžete použít k filtrování cílů nebo nahrazení popisků cílů.
Příklady monitorování podů a služeb najdete v příkladech monitorování podů a služeb.
Oddíl relabelings
se použije v době zjišťování cíle a vztahuje se na každý cíl úlohy. Následující příklady ukazují způsoby použití relabelings
.
Přidejte nový popisek s example_label
hodnotou example_value
do každé metriky úlohy. Jako zdrojový popisek použijte __address__
pouze proto, že tento popisek vždy existuje a přidá ho pro každý cíl úlohy.
relabelings:
- sourceLabels: [__address__]
targetLabel: example_label
replacement: 'example_value'
Cíle zjištěné pomocí monitorování podů a služeb mají různé __meta_*
popisky v závislosti na tom, jaké monitorování se používá. Popisky __*
se po zjištění cílů zahodí. Pokud chcete filtrovat pomocí nich na úrovni metrik, nejdřív je relabelings
použijte přiřazením názvu popisku. Pak použijte metricRelabelings
k filtrování.
# 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'
Hodnoty a instance
hodnoty popisků můžete změnit job
na základě zdrojového popisku stejně jako jakýkoli jiný popisek.
# 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
Poznámka
Pokud máte konfigurace opětovného označení, ujistěte se, že opětovné označení neodfiltruje cíle a popisky nakonfigurované správně odpovídají cílům.
Po výstřižku a před příjmem dat se použijí přeznačky metrik. Pomocí oddílu metricRelabelings
můžete filtrovat metriky po výstřižku. Následující příklady ukazují, jak to udělat.
# Drop the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
action: drop
regex: 'example_metric_name'
# 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_.*)'
Přejmenování metrik se nepodporuje.
# 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: '.+'
Pokud chcete použít basic_auth
nastavení v bearer_token
konfiguraci prometheus, postupujte následovně:
Vytvořte tajný kód v
kube-system
oboru názvů s názvemama-metrics-mtls-secret
.Název klíče
password1
může být libovolný, pokud odpovídá názvu souboru v cestě k souboru vpassword_file
konfiguraci prometheus scrape v dalším kroku. Hodnota klíče musí být zakódovaná pomocí base64.apiVersion: v1 kind: Secret metadata: name: ama-metrics-mtls-secret namespace: kube-system type: Opaque data: password1: <base64-encoded-string>
Tajný
ama-metrics-mtls-secret
kód je připojen kama-metrics
podům v cestě/etc/prometheus/certs/
a je zpřístupněn pro výstřižek Prometheus. Klíč (password1
v předchozím příkladu) bude název souboru. Hodnota je dekódována a přidána jako obsah souboru v kontejneru.Potom v konfiguraci vlastního výstřižku v konfigurační mapě zadejte cestu k souboru:
Základní ověřování
Pole
username
by mělo obsahovat skutečný řetězec uživatelského jména. Polepassword_file
by mělo obsahovat cestu k souboru, který obsahuje heslo.# 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
Nosný token
Pole
bearer_token_file
by mělo obsahovat cestu k souboru, který obsahuje 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
Další informace o těchto nastaveních najdete v dokumentaci k nástroji Prometheus scrape_config.
Pokud používáte základní ověřování i ověřování TLS, projděte si následující část . Další podrobnosti najdete v následující části poznámky.
Pokud chcete metriky Prometheus z koncového bodu https sešrotovat scheme
, měla by být nastavená https
konfigurace Prometheus, PodMonitor nebo ServiceMonitor.
Vytvořte tajný kód v
kube-system
oboru názvů s názvemama-metrics-mtls-secret
. Každý pár klíč-hodnota zadaný v datové části tajného objektu se připojí jako samostatný soubor v tomto umístění /etc/prometheus/certs s názvy souborů, které jsou stejné jako klíče zadané v datové části. Hodnoty tajných kódů by měly být kódované jako base64.Níže je příklad YAML tajného kódu:
apiVersion: v1 kind: Secret metadata: name: ama-metrics-mtls-secret namespace: kube-system type: Opaque data: <certfile>: base64_cert_content <keyfile>: base64_key_content
Tajný
ama-metrics-mtls-secret
kód je připojen kama-metrics
podům v cestě/etc/prometheus/certs/
a je zpřístupněn pro výstřižek Prometheus. Klíč (password1
v předchozím příkladu) bude název souboru. Hodnota je dekódována a přidána jako obsah souboru v kontejneru.Potom v konfiguraci Prometheus, PodMonitor nebo ServiceMonitor zadejte cestu k souboru:
- Pokud chcete zadat nastavení konfigurace protokolu TLS v mapě konfigurace, postupujte podle následujícího příkladu:
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
Pokud chcete v objektu configmap/CRD použít základní nastavení i nastavení ověřování TLS, ujistěte se, že tajný klíč ama-metrics-mtls-secret
obsahuje všechny klíče v datové části s odpovídajícími hodnotami kódování base64, jak je znázorněno níže:
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
Poznámka
Cesta /etc/prometheus/certs/
je povinná, ale password1
může to být libovolný řetězec a musí odpovídat klíči pro data v tajném kódu vytvořeném výše. Důvodem je to, že tajný klíč ama-metrics-mtls-secret
je připojený k cestě /etc/prometheus/certs/
v rámci kontejneru.
Hodnota s kódováním Base64 se automaticky dekóduje pody ama-metrics při připojení tajného kódu jako souboru.
Ujistěte se, že je ama-metrics-mtls-secret
název tajného kódu a je v kube-system
oboru názvů.
Nejprve by se měl vytvořit tajný klíč a pak by se měl vytvořit objekt configmap, PodMonitor nebo ServiceMonitor v kube-system
oboru názvů. Na pořadí vytváření tajných kódů záleží. Pokud neexistuje žádný tajný kód, ale mapa konfigurace, PodMonitor nebo ServiceMonitor odkazující na tajný klíč, v protokolech kontejneru ama-metrics prometheus-collector se zobrazí následující chyba: no file found for cert....
Další informace o nastavení konfigurace protokolu TLS najdete v těchto konfiguracích.
Nastavení upozornění na metriky Prometheus
Dotazování metrik Prometheus
Další informace o shromažďování metrik Prometheus