Share via


Aangepast configuratiebestand maken en valideren voor metrische prometheus-gegevens in Azure Monitor

Naast de standaards scrapedoelen die standaard door azure Monitor Prometheus-agent worden verwijderd, gebruikt u de volgende stappen om meer knipselconfiguratie aan de agent op te geven met behulp van een configmap. De Azure Monitor Prometheus-agent begrijpt of verwerkt geen CRD's voor de scrape-configuratie, maar gebruikt in plaats daarvan de systeemeigen Prometheus-configuratie zoals gedefinieerd in de Prometheus-configuratie.

De drie configuratiekaarten die kunnen worden gebruikt voor aangepaste doelschrooting zijn:

  • ama-metrics-prometheus-config (aanbevolen): wanneer een configuratiemap met deze naam wordt gemaakt, worden knipseltaken die erin zijn gedefinieerd, uitgevoerd vanaf de replicapod voor metrische gegevens van Azure Monitor die in het cluster wordt uitgevoerd.
  • ama-metrics-prometheus-config-node (Geavanceerd) - Wanneer een configuratiekaart met deze naam wordt gemaakt, worden scrape-taken die erin zijn gedefinieerd, uitgevoerd vanaf elke Linux DaemonSet-pod die in het cluster wordt uitgevoerd. Zie Geavanceerde installatie voor meer informatie.
  • ama-metrics-prometheus-config-node-windows (Geavanceerd) - Wanneer een configuratiekaart met deze naam wordt gemaakt, worden scrape-taken die erin zijn gedefinieerd, uitgevoerd vanaf elke Windows DaemonSet. Zie Geavanceerde installatie voor meer informatie.

Een Prometheus-configuratiebestand maken

Een eenvoudigere manier om Prometheus-configuratietaken voor scrape te maken:

  • Stap:1 Gebruik een configuratiebestand (yaml) om scrape-taken te maken/te definiëren
  • Stap:2 Valideer het config-bestand met een aangepast hulpprogramma (zoals opgegeven in dit artikel) en converteer dat configuratiebestand vervolgens naar configmap
  • Stap:3 Implementeer het knipselconfiguratiebestand als configuratiemap naar uw clusters.

Op deze manier is het eenvoudiger om yaml-configuratie te maken (wat zeer ruimtegevoelig is) en niet onbedoelde spaties toe te voegen door de config-configuratie rechtstreeks in de configuratietoewijzing te ontwerpen.

Maak een Prometheus scrape-configuratiebestand met de naam prometheus-config. Zie configuratietips en voorbeelden voor meer informatie over het ontwerpen van scrape-configuratie voor Prometheus. U kunt ook verwijzen naar Prometheus.io naslaginformatie over de scrape-configuratie. Uw configuratiebestand bevat de knipselconfiguraties onder de sectie scrape_configs en kan eventueel de globale sectie gebruiken voor het instellen van de algemene scrape_interval, scrape_timeouten external_labels.

Tip

Wijzigingen in de algemene sectie zijn van invloed op de standaardconfiguraties en de aangepaste configuratie.

Hier volgt een voorbeeld van een Prometheus-config-bestand met knipsel:

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"

Het config-bestand voor scrape valideren

De agent gebruikt een aangepast hulpprogramma promconfigvalidator om de Prometheus-configuratie te valideren die aan de agent is gegeven via de configmap. Als de configuratie niet geldig is, wordt de opgegeven aangepaste configuratie geweigerd door de invoegtoepassingsagent. Zodra u uw Prometheus-configuratiebestand hebt, kunt u eventueel het promconfigvalidator hulpprogramma gebruiken om uw configuratie te valideren voordat u een configuratiemap maakt die door de agent wordt gebruikt.

Het promconfigvalidator hulpprogramma wordt geleverd in de invoegtoepassing(en) voor metrische gegevens van Azure Monitor. U kunt elk van de ama-metrics-node-* pods in naamruimte in kube-system uw cluster gebruiken om het hulpprogramma voor validatie te downloaden. Gebruik kubectl cp dit om het hulpprogramma en de configuratie ervan te downloaden:

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

Nadat u het uitvoerbare bestand en de yaml hebt gekopieerd, zoekt u het pad naar het Prometheus-configuratiebestand dat u hebt gemaakt. <config path> Vervang vervolgens in de opdracht en voer de validator uit door de opdracht:

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

Als u de validatie uitvoert, wordt het samengevoegde configuratiebestand merged-otel-config.yaml gegenereerd als er geen pad is opgegeven met de optionele output parameter. Gebruik dit automatisch gegenereerde samengevoegde bestand niet als configuratie voor de agent voor metrische gegevensverzamelaar, omdat het alleen wordt gebruikt voor hulpprogrammavalidatie en foutopsporing.

Configuratiebestand implementeren als configmap

Uw aangepaste Prometheus-configuratiebestand wordt gebruikt als een veld met de naam prometheus-config in de addon configmap(s) ama-metrics-prometheus-config (of) ama-metrics-prometheus-config-node (of) ama-metrics-prometheus-config-node-windows in de kube-system naamruimte. U kunt een configmap maken op basis van het knipselconfiguratiebestand dat u hierboven hebt gemaakt, door de naam van uw Prometheus-configuratiebestand te wijzigen in prometheus-config (zonder bestandsextensie) en een of meer van de volgende opdrachten uit te voeren, afhankelijk van de configuratie van de configuratie van uw aangepaste scrapetaak(s).

Ex;: configmap maken die moet worden gebruikt door replicsset

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

Hiermee maakt u een configuratiemap met de naam ama-metrics-prometheus-config kube-system in de naamruimte. De replicapod met metrische gegevens van Azure Monitor wordt in 30-60 sec. opnieuw opgestart om de nieuwe configuratie toe te passen. Als u wilt zien of er problemen zijn met de configuratievalidatie, verwerking of samenvoeging, kunt u de ama-metrics replicapods bekijken

Ex;: configmap maken die moet worden gebruikt door Linux DaemonSet

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

Hiermee maakt u een configuratiemap met de naam ama-metrics-prometheus-config-node kube-system in de naamruimte. Elke Linux DaemonSet-pod wordt in 30-60 sec opnieuw opgestart om de nieuwe configuratie toe te passen. Als u wilt zien of er problemen zijn met de configuratievalidatie, verwerking of samenvoeging, kunt u de linux-deamonset-pods ama-metrics-node bekijken

Ex;: configmap maken die moet worden gebruikt door Windows DaemonSet

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

Hiermee maakt u een configuratiemap met de naam ama-metrics-prometheus-config-node-windows kube-system in de naamruimte. Elke Metrische Gegevens van Azure Monitor voor Windows DaemonSet-pod wordt in 30-60 sec opnieuw opgestart om de nieuwe configuratie toe te passen. Als u wilt zien of er problemen zijn met de configuratievalidatie, verwerking of samenvoeging, kunt u kijken naar de Windows-deamonset-pods ama-metrics-win-node

Zorg ervoor dat het Prometheus-configuratiebestand een naam prometheus-config heeft voordat u de volgende opdracht uitvoert, omdat de bestandsnaam wordt gebruikt als de naam van de configuratiemap-instelling.

Hiermee maakt u een configuratiemap met de naam ama-metrics-prometheus-config kube-system in de naamruimte. De pod met metrische gegevens van Azure Monitor wordt opnieuw opgestart om de nieuwe configuratie toe te passen. Als u wilt zien of er problemen zijn met de configuratievalidatie, verwerking of samenvoeging, kunt u de ama-metrics pods bekijken.

Hier ziet u een voorbeeld van de ama-metrics-prometheus-config configuratiemap.

Probleemoplossing

Als u de configuratiemap hebt gemaakt (ama-metrics-prometheus-config of ama-metrics-prometheus-config-node) in de kube-system-naamruimte en de aangepaste doelen nog steeds niet worden verwijderd, controleer op fouten in de replicapodlogboeken voor ama-metrics-prometheus-config configmap of DaemonSet-podlogboeken voor ama-metrics-prometheus-config-node configmap) met behulp van kubectl-logboeken en zorg ervoor dat er geen fouten zijn in de Begin met het samenvoegen van de standaard- en aangepaste prometheus-configuratiesectie met voorvoegsel prometheus-config-merger

Notitie

Geavanceerde installatie: aangepaste Prometheus-scrapetaken configureren voor de DaemonSet

De ama-metrics Replica-pod gebruikt de aangepaste Prometheus-configuratie en scrapt de opgegeven doelen. Voor een cluster met een groot aantal knooppunten en pods en een groot aantal metrische gegevens om te scrapen, kunnen sommige van de toepasselijke aangepaste scrapedoelen worden uitgeschakeld van de enkele ama-metrics replicapod naar de ama-metrics DaemonSet-pod.

De ama-metrics-prometheus-config-node configmap, is vergelijkbaar met de replica-set configmap en kan worden gemaakt om statische knipselconfiguraties op elk knooppunt te hebben. De scrape-configuratie mag alleen gericht zijn op één knooppunt en mag geen servicedetectie-/podaantekeningen gebruiken. Anders probeert elk knooppunt alle doelen te scrapen en worden veel aanroepen naar de Kubernetes-API-server uitgevoerd.

Aangepaste knipseldoelen kunnen dezelfde indeling volgen met static_configs doelen en de $NODE_IP omgevingsvariabele gebruiken en de poort opgeven om te scrapen. Elke pod van de DaemonSet neemt de configuratie, scrapt de metrische gegevens en verzendt deze voor dat knooppunt.

Voorbeeld:: de volgende node-exporter configuratie is een van de standaarddoelen voor de DaemonSet-pods. Deze maakt gebruik van de $NODE_IP omgevingsvariabele, die al is ingesteld voor elke ama-metrics invoegtoepassingscontainer om een specifieke poort op het knooppunt te richten.

- 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']

Volgende stappen