Delen via


Prometheus-metrieken verzenden naar een Log Analytics-werkruimte met Container Inzichten

In dit artikel wordt beschreven hoe u metrische Prometheus-gegevens verzendt vanuit uw Kubernetes-cluster dat wordt bewaakt door Container Insights naar een Log Analytics-werkruimte. Voordat u deze configuratie uitvoert, moet u ervoor zorgen dat u prometheus-metrische gegevens uit uw cluster scrapt met behulp van de beheerde Azure Monitor-service voor Prometheus. Dit is de aanbevolen methode voor het bewaken van uw clusters. Gebruik de configuratie die in dit artikel wordt beschreven, alleen als u dezelfde gegevens ook naar een Log Analytics-werkruimte wilt verzenden, waar u deze kunt analyseren met behulp van logboekquery's en waarschuwingen voor zoeken in logboeken.

Voor deze configuratie moet u de bewakingsinvoegtoepassing configureren voor de Azure Monitor-agent. Dit is hetzelfde dat door Container Insights wordt gebruikt om gegevens naar een Log Analytics-werkruimte te verzenden. Hiervoor moet u het Prometheus-metingen eindpunt weergeven via uw exporteurs of pods en vervolgens de bewakingsaddon configureren voor de Azure Monitor-agent die door Container Insights wordt gebruikt, zoals weergegeven in het volgende diagram.

Diagram van containerbewakingsarchitectuur voor het verzenden van metrische Prometheus-gegevens naar Azure Monitor-logboeken.

Instellingen voor Prometheus-scraping (voor metrische gegevens die zijn opgeslagen als logboeken)

Actieve scraping van metrische gegevens van Prometheus wordt uitgevoerd vanuit een van de twee onderstaande perspectieven en metrische gegevens worden verzonden naar de geconfigureerde Log Analytics-werkruimte:

  • Cluster-wide: Wordt gedefinieerd in de ConfigMap-sectie [Prometheus data_collection_settings.cluster].
  • Knooppuntbreed: gedefinieerd in de sectie ConfigMap [Prometheus_data_collection_settings.node].
Eindpunt Bereik Voorbeeld
Pod-aantekening clusterwijd prometheus.io/scrape: "true"
prometheus.io/path: "/mymetrics"
prometheus.io/port: "8000"
prometheus.io/scheme: "http"
Kubernetes-service clusterwijd http://my-service-dns.my-namespace:9100/metrics
http://metrics-server.kube-system.svc.cluster.local/metrics
URL/eindpunt Per knooppunt en/of clusterbreedte http://myurl:9101/metrics

Wanneer een URL is opgegeven, verzamelt Container Insights alleen gegevens van het eindpunt. Wanneer de Kubernetes-service wordt gespecificeerd, wordt de servicenaam met de DNS-server van het cluster omgezet om het IP-adres te verkrijgen. Vervolgens wordt de opgeloste service geschraapt.

Bereik Sleutel Gegevenstype Waarde Beschrijving
clusterwijd Geef een van de volgende drie methoden op voor het scrapen van eindpunten voor metrische gegevens.
urls Snaar / Touwtje Door komma's gescheiden matrix HTTP-eindpunt (IP-adres of geldig URL-pad opgegeven). Voorbeeld: urls=[$NODE_IP/metrics]. ($NODE_IP is een specifieke containerinzichtparameter en kan worden gebruikt in plaats van een knooppunt-IP-adres. Moet hoofdletters bevatten.)
kubernetes_services Snaar / Touwtje Door komma's gescheiden matrix Een matrix van Kubernetes-services om metrische gegevens van kube-state-metrics te scrapen. Hier moeten volledig gekwalificeerde domeinnamen worden gebruikt. Bijvoorbeeldkubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics]
monitor_kubernetes_pods Booleaan waar of onwaar Wanneer deze instelling is ingesteld true in de instellingen voor het hele cluster, scrapt de Container Insights-agent Kubernetes-pods in het hele cluster voor de volgende Prometheus-aantekeningen:
prometheus.io/scrape:
prometheus.io/scheme:
prometheus.io/path:
prometheus.io/port:
prometheus.io/scrape Booleaan waar of onwaar Maakt scraping van de pod mogelijk en monitor_kubernetes_pods moet worden ingesteld op true.
prometheus.io/scheme Snaar / Touwtje http Standaard is het scrapen via HTTP.
prometheus.io/path Snaar / Touwtje Door komma's gescheiden matrix Het HTTP-resourcepad waaruit metrische gegevens moeten worden opgehaald. Als het pad naar metrische gegevens niet /metricsis, definieert u het met deze aantekening.
prometheus.io/port Snaar / Touwtje 9102 Geef een poort op om van te scrapen. Als de poort niet is ingesteld, wordt deze standaard ingesteld op 9102.
monitor_kubernetes_pods_namespaces Snaar / Touwtje Door komma's gescheiden matrix Een acceptatielijst met naamruimten voor het scrapen van metrische gegevens uit Kubernetes-pods.
Bijvoorbeeld monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"]
Knooppuntbreed urls Snaar / Touwtje Door komma's gescheiden matrix HTTP-eindpunt (IP-adres of geldig URL-pad opgegeven). Voorbeeld: urls=[$NODE_IP/metrics]. ($NODE_IP is een specifieke containerinzichtparameter en kan worden gebruikt in plaats van een knooppunt-IP-adres. Moet hoofdletters bevatten.)
Op knooppuntniveau of clusterniveau interval Snaar / Touwtje 60 s De standaardwaarde voor het verzamelingsinterval is één minuut (60 seconden). U kunt de verzameling voor [ prometheus_data_collection_settings.node] en/of [prometheus_data_collection_settings.cluster] wijzigen in tijdseenheden, zoals s, m en h.
Op knooppuntniveau of clusterniveau fieldpass
fielddrop
Snaar / Touwtje Door komma's gescheiden matrix U kunt specifieke metrische gegevens aangeven die van het eindpunt verzameld moeten worden of niet, door de lijsten voor toestaan (fieldpass) en weigeren (fielddrop) in te stellen. U moet eerst de acceptatielijst instellen.

Configureer ConfigMaps om de configuratie van Prometheus-scrape op te geven (voor metrische gegevens die zijn opgeslagen als logboeken)

Voer de volgende stappen uit om het configuratiebestand ConfigMap voor uw cluster te configureren. ConfigMaps is een algemene lijst en er kan slechts één ConfigMap worden toegepast op de agent. U kunt geen andere ConfigMaps hebben die de verzamelingen overschrijven.

  1. Download het YAML-bestand van de sjabloon ConfigMap en sla het op als container-azm-ms-agentconfig.yaml. Als u al een ConfigMap hebt geïmplementeerd in uw cluster en u deze wilt bijwerken met een nieuwere configuratie, kunt u het ConfigMap-bestand bewerken dat u eerder hebt gebruikt.

  2. Bewerk het YAML-bestand van ConfigMap met uw aanpassingen om metrische prometheus-gegevens te scrapen.

    Als u Kubernetes Services-clusterbreed wilt verzamelen, configureert u het ConfigMap-bestand met behulp van het volgende voorbeeld:

    prometheus-data-collection-settings: |- ​
    # Custom Prometheus metrics data collection settings
    [prometheus_data_collection_settings.cluster] ​
    interval = "1m"  ## Valid time units are s, m, h.
    fieldpass = ["metric_to_pass1", "metric_to_pass12"] ## specify metrics to pass through ​
    fielddrop = ["metric_to_drop"] ## specify metrics to drop from collecting
    kubernetes_services = ["http://my-service-dns.my-namespace:9102/metrics"]
    
  3. Voer de volgende kubectl-opdracht uit: kubectl apply -f <configmap_yaml_file.yaml>.

    Voorbeeld: kubectl apply -f container-azm-ms-agentconfig.yaml.

Het kan enkele minuten duren voordat de configuratiewijziging is voltooid. Alle ama-logs pods in het cluster worden opnieuw opgestart. Wanneer het opnieuw opstarten is voltooid, wordt een bericht weergegeven dat lijkt op het volgende en het resultaat configmap "container-azm-ms-agentconfig" createdbevat.

Configuratie controleren

Als u wilt controleren of de configuratie is toegepast op een cluster, gebruikt u de volgende opdracht om de logboeken van een agentpod te controleren: kubectl logs ama-logs-fdf58 -n=kube-system

Als er configuratiefouten zijn van de Azure Monitor Agent-pods, worden in de uitvoer fouten weergegeven die vergelijkbaar zijn met het volgende voorbeeld:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Fouten met betrekking tot het toepassen van configuratiewijzigingen zijn ook beschikbaar voor revisie. De volgende opties zijn beschikbaar voor het oplossen van problemen met configuratiewijzigingen en het scrapen van Prometheus-metrieken:

  • In de agent pod-logboeken met dezelfde kubectl logs opdracht.

  • Uit live gegevens. Livegegevenslogboeken tonen fouten die vergelijkbaar zijn met het volgende voorbeeld:

    2019-07-08T18:55:00Z E! [inputs.prometheus]: Error in plugin: error making HTTP request to http://invalidurl:1010/metrics: Get http://invalidurl:1010/metrics: dial tcp: lookup invalidurl on 10.0.0.10:53: no such host
    
  • Vanuit de kubeMonAgentEvents-tabel in uw Log Analytics-werkruimte. Gegevens worden elk uur verzonden met Waarschuwing ernst voor scrapefouten en Fout ernst voor configuratiefouten. Als er geen fouten zijn, bevat de vermelding in de tabel gegevens met ernstniveau Info, die geen fouten melden. De eigenschap Tags bevat meer informatie over de pod en container-id waarop de fout is opgetreden, evenals het eerste exemplaar, het laatste exemplaar en het aantal in het afgelopen uur.

  • Controleer voor Azure Red Hat OpenShift v3.x en v4.x de logboeken van de Azure Monitor-agent door te zoeken in de ContainerLog-tabel om te controleren of logboekverzameling van openshift-azure-logging is ingeschakeld.

Fouten voorkomen dat de Azure Monitor-agent het bestand parseert, waardoor het opnieuw wordt opgestart en de standaardconfiguratie wordt gebruikt. Nadat u de fouten in ConfigMap op andere clusters dan Azure Red Hat OpenShift v3.x hebt gecorrigeerd, slaat u het YAML-bestand op en past u de bijgewerkte ConfigMaps toe door de opdracht kubectl apply -f <configmap_yaml_file.yamluit te voeren.

Bewerk en sla voor Azure Red Hat OpenShift v3.x de bijgewerkte ConfigMaps op door de opdracht oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logginguit te voeren.

Metrische gegevens van Prometheus opvragen

Raadpleeg Query Prometheus metrics data om Prometheus-metrische gegevens weer te geven die door Azure Monitor zijn verzameld en om eventuele door de agent gerapporteerde configuratie-/scrapingfouten te bekijken.

Metrische prometheus-gegevens weergeven in Grafana

Container Insights biedt ondersteuning voor het weergeven van metrische gegevens die zijn opgeslagen in uw Log Analytics-werkruimte in Grafana-dashboards. We hebben een sjabloon opgegeven die u kunt downloaden uit de dashboardopslagplaats van Grafana. Gebruik de sjabloon om aan de slag te gaan en ernaar te verwijzen om te leren hoe u andere gegevens opvraagt uit uw bewaakte clusters om deze te visualiseren in aangepaste Grafana-dashboards.

Volgende stappen