Containergrupp och instansloggning med Azure Monitor-loggar

Log Analytics-arbetsytor ger en central plats för lagring och frågekörning av loggdata, inte bara från Azure-resurser, utan även lokala resurser och resurser i andra moln. Azure Container Instances innehåller inbyggt stöd för att skicka loggar och händelsedata till Azure Monitor-loggar.

Om du vill skicka logg- och händelsedata för containergrupper till Azure Monitor-loggar anger du ett befintligt Log Analytics-arbetsyte-ID och en arbetsytenyckel när du konfigurerar en containergrupp.

I följande avsnitt beskrivs hur du skapar en loggningsaktiverad containergrupp och hur du frågar efter loggar. Du kan också uppdatera en containergrupp med ett arbetsyte-ID och en arbetsytenyckel för att aktivera loggning.

Kommentar

Den här artikeln uppdaterades nyligen för att använda termen Azure Monitor-loggar i stället för Log Analytics. Loggdata lagras fortfarande på en Log Analytics-arbetsyta och samlas fortfarande in och analyseras av samma Log Analytics-tjänst. Vi uppdaterar terminologin för att bättre återspegla loggarnas roll i Azure Monitor. Mer information finns i Terminologiändringar i Azure Monitor.

Förutsättningar

Om du vill aktivera loggning i dina containerinstanser, behöver du följande:

Hämta Log Analytics-autentiseringsuppgifter

Azure Container Instances behöver behörighet för att skicka data till din Log Analytics-arbetsyta. Om du vill ge behörighet och aktivera loggning, måste du ange ID för Log Analytics-arbetsytan och en av dess nycklar (primär eller sekundär) när du skapar containergrupp.

Gör följande för att hämta ID och den primära nyckeln för Log Analytics-arbetsytan:

  1. Navigera till Log Analytics-arbetsytan i Azure-portalen
  2. Under Inställningar väljer du Agenthantering
  3. Anteckna:
    • Arbetsyte-ID
    • Primärnyckel

Skapa containergrupp

Nu när du har Log Analytics-arbetsytans ID och primärnyckel är du redo att skapa en grupp för loggningsaktiverad containergrupp.

Följande exempel visar två sätt att skapa en containergrupp som består av en enda flytande container: Azure CLI och Azure CLI med en YAML-mall. Containern fluentd producerar flera rader med utdata i sin standardkonfiguration. Eftersom dessa utdata skickas till din Log Analytics-arbetsyta fungerar det bra för att demonstrera visning och frågning av loggar.

Distribuera med Azure CLI

Om du vill distribuera med Azure CLI anger du värden för parametrarna --log-analytics-workspace och --log-analytics-workspace-key i kommandot az container create. Ersätt de två arbetsytevärdena med de värden du hämtade i föregående steg (och uppdatera resursgruppens namn) innan du kör följande kommando.

Kommentar

I följande exempel hämtas en offentlig containeravbildning från Docker Hub. Vi rekommenderar att du konfigurerar en pull-hemlighet för att autentisera med ett Docker Hub-konto i stället för att göra en anonym pull-begäran. För att förbättra tillförlitligheten när du arbetar med offentligt innehåll importerar och hanterar du avbildningen i ett privat Azure-containerregister. Läs mer om hur du arbetar med offentliga avbildningar.

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>

Distribuera med YAML

Använd den här metoden om du föredrar att distribuera containergrupper med YAML. Följande YAML definierar en containergrupp med en enda container. Kopiera YAML-koden till en ny fil och ersätt LOG_ANALYTICS_WORKSPACE_ID och LOG_ANALYTICS_WORKSPACE_KEY med värdena du hämtade i föregående steg. Spara filen som deploy-aci.yaml.

Kommentar

I följande exempel hämtas en offentlig containeravbildning från Docker Hub. Vi rekommenderar att du konfigurerar en pull-hemlighet för att autentisera med ett Docker Hub-konto i stället för att göra en anonym pull-begäran. För att förbättra tillförlitligheten när du arbetar med offentligt innehåll importerar och hanterar du avbildningen i ett privat Azure-containerregister. Läs mer om hur du arbetar med offentliga avbildningar.

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

Kör sedan följande kommando för att distribuera containergruppen. Ersätt myResourceGroup med en resursgrupp i din prenumeration (eller skapa först en resursgrupp med namnet "myResourceGroup"):

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

Du bör få ett svar från Azure som innehåller distributionsinformation strax efter kommandot utfärdats.

Visa loggar

När du har distribuerat containergruppen kan det ta flera minuter (upp till 10) innan de första loggposterna visas i Azure-portalen.

Så här visar du containergruppens loggar i ContainerInstanceLog_CL tabellen:

  1. Navigera till Log Analytics-arbetsytan i Azure-portalen
  2. Under Allmänt väljer du Loggar
  3. Skriv följande fråga: ContainerInstanceLog_CL | limit 50
  4. Välj Kör

Du bör se flera resultat som visas av -frågan. Om du först inte ser några resultat väntar du några minuter och väljer sedan knappen Kör för att köra frågan igen. Som standard visas loggposter i tabellformat . Du kan därefter expandera en rad för att visa innehållet i en enskild loggpost.

Logga sökresultat i Azure-portalen

Visa händelser

Du kan också visa händelser för containerinstanser i Azure-portalen. Händelser inkluderar den tid då instansen skapas och när den startas. Så här visar du händelsedata i ContainerEvent_CL tabellen:

  1. Navigera till Log Analytics-arbetsytan i Azure-portalen
  2. Under Allmänt väljer du Loggar
  3. Skriv följande fråga: ContainerEvent_CL | limit 50
  4. Välj Kör

Du bör se flera resultat som visas av -frågan. Om du först inte ser några resultat väntar du några minuter och väljer sedan knappen Kör för att köra frågan igen. Som standard visas poster i tabellformat . Du kan sedan expandera en rad för att se innehållet i en enskild post.

Händelsesökningsresultat i Azure-portalen

Fråga containerloggar

Azure Monitor-loggar innehåller ett omfattande frågespråk för att hämta information från potentiellt tusentals rader med loggutdata.

Den grundläggande strukturen för en fråga är källtabellen (i den här artikeln eller ContainerInstanceLog_CLContainerEvent_CL) följt av en serie operatorer avgränsade med pipe-tecknet (|). Du kan länka flera operatorer för att förfina resultatet och utför avancerade funktioner.

Om du vill se exempel på frågeresultat klistrar du in följande fråga i frågetextrutan och väljer knappen Kör för att köra frågan. Den här frågan visar alla loggposter vars Meddelande-fält innehåller ordet varning:

ContainerInstanceLog_CL
| where Message contains "warn"

Mer komplexa frågor stöds också. Den här frågan visar till exempel bara de loggposter för behållargruppen mycontainergroup001 som skapats den senaste timmen:

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

Loggschema

Kommentar

Vissa av kolumnerna som anges i följande tabell finns bara som en del av schemat och kommer inte att ha några data som genereras i loggarna. Dessa kolumner anges med en beskrivning av "Tom".

ContainerInstanceLog_CL

Column Type Beskrivning
Dator sträng Tomt
ContainerGroup_s sträng Namnet på den containergrupp som är associerad med posten
ContainerID_s sträng En unik identifierare för containern som är associerad med posten
ContainerImage_s sträng Namnet på containeravbildningen som är associerad med posten
Location_s sträng Platsen för resursen som är associerad med posten
Meddelande sträng Om tillämpligt visas meddelandet från containern
OSType_s sträng Namnet på operativsystemet som containern baseras på
RawData sträng Tomt
ResourceGroup sträng Namnet på resursgruppen som posten är associerad med
Source_s sträng Namnet på loggningskomponenten LoggingAgent
SubscriptionId sträng En unik identifierare för prenumerationen som posten är associerad med
TimeGenerated datetime Tidsstämpel när händelsen genererades av Azure-tjänsten som bearbetar begäran som motsvarar händelsen
Typ sträng Namnet på tabellen
_ResourceId sträng En unik identifierare för resursen som posten är associerad med
_SubscriptionId sträng En unik identifierare för prenumerationen som posten är associerad med

ContainerEvent_CL

Column Type Beskrivning
Dator sträng Tomt
ContainerGroupInstanceId_g sträng En unik identifierare för den containergrupp som är associerad med posten
ContainerGroup_s sträng Namnet på den containergrupp som är associerad med posten
ContainerName_s sträng Namnet på containern som är associerad med posten
Count_d real Hur många gånger händelsen har inträffat sedan den senaste undersökningen
FirstTimestamp_t datetime Tidsstämpeln för första gången händelsen inträffade
Location_s sträng Platsen för resursen som är associerad med posten
Meddelande sträng Om tillämpligt visas meddelandet från containern
OSType_s sträng Namnet på operativsystemet som containern baseras på
RawData sträng Tomt
Reason_s sträng Containergruppens aktuella status
ResourceGroup sträng Namnet på resursgruppen som posten är associerad med
SubscriptionId sträng En unik identifierare för prenumerationen som posten är associerad med
TimeGenerated datetime Tidsstämpel när händelsen genererades av Azure-tjänsten som bearbetar begäran som motsvarar händelsen
Typ sträng Namnet på tabellen
_ResourceId sträng En unik identifierare för resursen som posten är associerad med
_SubscriptionId sträng En unik identifierare för prenumerationen som posten är associerad med

Använda diagnostik Inställningar

Diagnostik Inställningar för containergrupper är en förhandsversionsfunktion och kan aktiveras via alternativ för förhandsversionsfunktioner i Azure-portalen. När den här funktionen har aktiverats för en prenumeration kan diagnostik Inställningar tillämpas på en containergrupp. Om du använder diagnostik Inställningar startas en containergrupp om.

Så här kan vi till exempel använda kommandot New-AzDiagnosticSetting för att tillämpa ett diagnostiskt Inställningar-objekt på en containergrupp.

$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

Nästa steg

Azure Monitor-loggar

Mer information om att köra frågor mot loggar och konfigurera aviseringar i Azure Monitor-loggar finns i:

Övervaka containerns CPU och minne

Information om övervakning av containerinstansens CPU- och minnesresurser finns i: