Wysyłanie metryk rozwiązania Prometheus do obszaru roboczego usługi Log Analytics za pomocą szczegółowych informacji o kontenerze

W tym artykule opisano sposób wysyłania metryk rozwiązania Prometheus z klastra Kubernetes monitorowanego przez usługę Container Insights do obszaru roboczego usługi Log Analytics. Przed wykonaniem tej konfiguracji należy najpierw upewnić się, że usuwasz metryki Rozwiązania Prometheus z klastra przy użyciu usługi zarządzanej Azure Monitor dla rozwiązania Prometheus, która jest zalecaną metodą monitorowania klastrów. Użyj konfiguracji opisanej w tym artykule tylko wtedy, gdy chcesz również wysłać te same dane do obszaru roboczego usługi Log Analytics, w którym można je analizować przy użyciu zapytań dzienników i alertów przeszukiwania dzienników.

Ta konfiguracja wymaga skonfigurowania dodatku monitorowania dla agenta usługi Azure Monitor, który jest taki sam, który jest używany przez usługę Container Insights do wysyłania danych do obszaru roboczego usługi Log Analytics. Wymaga ujawnienia punktu końcowego metryk Rozwiązania Prometheus za pośrednictwem eksporterów lub zasobników, a następnie skonfigurowania dodatku monitorowania dla agenta usługi Azure Monitor używanego przez usługę Container Insights, jak pokazano na poniższym diagramie.

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

Prometheus scraping settings (dla metryk przechowywanych jako dzienniki)

Aktywne złomowanie metryk z rozwiązania Prometheus jest wykonywane z jednej z dwóch perspektyw poniżej, a metryki są wysyłane do skonfigurowanego obszaru roboczego usługi Log Analytics:

  • W całym klastrze: zdefiniowano w sekcji ConfigMap [Prometheus data_collection_settings.cluster].
  • W całym węźle: zdefiniowano w sekcji ConfigMap [Prometheus_data_collection_settings.node].
Punkt końcowy Scope Przykład
Adnotacja zasobnika Cały klaster prometheus.io/scrape: "true"
prometheus.io/path: "/mymetrics"
prometheus.io/port: "8000"
prometheus.io/scheme: "http"
Usługa Kubernetes Cały klaster http://my-service-dns.my-namespace:9100/metrics
http://metrics-server.kube-system.svc.cluster.local/metrics
Adres URL/punkt końcowy Na węzeł i/lub w całym klastrze http://myurl:9101/metrics

Po określeniu adresu URL szczegółowe informacje o kontenerze tylko zeskropka punktu końcowego. Po określeniu usługi Kubernetes nazwa usługi jest rozpoznawana za pomocą serwera DNS klastra w celu uzyskania adresu IP. Następnie rozwiązana usługa jest złomowana.

Scope Klucz Typ danych Wartość Opis
Cały klaster Określ jedną z następujących trzech metod, aby zeskrobać punkty końcowe dla metryk.
urls String Tablica rozdzielona przecinkami Punkt końcowy HTTP (określony adres IP lub prawidłowa ścieżka adresu URL). Na przykład: urls=[$NODE_IP/metrics]. ($NODE_IP jest określonym parametrem usługi Container Insights i może być używany zamiast adresu IP węzła. Musi być wielką literą.
kubernetes_services String Tablica rozdzielona przecinkami Tablica usług Kubernetes do złomowania metryk z metryk kube-state-metrics. W pełni kwalifikowane nazwy domen muszą być używane tutaj. Na przykład: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 Wartość logiczna prawda lub fałsz Po ustawieniu wartości na true wartość w ustawieniach całego klastra agent usługi Container Insights usuwa zasobniki Kubernetes w całym klastrze dla następujących adnotacji Prometheus:
prometheus.io/scrape:
prometheus.io/scheme:
prometheus.io/path:
prometheus.io/port:
prometheus.io/scrape Wartość logiczna prawda lub fałsz Włącza skrobowanie zasobnika i monitor_kubernetes_pods musi być ustawione na truewartość .
prometheus.io/scheme String http Wartości domyślne do złomowania za pośrednictwem protokołu HTTP.
prometheus.io/path String Tablica rozdzielona przecinkami Ścieżka zasobu HTTP, z której mają być pobierane metryki. Jeśli ścieżka metryk nie /metricsjest , zdefiniuj ją przy użyciu tej adnotacji.
prometheus.io/port String 9102 Określ port do zeskrobania. Jeśli port nie jest ustawiony, wartość domyślna to 9102.
monitor_kubernetes_pods_namespaces String Tablica rozdzielona przecinkami Lista dozwolonych przestrzeni nazw do złomowania metryk z zasobników Kubernetes.
Na przykład monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"]
Cały węzeł urls String Tablica rozdzielona przecinkami Punkt końcowy HTTP (określony adres IP lub prawidłowa ścieżka adresu URL). Na przykład: urls=[$NODE_IP/metrics]. ($NODE_IP jest określonym parametrem usługi Container Insights i może być używany zamiast adresu IP węzła. Musi być wielką literą.
W całym węźle lub w całym klastrze interval String 60 s Wartość domyślna interwału kolekcji to jedna minuta (60 sekund). Kolekcję można zmodyfikować dla [prometheus_data_collection_settings.node] i/lub [prometheus_data_collection_settings.cluster] do jednostek czasu, takich jak s, m i h.
W całym węźle lub w całym klastrze fieldpass
fielddrop
String Tablica rozdzielona przecinkami Możesz określić niektóre metryki, które mają być zbierane lub nie z punktu końcowego, ustawiając opcję zezwalania (fieldpass) i nie zezwalaj (fielddrop) na wyświetlanie listy. Najpierw należy ustawić listę dozwolonych.

Konfigurowanie konfiguracji Mapy aby określić konfigurację złomowania rozwiązania Prometheus (w przypadku metryk przechowywanych jako dzienniki)

Wykonaj następujące kroki, aby skonfigurować plik konfiguracji ConfigMap dla klastra. Konfiguracja Mapy jest listą globalną i może istnieć tylko jedna mapa konfiguracji zastosowana do agenta. Nie można mieć innej konfiguracji Mapy przesłaniania kolekcji.

  1. Pobierz plik ConfigMap YAML szablonu i zapisz go jako container-azm-ms-agentconfig.yaml. Jeśli aplikacja ConfigMap została już wdrożona w klastrze i chcesz ją zaktualizować przy użyciu nowszej konfiguracji, możesz edytować wcześniej używany plik ConfigMap.

  2. Zmodyfikuj plik YAML ConfigMap, aby zdrapać metryki Prometheus.

    Aby zebrać cały klaster usług Kubernetes, skonfiguruj plik ConfigMap przy użyciu następującego przykładu:

    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. Uruchom następujące polecenie kubectl: kubectl apply -f <configmap_yaml_file.yaml>.

    Przykład: kubectl apply -f container-azm-ms-agentconfig.yaml.

Przed rozpoczęciem efektu zmiana konfiguracji może potrwać kilka minut. Wszystkie zasobniki ama-logs w klastrze zostaną uruchomione ponownie. Po zakończeniu ponownego uruchamiania zostanie wyświetlony komunikat podobny do poniższego i zawiera wynik configmap "container-azm-ms-agentconfig" created.

Weryfikowanie konfiguracji

Aby sprawdzić, czy konfiguracja została pomyślnie zastosowana do klastra, użyj następującego polecenia, aby przejrzeć dzienniki z zasobnika agenta: kubectl logs ama-logs-fdf58 -n=kube-system.

Jeśli występują błędy konfiguracji z zasobników agenta usługi Azure Monitor, dane wyjściowe zawierają błędy podobne do następującego przykładu:

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

Błędy związane z stosowaniem zmian konfiguracji są również dostępne do przeglądu. Dostępne są następujące opcje umożliwiające wykonanie dodatkowego rozwiązywania problemów ze zmianami konfiguracji i złomowaniem metryk rozwiązania Prometheus:

  • Z poziomu dzienników zasobników agenta przy użyciu tego samego kubectl logs polecenia.

  • Z danych na żywo. Dzienniki danych na żywo pokazują błędy podobne do następującego przykładu:

    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
    
  • Z tabeli KubeMonAgentEvents w obszarze roboczym usługi Log Analytics. Dane są wysyłane co godzinę z ważnością ostrzeżenia w przypadku błędów ze zeskrobania i ważności błędu w przypadku błędów konfiguracji. Jeśli nie ma żadnych błędów, wpis w tabeli zawiera dane z informacjami o ważności, które nie zgłaszają żadnych błędów. Właściwość Tags zawiera więcej informacji o zasobniku i identyfikatorze kontenera, na którym wystąpił błąd, a także o pierwszym wystąpieniu, ostatnim wystąpieniu i liczbie w ciągu ostatniej godziny.

  • W przypadku usług Azure Red Hat OpenShift v3.x i v4.x sprawdź dzienniki agenta usługi Azure Monitor, wyszukując tabelę ContainerLog , aby sprawdzić, czy jest włączona kolekcja dzienników funkcji openshift-azure-logging.

Błędy uniemożliwiają agentowi usługi Azure Monitor analizowanie pliku, powodując jego ponowne uruchomienie i użycie konfiguracji domyślnej. Po skorygowaniu błędów w ConfigMap w klastrach innych niż Azure Red Hat OpenShift v3.x zapisz plik YAML i zastosuj zaktualizowaną konfigurację Mapy uruchamiając polecenie kubectl apply -f <configmap_yaml_file.yaml.

W przypadku usługi Azure Red Hat OpenShift v3.x przeprowadź edycję i zapisz zaktualizowaną konfigurację Mapy uruchamiając polecenie oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging.

Wykonywanie zapytań względem danych metryk rozwiązania Prometheus

Aby wyświetlić metryki rozwiązania Prometheus zeskrobane przez usługę Azure Monitor i wszelkie błędy konfiguracji/złomowania zgłoszone przez agenta, zapoznaj się z tematem Query Prometheus metrics data (Dane metryk zapytania Prometheus).

Wyświetlanie metryk Prometheus w narzędziu Grafana

Usługa Container Insights obsługuje wyświetlanie metryk przechowywanych w obszarze roboczym usługi Log Analytics na pulpitach nawigacyjnych narzędzia Grafana. Udostępniliśmy szablon, który można pobrać z repozytorium pulpitu nawigacyjnego narzędzia Grafana. Użyj szablonu, aby rozpocząć pracę i odwołać się do niego, aby dowiedzieć się, jak wykonywać zapytania o inne dane z monitorowanych klastrów w celu wizualizacji na niestandardowych pulpitach nawigacyjnych narzędzia Grafana.

Następne kroki