Share via


Metrische prometheus-gegevens verzenden naar log analytics-werkruimte met containerinzichten

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 het eindpunt voor metrische prometheus-gegevens worden weergegeven via uw exporteurs of pods en vervolgens de bewakingsinvoegtoepassing configureren voor de Azure Monitor-agent die door Container Insights wordt gebruikt, zoals in het volgende diagram wordt weergegeven.

Diagram of container monitoring architecture sending Prometheus metrics to Azure Monitor Logs.

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:

  • Clusterbreed: gedefinieerd in de sectie ConfigMap [Prometheus data_collection_settings.cluster].
  • Knooppuntbreed: gedefinieerd in de sectie ConfigMap [Prometheus_data_collection_settings.node].
Eindpunt Bereik Opmerking
Aantekening van pod Clusterbreed prometheus.io/scrape: "true"
prometheus.io/path: "/mymetrics"
prometheus.io/port: "8000"
prometheus.io/scheme: "http"
Kubernetes-service Clusterbreed http://my-service-dns.my-namespace:9100/metrics
http://metrics-server.kube-system.svc.cluster.local/metrics
URL/eindpunt Per knooppunt en/of clusterbreed http://myurl:9101/metrics

Wanneer een URL is opgegeven, wordt het eindpunt alleen door Container Insights verwijderd. Wanneer de Kubernetes-service is opgegeven, wordt de servicenaam omgezet met de DNS-server van het cluster om het IP-adres op te halen. Vervolgens wordt de opgeloste service geschraapt.

Bereik Sleutel Gegevenstype Weergegeven als Beschrijving
Clusterbreed Geef een van de volgende drie methoden op voor het scrapen van eindpunten voor metrische gegevens.
urls String 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 String 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. Bijvoorbeeld:kubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics]
monitor_kubernetes_pods Booleaanse waarde 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 Booleaanse waarde waar of onwaar Maakt scraping van de pod mogelijk en monitor_kubernetes_pods moet worden ingesteld op true.
prometheus.io/scheme String http Standaard is het scrapen via HTTP.
prometheus.io/path String 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 String 9102 Geef een poort op waaruit moet worden geschraapt. Als de poort niet is ingesteld, wordt deze standaard ingesteld op 9102.
monitor_kubernetes_pods_namespaces String 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 String 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.)
Knooppuntbreed of clusterbreed interval String 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.
Knooppuntbreed of clusterbreed fieldpass
fielddrop
String Door komma's gescheiden matrix U kunt bepaalde metrische gegevens opgeven die moeten worden verzameld of niet van het eindpunt door de vermelding toestaan (fieldpass) in te stellen en niet toe te staan (fielddrop). U moet eerst de acceptatielijst instellen.

Configuratie configureren Kaarten om de prometheus-scrapeconfiguratie 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. Config Kaarten is een algemene lijst en er kan slechts één ConfigMap worden toegepast op de agent. U kunt geen andere configuratie hebben Kaarten 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 om extra problemen met configuratiewijzigingen en scraping van metrische prometheus-gegevens uit te voeren:

  • Vanuit een agentpodlogboeken met dezelfde kubectl logs opdracht.

  • Uit livegegevens. 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 de ernst waarschuwing voor scrapefouten en de ernst van de fout voor configuratiefouten. Als er geen fouten zijn, bevat de vermelding in de tabel gegevens met ernstgegevens, 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 configuratie toe Kaarten door de opdracht kubectl apply -f <configmap_yaml_file.yamluit te voeren.

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

Metrische gegevens van Prometheus opvragen

Raadpleeg de metrische gegevens van Query Prometheus om metrische gegevens van Prometheus weer te geven die zijn verwijderd door Azure Monitor en eventuele configuratie-/scrapingfouten die door de agent zijn gerapporteerd.

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