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.

Mapy konfigurace

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.

  1. 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 do kube-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íží
  2. 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 do kube-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.
  3. 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 do kube-system oboru názvů pro váš cluster.
  4. 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 do kube-system oboru názvů pro váš cluster.

Vlastní definice prostředků

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.

Konfigurační mapa nastavení doplňku Metriky

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.

Povolení a zakázání výchozích cílů

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 mapuama-metrics-settings-configmap konfigurace a aktualizujte cíle uvedené v seznamu default-scrape-settings-enabled na true. Použijte mapu configmap pro váš cluster.

Povolení výstřižků na základě poznámek podů

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-configmapregulá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"

Pokud chcete povolit výstřižky pro pody s poznámkami ve všech oborech názvů, použijte:

pod-annotation-based-scraping: |-
    podannotationnamespaceregex = ".*"

Upozorňující

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.

Přizpůsobení metrik shromážděných podle výchozích cílů

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-lista 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 falsehodnotu . 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.

Alias clusteru

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/00000000-0000-0000-0000-000000000000/resourcegroups/rg-name/providers/Microsoft.ContainerService/managedClusters/myclusternameID prostředku , popisek clusteru je myclustername.

Pokud chcete přepsat popisek clusteru v časové řadě, 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.

Režim ladění

Upozorňující

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í.

Pokud chcete zobrazit každou metriku, která se pro účely ladění zřetězila, je možné agenta doplňku metrik nakonfigurovat tak, aby běžel v režimu ladění aktualizací nastavení na pod nastavením v konfigurační mapěama-metrics-settings-configmap.debug-modetrueenabled 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.

Nastavení intervalu výstřižku

Pokud chcete aktualizovat nastavení intervalu výstřižku pro libovolný cíl, můžete dobu trvání v nastavení default-targets-scrape-interval-settings pro daný cíl v konfigurační mapě ama-metrics-settings-configmapaktualizovat. 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

Konfigurace vlastních úloh výstřižků Prometheus

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.

Tipy a příklady konfigurace prometheus

Seznamte se s tipy z příkladů v této části.

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).

Konfigurace výstřižků

Podporované metody zjišťování cílů pro vlastní prostředky jsou v současné době podem a monitorováním služeb.

Monitorování podů a 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.

Přeznačky

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řidání popisku

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'

Použití popisků Pod nebo Service Monitor

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'

Opětovné označování úloh a instancí

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

Přeznačky metrik

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.

Vyřazení metrik podle názvu

# Drop the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
  action: drop
  regex: 'example_metric_name'

Zachovat pouze určité metriky podle názvu

# 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

Přejmenování metrik se nepodporuje.

Filtrování metrik podle popisků

# 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: '.+'

Výstřižky založené na protokolu TLS

Pokud máte instanci Prometheus obsluhovanou protokolem TLS a chcete z ní získat metriky, musíte nastavit schéma na https a nastavit nastavení PROTOKOLU TLS v konfigurační mapě nebo příslušné CRD. Pomocí vlastnosti konfigurace uvnitř vlastní úlohy výstřižku můžete tls_config nakonfigurovat nastavení protokolu TLS pomocí CRD nebo konfigurační mapy. K ověření certifikátu serveru ROZHRANÍ API je potřeba zadat certifikát certifikační autority. Certifikát certifikační autority slouží k ověření pravosti certifikátu serveru, když se Prometheus připojí k cíli přes protokol TLS. Pomáhá zajistit, aby certifikát serveru byl podepsán důvěryhodnou autoritou.

Tajný klíč by se měl vytvořit v oboru názvů kube-system a pak by se měl vytvořit objekt configmap/CRD v oboru názvů kube-system. Na pořadí vytváření tajných kódů záleží. Pokud neexistuje žádný tajný klíč, ale platná mapa CRD/config, najdete chyby v protokolu kolektoru –>no file found for cert....

Níže jsou uvedeny podrobnosti o tom, jak poskytnout nastavení konfigurace PROTOKOLU TLS prostřednictvím mapy konfigurace nebo CRD.

  • Pokud chcete zadat nastavení konfigurace protokolu TLS v mapě konfigurace, vytvořte certifikát podepsaný svým držitelem a klíč v aplikaci s podporou mtls. Příklad tlsConfig v mapě konfigurace by měl vypadat takto:
tls_config:
    ca_file: /etc/prometheus/certs/client-cert.pem
    cert_file: /etc/prometheus/certs/client-cert.pem
    key_file: /etc/prometheus/certs/client-key.pem
    insecure_skip_verify: false
  • Pokud chcete zadat nastavení konfigurace protokolu TLS v CRD, vytvořte certifikát podepsaný svým držitelem a klíč v aplikaci s podporou mtls. Příklad tlsConfig uvnitř podmonitoru by měl vypadat takto:
tlsConfig:
    ca:
        secret:
        key: "client-cert.pem" # since it is self-signed
        name: "ama-metrics-mtls-secret"
    cert:
        secret:
        key: "client-cert.pem"
        name: "ama-metrics-mtls-secret"
    keySecret:
        key: "client-key.pem"
        name: "ama-metrics-mtls-secret"
    insecureSkipVerify: false

Poznámka:

Ujistěte se, že název souboru certifikátu a název klíče uvnitř aplikace mtls je v následujícím formátu v případě výstřižku založeného na CRD. Příklad: secret_kube-system_ama-metrics-mtls-secret_cert-name.pem a secret_kube-system_ama-metrics-mtls-secret_key-name.pem. CrD je potřeba vytvořit v oboru názvů kube-system. Název tajného kódu by měl být přesně ama-metrics-mtls-secret v oboru názvů kube-system. Příklad příkazu pro vytvoření tajného kódu: kubectl create secret generic ama-metrics-mtls-secret --from-file=secret_kube-system_ama-metrics-mtls-secret_client-cert.pem=secret_kube-system_ama-metrics-mtls-secret_client secret_kube-cert.pem --from-file=secret_kube-system_ama-metrics-mtls-secret_client-key.pem=secret_kube-system_ama-metrics-mtls-secret_client-key.pem -n kube-system

Další informace o ověřování TLS můžou být užitečné v následujících dokumentech.

Základní ověřování

Pokud používáte basic_auth nastavení v konfiguraci prometheus, postupujte podle kroků :

  1. Vytvoření tajného kódu v oboru názvů kube-system s názvem ama-metrics-mtls-secret

Hodnota pro heslo1 je base64encoded Klíč password1 může být cokoli, ale stačí, aby odpovídala vaší scrapeconfig password_file cestu k souboru.

apiVersion: v1
kind: Secret
metadata:
  name: ama-metrics-mtls-secret
  namespace: kube-system
type: Opaque
data:
  password1: <base64-encoded-string>
  1. V konfigurační mapě vlastní konfigurace výstřižku použijte následující nastavení :
basic_auth:
  username: admin
  password_file: /etc/prometheus/certs/password1

Poznámka:

Ujistěte se, že je název ama-metrics-mtls-secret a že je v oboru názvů kube-system .

Cesta /etc/prometheus/certs/ je povinná, ale heslo1 může 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ý kód ama-metrics-mtls-secret je připojený v cestě /etc/prometheus/certs/ v rámci kontejneru.

Zakódovaná hodnota base64 je automaticky dekódována pody agenta při připojení tajného kódu jako souboru.

Jakékoli jiné nastavení konfigurace pro autorizaci, které je považováno za tajný kód v konfiguraci prometheus, musí místo toho použít alternativu nastavení souboru, jak je popsáno výše.

Další kroky

Nastavení upozornění na metriky Prometheus
Dotazování metrik Prometheus
Další informace o shromažďování metrik Prometheus