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 dzienników nie tylko z zasobów platformy Azure, ale także zasobów lokalnych i zasobów w innych chmurach. 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 dzienników 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 .

Uwaga

Obecnie dane zdarzeń można wysyłać tylko z wystąpień kontenera systemu Linux do usługi Log Analytics.

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. Zwróć uwagę na następujące elementy:
    • 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 przedstawiono dwa sposoby tworzenia grupy kontenerów składającej się z jednego 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 konfiguracji domyślnej. 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 Docker Hub. Zalecamy skonfigurowanie wpisu tajnego ściągania w celu uwierzytelniania przy użyciu konta 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 \
    --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 Docker Hub. Zalecamy skonfigurowanie wpisu tajnego ściągania w celu uwierzytelniania przy użyciu konta 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
      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), zanim pierwsze wpisy dziennika będą widoczne 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 zostać wyświetlonych kilka wyników zapytania. Jeśli na początku nie widzisz żadnych wyników, zaczekaj kilka minut, a następnie wybierz przycisk Uruchom , aby ponownie wykonać zapytanie. 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.

Log Search results in the Azure portal

Wyświetlanie zdarzeń

Zdarzenia dla wystąpień kontenera można również wyświetlić w Azure Portal. Zdarzenia obejmują czas utworzenia wystąpienia i jego uruchomienia. 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 zostać wyświetlonych kilka wyników zapytania. Jeśli na początku nie widzisz żadnych wyników, zaczekaj kilka minut, a następnie wybierz przycisk Uruchom , aby ponownie wykonać zapytanie. Domyślnie wpisy są wyświetlane w formacie tabeli . Następnie możesz rozwinąć wiersz, aby wyświetlić zawartość pojedynczego wpisu.

Event Search results in the 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 poniżej istnieją tylko w ramach schematu i nie będą miały żadnych danych emitowanych w dziennikach. Te kolumny są oznaczone poniżej opisem "Empty".

ContainerInstanceLog_CL

Kolumna Typ Opis
Computer (Komputer) ciąg Pusty
ContainerGroup_s ciąg Nazwa grupy kontenerów skojarzonej z rekordem
ContainerID_s ciąg Unikatowy identyfikator kontenera skojarzonego z rekordem
ContainerImage_s ciąg Nazwa obrazu kontenera skojarzonego z rekordem
Location_s ciąg Lokalizacja zasobu skojarzonego z rekordem
Komunikat ciąg Jeśli ma to zastosowanie, komunikat z kontenera
OSType_s ciąg Nazwa systemu operacyjnego, na podstawie których jest oparty kontener
RawData ciąg Pusty
ResourceGroup ciąg Nazwa grupy zasobów skojarzonej z rekordem
Source_s ciąg Nazwa składnika rejestrowania "LoggingAgent"
SubscriptionId ciąg Unikatowy identyfikator subskrypcji, z którą jest skojarzony rekord
TimeGenerated datetime Sygnatura czasowa, gdy zdarzenie zostało wygenerowane przez usługę platformy Azure, przetwarzając żądanie odpowiadające zdarzeniu
Typ ciąg Nazwa tabeli
_ResourceId ciąg Unikatowy identyfikator zasobu skojarzonego z rekordem
_SubscriptionId ciąg Unikatowy identyfikator subskrypcji, z którą jest skojarzony rekord

ContainerEvent_CL

Kolumna Typ Opis
Computer (Komputer) ciąg Pusty
ContainerGroupInstanceId_g ciąg Unikatowy identyfikator grupy kontenerów skojarzony z rekordem
ContainerGroup_s ciąg Nazwa grupy kontenerów skojarzonej z rekordem
ContainerName_s ciąg Nazwa kontenera skojarzonego z rekordem
Count_d liczba rzeczywista Ile razy zdarzenie miało miejsce od ostatniego sondowania
FirstTimestamp_t datetime Sygnatura czasowa pierwszego wystąpienia zdarzenia
Location_s ciąg Lokalizacja zasobu skojarzonego z rekordem
Komunikat ciąg Jeśli ma to zastosowanie, komunikat z kontenera
OSType_s ciąg Nazwa systemu operacyjnego, na podstawie których jest oparty kontener
RawData ciąg Pusty
Reason_s ciąg Pusty
ResourceGroup ciąg Nazwa grupy zasobów, z którą jest skojarzony rekord
SubscriptionId ciąg Unikatowy identyfikator subskrypcji, z którą jest skojarzony rekord
TimeGenerated datetime Sygnatura czasowa, gdy zdarzenie zostało wygenerowane przez usługę platformy Azure, przetwarzając żądanie odpowiadające zdarzeniu
Typ ciąg Nazwa tabeli
_ResourceId ciąg Unikatowy identyfikator zasobu skojarzonego z rekordem
_SubscriptionId ciąg Unikatowy identyfikator subskrypcji, z którą jest skojarzony rekord

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: