Rejestrowanie grup kontenerów i wystąpień za pomocą dzienników usługi Azure Monitor

Obszary robocze usługi Log Analytics zapewniają scentralizowaną lokalizację do przechowywania i wykonywania zapytań dotyczących danych dziennika nie tylko z zasobów platformy Azure, ale także zasobów lokalnych i zasobów w innych chmurach. Usługa Azure Container Instances obejmuje wbudowaną obsługę wysyłania dzienników i danych zdarzeń do dzienników usługi Azure Monitor.

Aby wysłać dziennik grupy kontenerów i dane zdarzeń do dzienników usługi Azure Monitor, określ istniejący identyfikator obszaru roboczego usługi Log Analytics i klucz obszaru roboczego podczas konfigurowania grupy kontenerów.

W poniższych sekcjach opisano sposób tworzenia grupy kontenerów z włączoną obsługą rejestrowania oraz wykonywania zapytań dotyczących dzienników. Możesz również zaktualizować grupę kontenerów przy użyciu identyfikatora obszaru roboczego i klucza obszaru roboczego w celu włączenia rejestrowania.

Uwaga

Ten artykuł został niedawno zaktualizowany, aby użyć terminu Dzienniki usługi Azure Monitor zamiast usługi Log Analytics. Dane dziennika są nadal przechowywane w obszarze roboczym usługi Log Analytics i są nadal zbierane i analizowane przez tę samą usługę Log Analytics. Aktualizujemy terminologię, aby lepiej odzwierciedlać rolę dzienników w usłudze Azure Monitor. Aby uzyskać szczegółowe informacje, zobacz Zmiany terminologii usługi Azure Monitor.

Wymagania wstępne

Aby włączyć rejestrowanie w wystąpieniach kontenerów, potrzebne są następujące wymagania wstępne:

Uzyskiwanie poświadczeń usługi Log Analytics

Usługa Azure Container Instances wymaga uprawnień do wysyłania danych do obszaru roboczego usługi Log Analytics. Aby nadać to uprawnienie i włączyć rejestrowanie, należy podać identyfikator obszaru roboczego usługi Log Analytics i jeden z jego kluczy (podstawowy lub pomocniczy) podczas tworzenia grupy kontenerów.

Ważna

W tej sekcji opisano starszą integrację Log Analytics, która wymaga klucza obszaru roboczego. Starsza integracja ma następujące ograniczenia:

  • Obszar roboczy Log Analytics musi być publicznie dostępny (prywatne punkty końcowe nie są obsługiwane).
  • Uwierzytelnianie lokalne musi być włączone w obszarze roboczym.

Aby uzyskać bardziej pełną integrację, która obsługuje prywatne punkty końcowe, rozważ użycie ustawień diagnostycznych .

Aby uzyskać identyfikator obszaru roboczego Log Analytics i klucz podstawowy, użyj Azure CLI:

# Get the workspace ID
az monitor log-analytics workspace show \
    --resource-group <resource-group> \
    --workspace-name <workspace-name> \
    --query customerId \
    --output tsv

# Get the primary shared key
az monitor log-analytics workspace get-shared-keys \
    --resource-group <resource-group> \
    --workspace-name <workspace-name> \
    --query primarySharedKey \
    --output tsv

Tworzenie grupy kontenerów

Teraz, gdy masz identyfikator obszaru roboczego analizy dzienników i klucz podstawowy, możesz utworzyć grupę kontenerów z włączonym rejestrowaniem.

W poniższych przykładach pokazano dwa sposoby tworzenia grupy kontenerów składającej się z pojedynczego kontenera fluentd: za pomocą Azure CLI oraz Azure CLI z szablonem YAML. Kontener fluentd tworzy kilka wierszy danych wyjściowych w domyślnej konfiguracji. Ponieważ te dane wyjściowe są wysyłane do obszaru roboczego usługi Log Analytics, są bardzo przydatne do demonstracji przeglądania i zapytań dzienników.

Wdrażanie przy użyciu interfejsu wiersza polecenia platformy Azure

Aby przeprowadzić wdrożenie przy użyciu wiersza polecenia platformy Azure, należy określić parametry --log-analytics-workspace i --log-analytics-workspace-key w poleceniu az container create. Przed uruchomieniem następującego polecenia należy zastąpić te dwie wartości obszaru roboczego wartościami uzyskanymi w poprzednim kroku (i zaktualizować nazwę grupy zasobów).

Uwaga

Poniższy przykład ściąga publiczny obraz kontenera z usługi Docker Hub. Zalecamy skonfigurowanie tajnej frazy ściągania do uwierzytelnienia kontem Docker Hub zamiast tworzenia anonimowego żądania pobrania. Aby zwiększyć niezawodność podczas pracy z zawartością publiczną, zaimportuj obraz i zarządzaj nim w prywatnym rejestrze kontenerów platformy Azure. Dowiedz się więcej o pracy z obrazami publicznymi.

az container create \
    --resource-group myResourceGroup \
    --name mycontainergroup001 \
    --image fluent/fluentd:v1.3-debian-1 \
    --log-analytics-workspace <WORKSPACE_ID> \
    --log-analytics-workspace-key <WORKSPACE_KEY>

Wdrażanie za pomocą kodu YAML

Użyj tej metody, jeśli chcesz wdrożyć grupy kontenerów za pomocą kodu YAML. Poniższy kod YAML definiuje grupę kontenerów z jednym kontenerem. Skopiuj kod YAML do nowego pliku, a następnie zastąp parametry LOG_ANALYTICS_WORKSPACE_ID i LOG_ANALYTICS_WORKSPACE_KEY przy użyciu wartości uzyskanych w poprzednim kroku. Zapisz plik jako deploy-aci.yaml.

Uwaga

Poniższy przykład ściąga publiczny obraz kontenera z usługi Docker Hub. Zalecamy skonfigurowanie tajnej frazy ściągania do uwierzytelnienia kontem Docker Hub zamiast tworzenia anonimowego żądania pobrania. Aby zwiększyć niezawodność podczas pracy z zawartością publiczną, zaimportuj obraz i zarządzaj nim w prywatnym rejestrze kontenerów platformy Azure. Dowiedz się więcej o pracy z obrazami publicznymi.

apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
  containers:
  - name: mycontainer001
    properties:
      environmentVariables: []
      image: fluent/fluentd:v1.3-debian-1
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
  diagnostics:
    logAnalytics:
      workspaceId: LOG_ANALYTICS_WORKSPACE_ID
      workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups

Następnie wykonaj następujące polecenie, aby wdrożyć grupę kontenerów. Zastąp myResourceGroup element grupą zasobów w ramach subskrypcji (lub najpierw utwórz grupę zasobów o nazwie "myResourceGroup"):

az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml

Zaraz po wykonaniu polecenia powinna pojawić się odpowiedź z usługi Azure zawierająca szczegóły wdrożenia.

Wyświetlanie dzienników

Po wdrożeniu grupy kontenerów może upłynąć kilka minut (do 10), aby pierwsze wpisy dziennika pojawiły się w witrynie Azure Portal.

Aby wyświetlić dzienniki grupy kontenerów w tabeli ContainerInstanceLog_CL:

  1. W witrynie Azure Portal przejdź do obszaru roboczego usługi Log Analytics
  2. W obszarze Ogólne wybierz pozycję Dzienniki
  3. Wpisz następujące zapytanie: ContainerInstanceLog_CL | limit 50
  4. Wybierz pozycję Uruchom

Powinno pojawić się kilka wyników dla każdego zapytania . Jeśli na początku nie widzisz żadnych wyników, zaczekaj kilka minut, a następnie wybierz przycisk Uruchom , aby wykonać zapytanie ponownie. Domyślnie wpisy dziennika są wyświetlane w formacie tabeli . Następnie możesz rozwijać wiersze, aby wyświetlić zawartość poszczególnych wpisów dziennika.

Wyniki wyszukiwania logów w portalu Azure

Wyświetl zdarzenia

Zdarzenia dla wystąpień kontenera można również wyświetlić w witrynie Azure Portal. Zdarzenia obejmują czas tworzenia wystąpienia i jego uruchamiania. Aby wyświetlić dane zdarzenia w ContainerEvent_CL tabeli:

  1. W witrynie Azure Portal przejdź do obszaru roboczego usługi Log Analytics
  2. W obszarze Ogólne wybierz pozycję Dzienniki
  3. Wpisz następujące zapytanie: ContainerEvent_CL | limit 50
  4. Wybierz pozycję Uruchom

Powinno pojawić się kilka wyników dla każdego zapytania . Jeśli na początku nie widzisz żadnych wyników, zaczekaj kilka minut, a następnie wybierz przycisk Uruchom , aby wykonać zapytanie ponownie. Domyślnie wpisy są wyświetlane w formacie tabeli . Następnie możesz rozwinąć wiersz, aby wyświetlić zawartość pojedynczego wpisu.

Wyniki wyszukiwania zdarzeń w witrynie Azure Portal

Wykonywanie zapytań dla dzienników kontenerów

Dzienniki usługi Azure Monitor obejmują rozszerzony język zapytań do ściągania informacji nawet z tysięcy wierszy danych wyjściowych dziennika.

Podstawową strukturą zapytania jest tabela źródłowa (w tym artykule ContainerInstanceLog_CL lub ContainerEvent_CL) po której następuje seria operatorów oddzielonych znakiem potoku (|). Można połączyć kilka operatorów, aby dostosować wyniki i wykonać funkcje zaawansowane.

Aby wyświetlić przykładowe wyniki zapytania, wklej następujące zapytanie w polu tekstowym zapytania i wybierz przycisk Uruchom , aby wykonać zapytanie. To zapytanie wyświetla wszystkie wpisy dziennika, których pole „Message” zawiera słowo "warn":

ContainerInstanceLog_CL
| where Message contains "warn"

Bardziej złożone zapytania są również obsługiwane. Na przykład to zapytanie wyświetla tylko wpisy dziennika dla grupy kontenerów "mycontainergroup001" wygenerowane w ciągu ostatniej godziny:

ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))

Schemat dziennika

Aby dowiedzieć się więcej na temat starszego schematu usługi Azure Monitor dla usługi Log Analytics, zobacz Starsze tabele usługi Log Analytics.

Korzystanie z ustawień diagnostycznych

Użyj ustawień diagnostycznych, aby kierować dzienniki i zdarzenia grupy kontenerów do Log Analytics. Ta funkcja oferuje kilka korzyści w przypadku starszej integracji opisanej w tym artykule:

  • Obsługa prywatnego punktu końcowego — współpracuje z obszarami roboczymi Log Analytics korzystającymi z prywatnych punktów końcowych.
  • Klucz obszaru roboczego nie jest wymagany — Azure Resource Manager obsługuje uwierzytelnianie, więc nie trzeba zarządzać ani obracać kluczy obszaru roboczego.
  • Standardowe tabele usługi Azure Monitor — dzienniki trafiają do standardowych tabel usługi Azure Monitor zamiast do niestandardowych tabel dzienników.

Aby dowiedzieć się więcej, zobacz Tabele Log Analytics usługi Azure Monitor.

Następne kroki

Dzienniki usługi Azure Monitor

Aby uzyskać więcej informacji dotyczących wykonywania zapytań dla dzienników i konfigurowania alertów w dziennikach usługi Azure Monitor, zobacz:

Monitorowanie procesora i pamięci kontenera

Aby uzyskać informacje na temat monitorowania zasobów procesora i pamięci instancji kontenera, zobacz: