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.
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 ConfigMaps 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. ConfigMaps är en global lista och det kan bara finnas en ConfigMap som tillämpas på agenten. Du kan inte låta andra ConfigMaps åsidosätta samlingarna.
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.
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"]
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 konfiguration
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 uppdaterade ConfigMaps genom att köra kommandot kubectl apply -f <configmap_yaml_file.yaml
.
För Azure Red Hat OpenShift v3.x redigerar och sparar du de uppdaterade ConfigMaps 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.