Share via


Skicka Prometheus-mått till Log Analytics-arbetsytan med Container Insights

Den här artikeln beskriver hur du skickar Prometheus-mått från ditt Kubernetes-kluster som övervakas av Container Insights till en Log Analytics-arbetsyta. Innan du utför den här konfigurationen bör du först se till att du skrapar Prometheus-mått från klustret med azure monitor-hanterad tjänst för Prometheus, vilket är den rekommenderade metoden för att övervaka dina kluster. Använd konfigurationen som beskrivs i den här artikeln endast om du också vill skicka samma data till en Log Analytics-arbetsyta där du kan analysera dem med hjälp av loggfrågor och loggsökningsaviseringar.

Den här konfigurationen kräver att du konfigurerar övervakningstillägget för Azure Monitor-agenten, vilket är samma som används av Container Insights för att skicka data till en Log Analytics-arbetsyta. Det kräver att prometheus-måttslutpunkten exponeras via dina exportörer eller poddar och sedan konfigurerar övervakningstillägget för Azure Monitor-agenten som används av Container Insights enligt följande diagram.

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

Prometheus-skrapningsinställningar (för mått som lagras som loggar)

Aktiv skrapning av mått från Prometheus utförs från ett av två perspektiv nedan och mått skickas till den konfigurerade log analytics-arbetsytan :

  • Klusteromfattande: Definieras i avsnittet ConfigMap [Prometheus data_collection_settings.cluster].
  • Nodomfattande: Definierad i avsnittet ConfigMap [Prometheus_data_collection_settings.node].
Slutpunkt Omfattning Exempel
Poddanteckning Klusteromfattande prometheus.io/scrape: "true"
prometheus.io/path: "/mymetrics"
prometheus.io/port: "8000"
prometheus.io/scheme: "http"
Kubernetes-tjänst Klusteromfattande http://my-service-dns.my-namespace:9100/metrics
http://metrics-server.kube-system.svc.cluster.local/metrics
URL/slutpunkt Per nod och/eller klusteromfattande http://myurl:9101/metrics

När en URL anges skrapar Container Insights bara slutpunkten. När Kubernetes-tjänsten har angetts matchas tjänstnamnet med klustrets DNS-server för att hämta IP-adressen. Sedan skrapas den lösta tjänsten.

Omfattning Nyckel Datatyp Värde beskrivning
Klusteromfattande Ange någon av följande tre metoder för att skrapa slutpunkter för mått.
urls String Kommaavgränsad matris HTTP-slutpunkt (antingen IP-adress eller giltig URL-sökväg har angetts). Exempel: urls=[$NODE_IP/metrics]. ($NODE_IP är en specifik containerinsiktsparameter och kan användas i stället för en nod-IP-adress. Måste vara versaler.)
kubernetes_services String Kommaavgränsad matris En matris med Kubernetes-tjänster för att skrapa mått från kube-state-metrics. Fullständigt kvalificerade domännamn måste användas här. Till exempelkubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics]
monitor_kubernetes_pods Booleskt sant eller falskt När den är inställd true på i inställningarna för hela klustret skrapar Container Insights-agenten Kubernetes-poddar över hela klustret för följande Prometheus-anteckningar:
prometheus.io/scrape:
prometheus.io/scheme:
prometheus.io/path:
prometheus.io/port:
prometheus.io/scrape Booleskt sant eller falskt Aktiverar skrapning av podden och monitor_kubernetes_pods måste vara inställt på true.
prometheus.io/scheme String http Standardvärdet är att skrapa över HTTP.
prometheus.io/path String Kommaavgränsad matris HTTP-resurssökvägen som mått ska hämtas från. Om måttsökvägen inte /metricsär definierar du den med den här kommentaren.
prometheus.io/port String 9102 Ange en port som ska skrapas från. Om porten inte har angetts är den som standard 9102.
monitor_kubernetes_pods_namespaces String Kommaavgränsad matris En lista över tillåtna namnområden för att skrapa mått från Kubernetes-poddar.
Till exempel: monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"]
Hela noden urls String Kommaavgränsad matris HTTP-slutpunkt (antingen IP-adress eller giltig URL-sökväg har angetts). Exempel: urls=[$NODE_IP/metrics]. ($NODE_IP är en specifik containerinsiktsparameter och kan användas i stället för en nod-IP-adress. Måste vara versaler.)
Nodomfattande eller klusteromfattande interval String 60 s Standardvärdet för insamlingsintervallet är en minut (60 sekunder). Du kan ändra samlingen för antingen [prometheus_data_collection_settings.node] och/eller [prometheus_data_collection_settings.cluster] till tidsenheter som s, m och h.
Nodomfattande eller klusteromfattande fieldpass
fielddrop
String Kommaavgränsad matris Du kan ange vissa mått som ska samlas in eller inte från slutpunkten genom att ange tillåtna (fieldpass) och otillåtna (fielddrop) listor. Du måste ange listan över tillåtna först.

Konfigurera konfiguration Kartor för att ange Konfiguration av Prometheus-skrapning (för mått som lagras som loggar)

Utför följande steg för att konfigurera konfigurationsfilen för ConfigMap för klustret. Config Kartor är en global lista och det kan bara finnas en ConfigMap som tillämpas på agenten. Du kan inte ha någon annan konfiguration Kartor som åsidoväxlar samlingarna.

  1. Ladda ned YAML-filen för mallen ConfigMap och spara den som container-azm-ms-agentconfig.yaml. Om du redan har distribuerat en ConfigMap till klustret och vill uppdatera den med en nyare konfiguration kan du redigera ConfigMap-filen som du tidigare har använt.

  2. Redigera YAML-filen ConfigMap med dina anpassningar för att skrapa Prometheus-mått.

    Om du vill samla in Kubernetes-tjänster i hela klustret konfigurerar du ConfigMap-filen med hjälp av följande exempel:

    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. Kör följande kubectl-kommando: kubectl apply -f <configmap_yaml_file.yaml>.

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

Konfigurationsändringen kan ta några minuter innan den börjar gälla. Alla ama-logs-poddar i klustret startas om. När omstarterna är klara visas ett meddelande som liknar följande och innehåller resultatet configmap "container-azm-ms-agentconfig" created.

Verifiera konfigurationen

Kontrollera att konfigurationen har tillämpats på ett kluster genom att använda följande kommando för att granska loggarna från en agentpodd: kubectl logs ama-logs-fdf58 -n=kube-system.

Om det finns konfigurationsfel från Azure Monitor Agent-poddarna visar utdata fel som liknar följande exempel:

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

Fel som rör tillämpning av konfigurationsändringar är också tillgängliga för granskning. Följande alternativ är tillgängliga för att utföra ytterligare felsökning av konfigurationsändringar och skrapning av Prometheus-mått:

  • Från en agentpoddloggar med samma kubectl logs kommando.

  • Från livedata. LiveDataloggar visar fel som liknar följande exempel:

    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
    
  • Från tabellen KubeMonAgentEvents på din Log Analytics-arbetsyta. Data skickas varje timme med varnings allvarlighetsgrad för skrapfel och fel allvarlighetsgrad för konfigurationsfel. Om det inte finns några fel innehåller posten i tabellen data med allvarlighetsgradsinformation, som inte rapporterar några fel. Egenskapen Taggar innehåller mer information om podden och container-ID:t där felet inträffade och även den första förekomsten, den senaste förekomsten och antalet under den senaste timmen.

  • För Azure Red Hat OpenShift v3.x och v4.x kontrollerar du Azure Monitor Agent-loggarna genom att söka i tabellen ContainerLog för att kontrollera om loggsamlingen openshift-azure-logging är aktiverad.

Fel hindrar Azure Monitor Agent från att parsa filen, vilket gör att den startas om och använder standardkonfigurationen. När du har korrigerat felen i ConfigMap i andra kluster än Azure Red Hat OpenShift v3.x sparar du YAML-filen och tillämpar den uppdaterade Config Kartor genom att köra kommandot kubectl apply -f <configmap_yaml_file.yaml.

För Azure Red Hat OpenShift v3.x redigerar och sparar du den uppdaterade konfigurationen Kartor genom att köra kommandot oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging.

Fråga prometheus-måttdata

Om du vill visa Prometheus-mått som skrapats av Azure Monitor och eventuella konfigurations-/skrapfel som rapporterats av agenten läser du Frågedata för Prometheus-mått.

Visa Prometheus-mått i Grafana

Containerinsikter stöder visning av mått som lagras på Log Analytics-arbetsytan på Grafana-instrumentpaneler. Vi har angett en mall som du kan ladda ned från Grafanas instrumentpanelslagringsplats. Använd mallen för att komma igång och referera till den för att lära dig hur du frågar efter andra data från dina övervakade kluster för att visualisera i anpassade Grafana-instrumentpaneler.

Nästa steg