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, aby włączyć rejestrowanie.

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 kontenera, potrzebne są następujące elementy:

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.

Aby uzyskać identyfikator obszaru roboczego analizy dzienników i klucz podstawowy:

  1. W witrynie Azure Portal przejdź do obszaru roboczego usługi Log Analytics
  2. W obszarze Ustawienia wybierz pozycję Zarządzanie agentami
  3. Zanotuj następujące kwestie:
    • Identyfikator obszaru roboczego
    • Klucz podstawowy

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 : interfejsu wiersza polecenia platformy Azure i interfejsu wiersza polecenia platformy Azure przy użyciu szablonu 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ą przydatne do przedstawiania wyświetlania i wykonywania zapytań przez dzienniki.

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 wpisu tajnego ściągania w celu uwierzytelniania przy użyciu konta usługi Docker Hub zamiast tworzenia anonimowego żądania ściągnięcia. 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 wpisu tajnego ściągania w celu uwierzytelniania przy użyciu konta usługi Docker Hub zamiast tworzenia anonimowego żądania ściągnięcia. 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 ContainerInstanceLog_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: 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 przeszukiwania dzienników w witrynie Azure Portal

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

Uwaga

Niektóre kolumny wymienione w poniższej tabeli istnieją tylko w ramach schematu i nie będą miały żadnych danych emitowanych w dziennikach. Te kolumny są oznaczone opisem "Empty".

ContainerInstanceLog_CL

Kolumna Type Opis
Komputer string Pusty
ContainerGroup_s string Nazwa grupy kontenerów skojarzonej z rekordem
ContainerID_s string Unikatowy identyfikator kontenera skojarzonego z rekordem
ContainerImage_s string Nazwa obrazu kontenera skojarzonego z rekordem
Location_s string Lokalizacja zasobu skojarzonego z rekordem
Wiadomość string Jeśli ma to zastosowanie, komunikat z kontenera
OSType_s string Nazwa systemu operacyjnego, na podstawie których kontener jest oparty
RawData string Pusty
ResourceGroup string Nazwa grupy zasobów, z którą jest skojarzony rekord
Source_s string Nazwa składnika rejestrowania "LoggingAgent"
SubscriptionId string Unikatowy identyfikator subskrypcji, z którą jest skojarzony rekord
TimeGenerated datetime Sygnatura czasowa wygenerowania zdarzenia przez usługę platformy Azure przetwarza żądanie odpowiadające zdarzeniu
Typ string Nazwa tabeli
_ResourceId string Unikatowy identyfikator zasobu skojarzonego z rekordem
_Subscriptionid string Unikatowy identyfikator subskrypcji, z którą jest skojarzony rekord

ContainerEvent_CL

Kolumna Type Opis
Komputer string Pusty
ContainerGroupInstanceId_g string Unikatowy identyfikator grupy kontenerów skojarzonej z rekordem
ContainerGroup_s string Nazwa grupy kontenerów skojarzonej z rekordem
ContainerName_s string Nazwa kontenera skojarzonego z rekordem
Count_d rzeczywiste Ile razy zdarzenie miało miejsce od ostatniego sondowania
FirstTimestamp_t datetime Znacznik czasu pierwszego wystąpienia zdarzenia
Location_s string Lokalizacja zasobu skojarzonego z rekordem
Wiadomość string Jeśli ma to zastosowanie, komunikat z kontenera
OSType_s string Nazwa systemu operacyjnego, na podstawie których kontener jest oparty
RawData string Pusty
Reason_s string Bieżący stan grupy kontenerów
ResourceGroup string Nazwa grupy zasobów, z którą jest skojarzony rekord
SubscriptionId string Unikatowy identyfikator subskrypcji, z którą jest skojarzony rekord
TimeGenerated datetime Sygnatura czasowa wygenerowania zdarzenia przez usługę platformy Azure przetwarza żądanie odpowiadające zdarzeniu
Typ string Nazwa tabeli
_ResourceId string Unikatowy identyfikator zasobu skojarzonego z rekordem
_Subscriptionid string Unikatowy identyfikator subskrypcji, z którą jest skojarzony rekord

Korzystanie z Ustawienia diagnostycznych

Diagnostyka Ustawienia dla grup kontenerów jest funkcją w wersji zapoznawczej i można ją włączyć za pośrednictwem opcji funkcji w wersji zapoznawczej w witrynie Azure Portal. Po włączeniu tej funkcji dla subskrypcji można zastosować Ustawienia diagnostyczne do grupy kontenerów. Zastosowanie Ustawienia diagnostycznych powoduje ponowne uruchomienie grupy kontenerów.

Poniżej przedstawiono na przykład sposób użycia polecenia New-AzDiagnosticSetting w celu zastosowania obiektu Ustawienia diagnostycznego do grupy kontenerów.

$log = @()
$log += New-AzDiagnosticSettingLogSettingsObject -Enabled $true -Category ContainerInstanceLog -RetentionPolicyDay 7 -RetentionPolicyEnabled $true
 
New-AzDiagnosticSetting -Name test-setting -ResourceId <container-group-resource-id> -WorkspaceId <log-analytics-workspace-id> -Log $log

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 procesora wystąpienia i zasobów pamięci kontenera, zobacz temat: