Share via


Skapa och verifiera en anpassad konfigurationsfil för Prometheus-mått i Azure Monitor

Utöver standardmål för skrapning som Azure Monitor Prometheus-agenten skrapar som standard använder du följande steg för att tillhandahålla mer skrapkonfiguration till agenten med hjälp av en konfigurationskarta. Azure Monitor Prometheus-agenten förstår inte eller bearbetar inte operatörens CRD för skrapkonfiguration, utan använder i stället den inbyggda Prometheus-konfigurationen enligt definitionen i Prometheus-konfigurationen.

De tre konfigurationskartor som kan användas för anpassad målskrapa är -

  • ama-metrics-prometheus-config (rekommenderas) – När en konfigurationskarta med det här namnet skapas körs de skrapjobb som definierats i den från replikpodden för Azure Monitor-mått som körs i klustret.
  • ama-metrics-prometheus-config-node (Advanced) – När en konfigurationskarta med det här namnet skapas körs de skrapjobb som definierats i den från varje Linux DaemonSet-podd som körs i klustret. Mer information finns i Avancerad installation.
  • ama-metrics-prometheus-config-node-windows (Advanced) – När en konfigurationskarta med det här namnet skapas körs de skrapjobb som definierats i den från varje Windows DaemonSet. Mer information finns i Avancerad installation.

Skapa Prometheus-konfigurationsfil

Ett enklare sätt att skapa Konfigurationsjobb för Prometheus-skrapning:

  • Steg:1 Använd en konfigurationsfil (yaml) för att skapa/definiera skrapjobb
  • Steg:2 Verifiera skrapkonfigurationsfilen med ett anpassat verktyg (enligt beskrivningen i den här artikeln) och konvertera sedan den konfigurationsfilen till konfigurationsmappen
  • Steg:3 Distribuera skrapkonfigurationsfilen som konfigurationsmapp till dina kluster.

Det är enklare att skapa yaml-konfiguration (vilket är extremt utrymmeskänsligt) och inte lägga till oavsiktliga blanksteg genom att direkt redigera scrape config inuti konfigurationskartan.

Skapa en Konfigurationsfil för Prometheus-skrapning med namnet prometheus-config. Mer information finns i konfigurationstips och exempel som ger mer information om redigering av skrapkonfiguration för Prometheus. Du kan också referera till Prometheus.io referens för skrapkonfiguration. Konfigurationsfilen visar en lista över skrapkonfigurationerna i avsnittsavsnittet scrape_configs och kan också använda det globala avsnittet för att ange den globala scrape_interval, scrape_timeoutoch external_labels.

Dricks

Ändringar i det globala avsnittet påverkar standardkonfigurationerna och den anpassade konfigurationen.

Här är en prometheus-exempelkonfigurationsfil för skrapning:

global:
  scrape_interval: 30s
scrape_configs:
- job_name: my_static_config
  scrape_interval: 60s
  static_configs:
    - targets: ['my-static-service.svc.cluster.local:1234']

- job_name: prometheus_example_app
  scheme: http
  kubernetes_sd_configs:
    - role: service
  relabel_configs:
    - source_labels: [__meta_kubernetes_service_name]
      action: keep
      regex: "prometheus-example-service"

Verifiera scrape-konfigurationsfilen

Agenten använder ett anpassat promconfigvalidator verktyg för att verifiera prometheus-konfigurationen som ges till den via konfigurationskartan. Om konfigurationen inte är giltig avvisas den anpassade konfigurationen som anges av addon-agenten. När du har din Prometheus-konfigurationsfil kan du använda verktyget för att verifiera konfigurationen promconfigvalidator innan du skapar en konfigurationskarta som agenten använder.

Verktyget promconfigvalidator levereras i Azure Monitor-måtttillägget för poddar. Du kan använda någon av ama-metrics-node-* poddarna i kube-system namnområdet i klustret för att ladda ned verktyget för validering. Använd kubectl cp för att ladda ned verktyget och dess konfiguration:

for podname in $(kubectl get pods -l rsName=ama-metrics -n=kube-system -o json | jq -r '.items[].metadata.name'); do kubectl cp -n=kube-system "${podname}":/opt/promconfigvalidator ./promconfigvalidator;  kubectl cp -n=kube-system "${podname}":/opt/microsoft/otelcollector/collector-config-template.yml ./collector-config-template.yml; chmod 500 promconfigvalidator; done

När du har kopierat den körbara filen och yaml-filen letar du reda på sökvägen till din Prometheus-konfigurationsfil som du har skapat. Ersätt <config path> sedan i kommandot och kör validatorn med kommandot :

./promconfigvalidator/promconfigvalidator --config "<config path>" --otelTemplate "./promconfigvalidator/collector-config-template.yml"

Om du kör validatorn genereras den sammanfogade konfigurationsfilen merged-otel-config.yaml om det inte finns någon sökväg med den valfria output parametern. Använd inte den här autogenererade sammanfogade filen som konfiguration till måttinsamlaragenten eftersom den endast används för verktygsverifiering och felsökning.

Distribuera konfigurationsfilen som konfigurationskarta

Din anpassade Prometheus-konfigurationsfil används som ett fält med namnet prometheus-config inuti måtttilläggskonfigurationsmappar ama-metrics-prometheus-config (eller) ama-metrics-prometheus-config-node (eller) ama-metrics-prometheus-config-node-windows i kube-system namnområdet. Du kan skapa en konfigurationskarta från den scrape-konfigurationsfil som du skapade ovan genom att byta namn på prometheus-konfigurationsfilen till prometheus-config (utan filnamnstillägg) och köra ett eller flera av följande kommandon, beroende på vilken konfigurationskarta du vill skapa för dina anpassade skrapjobbskonfiguration.

Ex;- för att skapa en konfigurationskarta som ska användas av replicsset

kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system

Då skapas en konfigurationskarta med namnet ama-metrics-prometheus-config i kube-system namnområdet. Replikpodden för Azure Monitor-mått startar om om 30–60 sekunder för att tillämpa den nya konfigurationen. Om du vill se om det finns några problem med konfigurationsverifiering, bearbetning eller sammanslagning kan du titta på ama-metrics replikpoddarna

Ex;- för att skapa en konfigurationskarta som ska användas av Linux DaemonSet

kubectl create configmap ama-metrics-prometheus-config-node --from-file=prometheus-config -n kube-system

Då skapas en konfigurationskarta med namnet ama-metrics-prometheus-config-node i kube-system namnområdet. Varje Azure Monitor-mått Startar om Linux DaemonSet-podden om 30–60 sekunder för att tillämpa den nya konfigurationen. Om du vill se om det finns några problem med konfigurationsverifiering, bearbetning eller sammanslagning kan du titta på ama-metrics-node poddarna för Linux-deamonset

Ex;- för att skapa en konfigurationskarta som ska användas av Windows DaemonSet

kubectl create configmap ama-metrics-prometheus-config-node-windows --from-file=prometheus-config -n kube-system

Då skapas en konfigurationskarta med namnet ama-metrics-prometheus-config-node-windows i kube-system namnområdet. Varje Azure Monitor-mått startar om Windows DaemonSet-podden om 30–60 sekunder för att tillämpa den nya konfigurationen. Om du vill se om det finns några problem med konfigurationsverifiering, bearbetning eller sammanslagning kan du titta på ama-metrics-win-node poddarna för Windows-deamonset

Kontrollera att Prometheus-konfigurationsfilen namnges prometheus-config innan du kör följande kommando eftersom filnamnet används som namn på konfigurationsmappsinställningen.

Då skapas en konfigurationskarta med namnet ama-metrics-prometheus-config i kube-system namnområdet. Azure Monitor-måttpodden startas om för att tillämpa den nya konfigurationen. Om du vill se om det finns några problem med konfigurationsverifiering, bearbetning eller sammanslagning kan du titta på ama-metrics poddarna.

Ett exempel på konfigurationskartan ama-metrics-prometheus-config finns här.

Felsökning

Om du har skapat konfigurationskartan (ama-metrics-prometheus-config eller ama-metrics-prometheus-config-node) i kube-system-namnområdet och fortfarande inte ser de anpassade målen som skrapas, kontrollera om det finns fel i replikpoddloggarna för ama-metrics-prometheus-configmap eller DaemonSet-poddloggarna för ama-metrics-prometheus-config-node configmap) med kubectl-loggar och se till att det inte finns några fel i konfigurationskartan Starta sammanslagning av standard- och anpassad Prometheus-konfigurationsavsnitt med prefixet prometheus-config-merger

Kommentar

Avancerad konfiguration: Konfigurera anpassade Prometheus-skrapjobb för DaemonSet

ama-metrics Replikpodden använder den anpassade Prometheus-konfigurationen och skrapar de angivna målen. För ett kluster med ett stort antal noder och poddar och en stor mängd mått som ska skrapas, kan vissa av de tillämpliga anpassade skrapmålen avlastas från den enda ama-metrics replikpodden till ama-metrics DaemonSet-podden.

Konfigurationsmappen ama-metrics-prometheus-config-node liknar konfigurationskartan för replikuppsättningar och kan skapas för att ha statiska skrapningskonfigurationer på varje nod. Skrapkonfigurationen bör endast riktas mot en enskild nod och bör inte använda tjänstidentifiering/poddanteckningar. Annars försöker varje nod skrapa alla mål och gör många anrop till Kubernetes API-servern.

Anpassade skrapmål kan följa samma format genom att använda static_configs med mål och använda $NODE_IP miljövariabeln och ange vilken port som ska skrapas. Varje podd i DaemonSet tar konfigurationen, skrapar måtten och skickar dem för den noden.

Exempel:- Följande node-exporter konfiguration är ett av standardmålen för DaemonSet-poddarna. Den använder $NODE_IP miljövariabeln, som redan har angetts för varje ama-metrics tilläggscontainer för att rikta in sig på en specifik port på noden.

- job_name: nodesample
  scrape_interval: 30s
  scheme: http
  metrics_path: /metrics
  relabel_configs:
  - source_labels: [__metrics_path__]
    regex: (.*)
    target_label: metrics_path
  - source_labels: [__address__]
    replacement: '$NODE_NAME'
    target_label: instance
  static_configs:
  - targets: ['$NODE_IP:9100']

Nästa steg