Loggning för containergrupper och instanser 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 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.

Anmärkning

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

För att aktivera loggning i dina containerinstanser behöver du följande krav:

Hämta Log Analytics autentiseringsuppgifter

Azure Container Instances behöver behörighet att skicka data till din Log Analytics arbetsyta. Om du vill bevilja den här behörigheten och aktivera loggning måste du ange Log Analytics arbetsyte-ID och en av dess nycklar (antingen primära eller sekundära) när du skapar containergruppen.

Important

I det här avsnittet beskrivs den äldre Log Analytics-integrationen, som kräver nyckeln till arbetsytan. Den äldre integreringen har följande begränsningar:

  • Den Log Analytics arbetsytan måste vara offentligt tillgänglig (privata slutpunkter stöds inte).
  • Lokal autentisering måste vara aktiverat på arbetsytan.

Om du vill ha en mer komplett integrering som stöder privata slutpunkter bör du överväga att använda diagnostikinställningar i stället.

Om du vill hämta Log Analytics arbetsyte-ID och primärnyckel använder du 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

Skapa containergrupp

Nu när du har log analytics-arbetsytans ID och primärnyckel är du redo att skapa en 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 utdata skickas till din Log Analytics arbetsyta fungerar det bra för att visa och fråga efter loggar.

Distribuera med Azure CLI

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

Anmärkning

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 till en ny fil och ersätt LOG_ANALYTICS_WORKSPACE_ID sedan och LOG_ANALYTICS_WORKSPACE_KEY med de värden som du fick i föregående steg. Spara filen som deploy-aci.yaml.

Anmärkning

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 att kommandot har 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 din Log Analytics arbetsyta 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 från sökningen. 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 sedan expandera en rad för att se 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 startar. Så här visar du händelsedata i ContainerEvent_CL tabellen:

  1. Navigera till din Log Analytics arbetsyta 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 från sökningen. 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 formatet Tabell. Du kan sedan expandera en rad för att se innehållet i en enskild post.

Händelsesökningsresultat i Azure-portalen

Sök i 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

Mer information om det äldre Azure Monitor schemat för Log Analytics finns i Äldre Log Analytics tabeller.

Använda diagnostikinställningar

Använd Diagnostikinställningar för att dirigera containergrupploggar och -händelser till Log Analytics. Den här funktionen har flera fördelar jämfört med den äldre integrering som beskrivs i den här artikeln:

  • Stöd för privat slutpunkt – fungerar med Log Analytics arbetsytor som använder privata slutpunkter.
  • Ingen arbetsytenyckel krävs – Azure Resource Manager hanterar autentisering, så du behöver inte hantera eller rotera arbetsytenycklar.
  • Azure Monitor-standardtabeller – loggarna skickas till Azure Monitor-standardtabeller i stället för anpassade loggtabeller.

Mer information finns i Azure Monitor Log Analytics tabeller.

Nästa steg

Azure Monitor-loggarna

Mer information om hur du frågar efter loggar och konfigurerar aviseringar i Azure Monitor-loggar finns i:

Övervaka containerns CPU och minne

Information om övervakning av processor- och minnesresurser för containerinstanser finns i: