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