Konfigurowanie zbierania danych w usłudze Container Insights przy użyciu narzędzia ConfigMap

W tym artykule opisano sposób konfigurowania zbierania danych w usłudze Container Insights przy użyciu narzędzia ConfigMap. Konfiguracja Mapy to mechanizm Kubernetes, który umożliwia przechowywanie danych nieufnych, takich jak plik konfiguracji lub zmienne środowiskowe.

Obiekt ConfigMap służy głównie do konfigurowania zbierania danych dzienników kontenera i zmiennych środowiskowych klastra. Można indywidualnie skonfigurować dzienniki stdout i stderr, a także włączyć rejestrowanie wielowierszowe. l Konkretna konfiguracja, którą można wykonać za pomocą narzędzia ConfigMap, obejmuje:

  • Włączanie/wyłączanie i filtrowanie przestrzeni nazw dla dzienników stdout i stderr
  • Włączanie/wyłączanie kolekcji zmiennych środowiskowych dla klastra
  • Filtruj pod kątem normalnych zdarzeń kube
  • Wybieranie schematu dziennika
  • Włączanie/wyłączanie rejestrowania wielowierszowego
  • Ignoruj ustawienia serwera proxy

Ważne

Pełna konfiguracja zbierania danych w usłudze Container Insights może wymagać edycji zarówno ConfigMap, jak i reguły zbierania danych (DCR) dla klastra, ponieważ każda metoda zezwala na konfigurację innego zestawu ustawień.

Zobacz Konfigurowanie zbierania danych w usłudze Container Insights przy użyciu reguły zbierania danych, aby uzyskać listę ustawień i proces konfigurowania zbierania danych przy użyciu kontrolera domeny.

Wymagania wstępne

  • 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.
  • Minimalna wersja agenta obsługiwana do zbierania zmiennych stdout, stderr i środowiskowych z obciążeń kontenera to ciprod06142019 lub nowszy. Aby zweryfikować wersję agenta, na karcie Node wybierz węzeł. W okienku Właściwości zanotuj wartość właściwości Tag obrazu agenta. Aby uzyskać więcej informacji na temat wersji agenta i informacji zawartych w każdej wersji, zobacz Informacje o wersji agenta.

Konfigurowanie i wdrażanie narzędzia ConfigMap

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

  1. Pobierz plik YAML ConfigMap szablonu i otwórz go w edytorze. Jeśli masz już plik ConfigMap, możesz go użyć.

  2. Edytuj plik YAML ConfigMap przy użyciu ustawień opisanych w sekcji Ustawienia zbierania danych

  3. Utwórz ConfigMap, uruchamiając 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. 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`.
    

Ustawienia zbierania danych

W poniższej tabeli opisano ustawienia, które można skonfigurować do kontrolowania zbierania danych.

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
To ustawienie 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. Jeśli kolekcja zmiennych środowiskowych jest włączona globalnie, można ją wyłączyć dla określonego kontenera, ustawiając zmienną AZMON_COLLECT_ENV środowiskową na False wartość z ustawieniem Dockerfile lub w pliku konfiguracji zasobnika w env: sekcji . Jeśli zbieranie zmiennych środowiskowych jest globalnie wyłączone, nie można włączyć kolekcji dla określonego kontenera. Jedynym zastąpieniem, które można zastosować na poziomie kontenera, jest wyłączenie kolekcji, gdy jest już włączona globalnie.
[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 ContainerLogV2 lub 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 Szczegółowe informacje. Jeśli nie zostanie określony w ConfigMap, wartość domyślna to false. Wymaga to ustawienia schema o wartości v2.
[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.

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 będą wyświetlać 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 przeprowadzenie większego rozwiązywania problemów ze zmianami konfiguracji:

  • Z dziennika zasobnika agenta przy użyciu tego samego kubectl logs polecenia.

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

    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
    
  • Z tabeli KubeMonAgentEvents w obszarze roboczym usługi Log Analytics. Dane są wysyłane 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. 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.

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.

Dane wyjściowe podobne do poniższego przykładu są wyświetlane z wersjami schematu adnotacji:

    Name:           ama-logs-fdf58
    Namespace:      kube-system
    Node:           aks-agentpool-95673144-0/10.240.0.4
    Start Time:     Mon, 10 Jun 2019 15:01:03 -0700
    Labels:         controller-revision-hash=589cc7785d
                    dsName=ama-logs-ds
                    pod-template-generation=1
    Annotations:    agentVersion=1.10.0.1
                  dockerProviderVersion=5.0.0-0
                    schema-versions=v1 

Często zadawane pytania

Jak mogę włączyć zbieranie dzienników dla kontenerów w przestrzeni nazw kube-system za pośrednictwem programu Helm?

Zbieranie dzienników z kontenerów w przestrzeni nazw kube-system jest domyślnie wyłączone. Zbieranie dzienników można włączyć, ustawiając zmienną środowiskową w agencie usługi Azure Monitor. Zobacz stronę Usługi GitHub usługi Container Insights.

Następne kroki