Udostępnij za pośrednictwem


Konfigurowanie zbierania dzienników w usłudze Container Insights

Ten artykuł zawiera szczegółowe informacje na temat konfigurowania zbierania danych w usłudze Container Insights dla klastra Kubernetes po dołączeniu go. Aby uzyskać wskazówki dotyczące włączania szczegółowych informacji o kontenerze w klastrze, zobacz Włączanie monitorowania klastrów Kubernetes.

Metody konfiguracji

Istnieją dwie metody służące do konfigurowania i filtrowania zbieranych danych w usłudze Container Insights. W zależności od ustawienia może być możliwe wybranie między dwiema metodami lub może być wymagane użycie jednej lub drugiej. Dwie metody zostały opisane w poniższej tabeli ze szczegółowymi informacjami w poniższych sekcjach.

Metoda opis
Reguła zbierania danych (DCR) Reguły zbierania danych to zestawy instrukcji pomocniczych zbierania danych przy użyciu potoku usługi Azure Monitor. Kontroler domeny jest tworzony podczas włączania szczegółowych informacji o kontenerze i można zmodyfikować ustawienia w tym kontrolerze domeny przy użyciu witryny Azure Portal lub innych metod.
ConfigMap ConfigMaps to mechanizm Kubernetes, który umożliwia przechowywanie danych nieufnych, takich jak plik konfiguracji lub zmienne środowiskowe. Usługa Container Insights wyszukuje element ConfigMap w każdym klastrze z określonymi ustawieniami, które definiują dane, które powinny być zbierane.

Konfigurowanie zbierania danych przy użyciu usługi DCR

Kontroler domeny utworzony przez usługę Container Insights ma nazwę MSCI-cluster-region-cluster-name><<>. Możesz wyświetlić tę usługę DCR wraz z innymi osobami w ramach subskrypcji i edytować ją przy użyciu metod opisanych w temacie Tworzenie i edytowanie reguł zbierania danych (DCR) w usłudze Azure Monitor. Chociaż można bezpośrednio zmodyfikować kontroler domeny dla określonych dostosowań, można wykonać większość wymaganych konfiguracji przy użyciu metod opisanych poniżej. Zobacz Przekształcenia danych w usłudze Container Insights , aby uzyskać szczegółowe informacje na temat bezpośredniej edycji kontrolera domeny, aby uzyskać bardziej zaawansowane konfiguracje.

Ważne

Klastry usługi AKS muszą używać tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika. Jeśli klaster używa jednostki usługi, należy zaktualizować klaster, aby używał tożsamości zarządzanej przypisanej przez system lub tożsamości zarządzanej przypisanej przez użytkownika.

Konfigurowanie kontrolera domeny za pomocą witryny Azure Portal

Korzystając z witryny Azure Portal, możesz wybrać spośród wielu wstępnie ustawionych konfiguracji zbierania danych w usłudze Container Insights. Te konfiguracje obejmują różne zestawy tabel i częstotliwości kolekcji w zależności od konkretnych priorytetów. Możesz również dostosować ustawienia, aby zbierać tylko wymagane dane. Możesz użyć witryny Azure Portal, aby dostosować konfigurację istniejącego klastra po włączeniu usługi Container Insights lub wykonać tę konfigurację po włączeniu usługi Container Insights w klastrze.

  1. Wybierz klaster w witrynie Azure Portal.

  2. Wybierz opcję Szczegółowe informacje w sekcji Monitorowanie w menu.

  3. Jeśli usługa Container Insights została już włączona w klastrze, wybierz przycisk Ustawienia monitorowania. Jeśli nie, wybierz pozycję Konfiguruj usługę Azure Monitor i zobacz Włączanie monitorowania w klastrze Kubernetes za pomocą usługi Azure Monitor , aby uzyskać szczegółowe informacje na temat włączania monitorowania.

    Zrzut ekranu przedstawiający klaster usługi AKS z przyciskiem ustawień monitorowania.

  4. W przypadku usług AKS i Kubernetes z obsługą usługi Arc wybierz pozycję Użyj tożsamości zarządzanej, jeśli klaster nie został jeszcze zmigrowany do uwierzytelniania tożsamości zarządzanej.

  5. Wybierz jedną z ustawień wstępnych kosztów.

    Zrzut ekranu przedstawiający opcje dołączania.

    Ustawienie wstępne kosztów Częstotliwość zbierania Filtry przestrzeni nazw Kolekcja dziennika systemowego Zebrane dane
    Standardowa 1 m Brak Nie włączono Wszystkie standardowe tabele szczegółowych informacji o kontenerach
    Zoptymalizowane pod kątem kosztów 5 m Wyklucza kube-system, gatekeeper-system, azure-arc Nie włączono Wszystkie standardowe tabele szczegółowych informacji o kontenerach
    Dziennik systemu 1 m Brak Domyślnie włączone Wszystkie standardowe tabele szczegółowych informacji o kontenerach
    Dzienniki i zdarzenia 1 m Brak Nie włączono ContainerLog/ContainerLogV2
    KubeEvents
    KubePodInventory
  6. Jeśli chcesz dostosować ustawienia, kliknij pozycję Edytuj ustawienia kolekcji.

    Zrzut ekranu przedstawiający opcje ustawień kolekcji.

    Nazwa/nazwisko opis
    Częstotliwość zbierania Określa, jak często agent zbiera dane. Prawidłowe wartości to 1m – 30 m w 1m interwałach Wartość domyślna to 1m.
    Filtrowanie przestrzeni nazw Wyłączone: zbiera dane we wszystkich przestrzeniach nazw.
    Uwzględnij: zbiera tylko dane z wartości w polu przestrzeni nazw .
    Wyklucz: zbiera dane ze wszystkich przestrzeni nazw z wyjątkiem wartości w polu przestrzeni nazw .

    Tablica rozdzielonych przecinkami przestrzeni nazw kubernetes do zbierania spisu i danych wydajności na podstawie przestrzeni nazwFilteringMode. Na przykład przestrzenie nazw = ["kube-system", "default"] z ustawieniem Dołączanie zbiera tylko te dwie przestrzenie nazw. Przy użyciu ustawienia Wyklucz agent zbiera dane ze wszystkich innych przestrzeni nazw z wyjątkiem kube-system i domyślnego.
    Zebrane dane Definiuje tabele usługi Container Insights do zebrania. Poniżej przedstawiono opis każdego grupowania.
    Włączanie konteneraLogV2 Flaga logiczna umożliwiająca włączenie schematu ContainerLogV2. Jeśli ustawiono wartość true, dzienniki stdout/stderr są pozyskiwane do tabeli ContainerLogV2 . Jeśli nie, dzienniki kontenera są pozyskiwane do tabeli ContainerLog , chyba że określono inaczej w ConfigMap. Podczas określania poszczególnych strumieni należy uwzględnić odpowiednią tabelę dla konteneraLog lub ContainerLogV2.
    Włączanie zbierania dziennika systemowego Włącza zbieranie dzienników syslog z klastra.

    Opcja Zebrane dane umożliwia wybranie tabel wypełnionych dla klastra. Tabele są pogrupowane według najbardziej typowych scenariuszy. Aby określić poszczególne tabele, należy zmodyfikować kontroler domeny przy użyciu innej metody.

    Zrzut ekranu przedstawiający zebrane opcje danych.

    Grupowanie Tabele Uwagi
    Wszystkie (ustawienie domyślne) Wszystkie standardowe tabele szczegółowych informacji o kontenerach Wymagane do włączenia domyślnych wizualizacji usługi Container Insights
    Wydajność Perf, InsightsMetrics
    Dzienniki i zdarzenia ContainerLog lub ContainerLogV2, KubeEvents, KubePodInventory Zalecane, jeśli włączono zarządzane metryki rozwiązania Prometheus
    Obciążenia, wdrożenia i hpa InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
    Trwałe woluminy InsightsMetrics, KubePVInventory
  7. Kliknij przycisk Konfiguruj, aby zapisać ustawienia.

Odpowiednie tabele i metryki dla kontrolera domeny

Ustawienia częstotliwości kolekcji i filtrowania przestrzeni nazw w kontrolerze domeny nie mają zastosowania do wszystkich danych usługi Container Insights. W poniższych tabelach wymieniono tabele w obszarze roboczym usługi Log Analytics używanym przez szczegółowe informacje o kontenerze i zbierane metryki wraz z ustawieniami, które mają zastosowanie do każdego z nich.

Nazwa tabeli Interwał? Przestrzenie nazw? Uwagi
ContainerInventory Tak Tak
ContainerNodeInventory Tak Nie. Ustawienie zbierania danych dla przestrzeni nazw nie ma zastosowania, ponieważ węzeł Kubernetes nie jest zasobem o określonym zakresie przestrzeni nazw
KubeNodeInventory Tak Nie. Ustawienie zbierania danych dla przestrzeni nazw nie ma zastosowania w węźle Kubernetes nie jest zasobem o zakresie przestrzeni nazw
KubePodInventory Tak Tak
KubePVInventory Tak Tak
KubeServices Tak Tak
KubeEvents Nie. Tak Ustawienie zbierania danych dla interwału nie ma zastosowania do zdarzeń platformy Kubernetes
Perf Tak Tak Ustawienie zbierania danych dla przestrzeni nazw nie ma zastosowania do metryk związanych z węzłem Kubernetes, ponieważ węzeł Kubernetes nie jest obiektem o określonym zakresie przestrzeni nazw.
InsightsMetrics Tak Tak Ustawienia zbierania danych dotyczą tylko metryk zbierających następujące przestrzenie nazw: container.azm.ms/kubestate, container.azm.ms/pv i container.azm.ms/gpu
Przestrzeń nazw metryki Interwał? Przestrzenie nazw? Uwagi
Insights.container/nodes Tak Nie. Węzeł nie jest zasobem o zakresie przestrzeni nazw
Insights.container/pods Tak Tak
Insights.container/containers Tak Tak
Insights.container/persistentvolumes Tak Tak

Wartości strumienia w usłudze DCR

Po określeniu tabel do zbierania przy użyciu interfejsu wiersza polecenia lub usługi ARM należy określić nazwę strumienia odpowiadającą określonej tabeli w obszarze roboczym usługi Log Analytics. W poniższej tabeli wymieniono nazwę strumienia dla każdej tabeli.

Uwaga

Jeśli znasz strukturę reguły zbierania danych, nazwy strumieni w tej tabeli są określone w sekcji Przepływy danych kontrolera domeny.

Stream Tabela szczegółowych informacji o kontenerach
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerLogV2-HighScale ContainerLogV2 (tryb dużej skali)1
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf Perf

1 Nie należy używać zarówno microsoft-ContainerLogV2, jak i Microsoft-ContainerLogV2-HighScale w tym samym kontrolerze domeny. Spowoduje to zduplikowanie danych.

Udostępnianie kontrolera domeny z wieloma klastrami

Po włączeniu usługi Container Insights w klastrze Kubernetes tworzony jest nowy kontroler domeny dla tego klastra, a kontroler domeny dla każdego klastra można modyfikować niezależnie. Jeśli masz wiele klastrów z niestandardowymi konfiguracjami monitorowania, możesz udostępnić jeden kontroler domeny z wieloma klastrami. Następnie można wprowadzić zmiany w pojedynczym kontrolerze domeny, które są automatycznie implementowane dla wszystkich skojarzonych z nim klastrów.

Kontroler domeny jest skojarzony z klastrem z regułą zbierania danych skojarzeń (DCRA). Użyj środowiska dcR w wersji zapoznawczej, aby wyświetlić i usunąć istniejące skojarzenia DCR dla każdego klastra. Następnie możesz użyć tej funkcji, aby dodać skojarzenie do pojedynczego kontrolera domeny dla wielu klastrów.

Konfigurowanie zbierania danych przy użyciu narzędzia ConfigMap

ConfigMaps to mechanizm Kubernetes, który umożliwia przechowywanie danych nieufnych, takich jak plik konfiguracji lub zmienne środowiskowe. Usługa Container Insights wyszukuje element ConfigMap w każdym klastrze z określonymi ustawieniami, które definiują dane, które powinny być zbierane.

Ważne

ConfigMap jest listą globalną i może istnieć tylko jedna mapa konfiguracji zastosowana do agenta w celu uzyskania szczegółowych informacji o kontenerze. Zastosowanie innej mapy konfiguracji spowoduje zastąpienie poprzednich ustawień kolekcji ConfigMap.

Wymagania wstępne

  • Minimalna wersja agenta obsługiwana do zbierania zmiennych stdout, stderr i środowiskowych z obciążeń kontenera to ciprod06142019 lub nowszy.

Konfigurowanie i wdrażanie narzędzia ConfigMap

Poniższa procedura umożliwia skonfigurowanie i wdrożenie pliku konfiguracji ConfigMap w klastrze:

  1. Jeśli nie masz jeszcze obiektu ConfigMap for Container Insights, pobierz plik ConfigMap YAML szablonu i otwórz go w edytorze.

  2. Edytuj plik YAML ConfigMap przy użyciu dostosowań. Szablon zawiera wszystkie prawidłowe ustawienia z opisami. Aby włączyć ustawienie, usuń znak komentarza (#) i ustaw jego wartość.

  3. Utwórz ConfigMap, uruchamiając następujące polecenie kubectl:

    kubectl config set-context <cluster-name>
    kubectl apply -f <configmap_yaml_file.yaml>
    
    # Example: 
    kubectl config set-context my-cluster
    kubectl apply -f container-azm-ms-agentconfig.yaml
    

    Przed rozpoczęciem efektu zmiana konfiguracji może potrwać kilka minut. Następnie wszystkie zasobniki agenta usługi Azure Monitor w klastrze zostaną uruchomione ponownie. Ponowne uruchomienie to ponowne uruchomienie wszystkich zasobników agenta usługi Azure Monitor, więc nie wszystkie z nich są uruchamiane ponownie w tym samym czasie. Po zakończeniu ponownego uruchamiania zostanie wyświetlony komunikat podobny do następującego:

    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 -c ama-logs

Jeśli występują błędy konfiguracji z zasobników agenta usługi Azure Monitor, dane wyjściowe będą wyświetlać błędy podobne do następujących:

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

Użyj następujących opcji, aby wykonać więcej rozwiązywania problemów ze zmianami konfiguracji:

  • Użyj tego samego kubectl logs polecenia z zasobnika agenta.

  • Przejrzyj dzienniki na żywo pod kątem błędów podobnych do następujących:

    config::error::Exception while parsing config map for log collection/env variable settings: \nparse error on value \"$\" ($end), using defaults, please check config map for errors
    
  • Dane są wysyłane do KubeMonAgentEvents tabeli w obszarze roboczym usługi Log Analytics co godzinę z ważnością błędu w przypadku błędów konfiguracji. Jeśli nie ma żadnych błędów, wpis w tabeli będzie zawierać dane z informacjami o ważności, które nie zgłaszają żadnych błędów. Kolumna 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.

Weryfikowanie wersji schematu

Obsługiwane wersje schematu konfiguracji są dostępne jako adnotacja zasobnika (schema-versions) w zasobniku agenta usługi Azure Monitor. Można je zobaczyć za pomocą następującego polecenia kubectl.

kubectl describe pod ama-logs-fdf58 -n=kube-system.

Ustawienia ConfigMap

W poniższej tabeli opisano ustawienia, które można skonfigurować w celu kontrolowania zbierania danych za pomocą narzędzia ConfigMap.

Ustawienie Typ danych Wartość Opis
schema-version Ciąg (z uwzględnieniem wielkości liter) v1 Używany przez agenta podczas analizowania tej ConfigMap. Obecnie obsługiwana wersja schematu to wersja 1. Modyfikowanie tej wartości nie jest obsługiwane i zostanie odrzucone po ocenie obiektu ConfigMap.
config-version String Umożliwia śledzenie wersji tego pliku konfiguracji w systemie/repozytorium kontroli źródła. Maksymalna dozwolona liczba znaków to 10, a wszystkie inne znaki są obcinane.
[log_collection_settings]
[stdout]
enabled
Wartość logiczna prawda
fałsz
Określa, czy zbieranie dzienników kontenerów stdout jest włączone. Jeśli dla true kolekcji dzienników stdout nie zostaną wykluczone żadne przestrzenie nazw, dzienniki stdout będą zbierane ze wszystkich kontenerów we wszystkich zasobnikach i węzłach w klastrze. Jeśli nie zostanie określony w ConfigMap, wartość domyślna to true.
[stdout]
exclude_namespaces
String Tablica rozdzielona przecinkami Tablica przestrzeni nazw kubernetes, dla których dzienniki stdout nie zostaną zebrane. To ustawienie jest skuteczne tylko wtedy, gdy enabled jest ustawione na true. Jeśli nie określono wartości w ConfigMap, wartość domyślna to
["kube-system","gatekeeper-system"].
[stderr]
enabled
Wartość logiczna prawda
fałsz
Określa, czy zbieranie dzienników kontenerów stderr jest włączone. Jeśli dla kolekcji dzienników stderr nie true zostaną wykluczone żadne przestrzenie nazw, dzienniki stderr będą zbierane ze wszystkich kontenerów we wszystkich zasobnikach i węzłach w klastrze. Jeśli nie zostanie określony w ConfigMap, wartość domyślna to true.
[stderr]
exclude_namespaces
String Tablica rozdzielona przecinkami Tablica przestrzeni nazw platformy Kubernetes, dla których nie będą zbierane dzienniki stderr. To ustawienie jest skuteczne tylko wtedy, gdy enabled jest ustawione na true. Jeśli nie określono wartości w ConfigMap, wartość domyślna to
["kube-system","gatekeeper-system"].
[env_var]
enabled
Wartość logiczna prawda
fałsz
Steruje kolekcją zmiennych środowiskowych we wszystkich zasobnikach i węzłach w klastrze. Jeśli nie zostanie określony w ConfigMap, wartość domyślna to true.
[enrich_container_logs]
enabled
Wartość logiczna prawda
fałsz
Steruje wzbogacaniem dziennika kontenera w Name celu wypełnienia wartości właściwości i Image dla każdego rekordu dziennika zapisanego w tabeli ContainerLog dla wszystkich dzienników kontenera w klastrze. Jeśli nie zostanie określony w ConfigMap, wartość domyślna to false.
[collect_all_kube_events]
enabled
Wartość logiczna prawda
fałsz
Określa, czy są zbierane zdarzenia kube wszystkich typów. Domyślnie zdarzenia kube o typie Normal nie są zbierane. Gdy to ustawienie to true, zdarzenia normalne nie są już filtrowane, a wszystkie zdarzenia są zbierane. Jeśli nie zostanie określony w ConfigMap, wartość domyślna to false.
[schema]
containerlog_schema_version
Ciąg (z uwzględnieniem wielkości liter) v2
v1
Ustawia format pozyskiwania dzienników. Jeśli v2jest używana tabela ContainerLogV2 . Jeśli v1jest używana tabela ContainerLog (ta tabela jest przestarzała). W przypadku klastrów włączających szczegółowe informacje o kontenerze przy użyciu interfejsu wiersza polecenia platformy Azure w wersji 2.54.0 lub nowszej domyślnym ustawieniem jest v2. Aby uzyskać szczegółowe informacje, zobacz Schemat dziennika usługi Container Insights.
[enable_multiline_logs]
enabled
Wartość logiczna prawda
fałsz
Określa, czy dzienniki kontenerów wielowierszowych są włączone. Aby uzyskać szczegółowe informacje, zobacz Rejestrowanie wielowierszowe w usłudze Container Insights . Jeśli nie zostanie określony w ConfigMap, wartość domyślna to false. Wymaga to ustawienia schema o wartości v2.
[metadata_collection]
enabled
Wartość logiczna prawda
fałsz
Określa, czy metadane są zbierane w KubernetesMetadata kolumnie ContainerLogV2 tabeli.
[metadata_collection]
include_fields
String Tablica rozdzielona przecinkami Lista pól metadanych do uwzględnienia. Jeśli ustawienie nie jest używane, wszystkie pola są zbierane. Prawidłowe wartości to ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]
[metric_collection_settings]
[collect_kube_system_pv_metrics]
enabled
Wartość logiczna prawda
fałsz
Umożliwia zbieranie metryk użycia woluminu trwałego (PV) w przestrzeni nazw kube-system. Domyślnie metryki użycia dla woluminów trwałych z trwałymi oświadczeniami woluminów w przestrzeni nazw kube-system nie są zbierane. Gdy to ustawienie ma wartość true, zbierane są metryki użycia pv dla wszystkich przestrzeni nazw. Jeśli nie zostanie określony w ConfigMap, wartość domyślna to false.
[agent_settings]
[proxy_config]
ignore_proxy_settings
Wartość logiczna prawda
fałsz
Gdy trueustawienia serwera proxy są ignorowane. W przypadku środowisk Kubernetes z obsługą usług AKS i Arc, jeśli klaster jest skonfigurowany z serwerem proxy przekazywania dalej, ustawienia serwera proxy są automatycznie stosowane i używane dla agenta. W przypadku niektórych konfiguracji, takich jak ampLS + serwer proxy, możesz chcieć zignorować konfigurację serwera proxy. Jeśli nie zostanie określony w ConfigMap, wartość domyślna to false.

Następne kroki