Registrazione di gruppi di contenitori e istanze con log di Monitoraggio di Azure

Le aree di lavoro di Log Analytics offrono una posizione centralizzata per l'archiviazione e l'esecuzione di query sui dati di log, non solo dalle risorse di Azure, ma anche per le risorse locali e quelle in altri cloud. Il servizio Istanze di Azure Container supporta per impostazione predefinita l'invio di log e dati sugli eventi ai log di Monitoraggio di Azure.

Per inviare i dati del log e degli eventi del gruppo di contenitori ai log di Monitoraggio di Azure, specificare un ID dell'area di lavoro e una chiave dell'area di lavoro Log Analytics esistenti durante la configurazione di un gruppo di contenitori.

Le sezioni seguenti descrivono come creare un gruppo di contenitori abilitato per la registrazione e come eseguire query sui log. È anche possibile aggiornare un gruppo di contenitori con un ID area di lavoro e una chiave dell'area di lavoro per abilitare la registrazione.

Annotazioni

Questo articolo è stato aggiornato di recente in modo da usare il termine log di Monitoraggio di Azure anziché Log Analytics. I dati di log vengono comunque archiviati in un'area di lavoro Log Analytics e vengano ancora raccolti e analizzati dallo stesso servizio Log Analytics. Stiamo aggiornando la terminologia per riflettere meglio il ruolo dei log in Monitoraggio di Azure. Per informazioni dettagliate, vedere Modifiche della terminologia di Monitoraggio di Azure.

Prerequisites

Per abilitare la registrazione nelle istanze del contenitore, sono necessari i prerequisiti seguenti:

Ottenere le credenziali di Log Analytics

Istanze di Azure Container richiede l'autorizzazione per inviare dati all'area di lavoro Log Analytics. Per concedere questa autorizzazione e abilitare la registrazione, è necessario specificare l'ID dell'area di lavoro Log Analytics e una delle relative chiavi (primaria o secondaria) quando si crea il gruppo di contenitori.

Importante

Questa sezione descrive l'integrazione di Log Analytics legacy, che richiede la chiave dell'area di lavoro. L'integrazione legacy presenta le limitazioni seguenti:

  • L'area di lavoro Log Analytics deve essere accessibile pubblicamente (gli endpoint privati non sono supportati).
  • L'autenticazione locale deve essere abilitata nell'area di lavoro.

Per un'integrazione più ricca di funzionalità che supporta gli endpoint privati, valutare l'uso di Impostazioni di diagnostica.

Per ottenere l'ID dell'area di lavoro Log Analytics e la chiave primaria, usare il interfaccia della riga di comando di Azure:

# 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

Creare un gruppo di contenitori

Dopo aver ottenuto l'ID e la chiave primaria dell'area di lavoro Log Analytics, è possibile creare un gruppo di contenitori abilitato per la registrazione.

Gli esempi seguenti illustrano due modi per creare un gruppo di contenitori costituito da un singolo contenitore fluentd: interfaccia della riga di comando di Azure e interfaccia della riga di comando di Azure con un modello YAML. Il contenitore fluentd produce diverse righe di output nella configurazione predefinita. Poiché questo output viene inviato all'area di lavoro Log Analytics, funziona bene per illustrare la visualizzazione e l'esecuzione di query sui log.

Distribuire con interfaccia della riga di comando di Azure

Per eseguire la distribuzione con il interfaccia della riga di comando di Azure, specificare i --log-analytics-workspace parametri e --log-analytics-workspace-key nel comando az container create. Sostituire i due valori dell'area di lavoro con i valori ottenuti nel passaggio precedente (e aggiornare il nome del gruppo di risorse) prima di eseguire il comando seguente.

Annotazioni

L'esempio seguente scarica un'immagine del contenitore pubblica da Docker Hub. È consigliabile configurare un segreto pull per l'autenticazione usando un account Docker Hub anziché effettuare una richiesta pull anonima. Per migliorare l'affidabilità quando si lavora con contenuto pubblico, importare e gestire l'immagine in un registro contenitori Azure privato. Altre informazioni sull'uso delle immagini pubbliche.

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>

Eseguire la distribuzione con YAML

Usare questo metodo se si preferisce distribuire gruppi di contenitori con YAML. Il codice YAML seguente definisce un gruppo di contenitori con un singolo contenitore. Copiare yaml in un nuovo file, quindi sostituire LOG_ANALYTICS_WORKSPACE_ID e LOG_ANALYTICS_WORKSPACE_KEY con i valori ottenuti nel passaggio precedente. Salvare il file come deploy-aci.yaml.

Annotazioni

L'esempio seguente scarica un'immagine del contenitore pubblica da Docker Hub. È consigliabile configurare un segreto pull per l'autenticazione usando un account Docker Hub anziché effettuare una richiesta pull anonima. Per migliorare l'affidabilità quando si lavora con contenuto pubblico, importare e gestire l'immagine in un registro contenitori Azure privato. Altre informazioni sull'uso delle immagini pubbliche.

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

Eseguire quindi il comando seguente per distribuire il gruppo di contenitori. Sostituire myResourceGroup con un gruppo di risorse nella sottoscrizione o creare prima un gruppo di risorse denominato "myResourceGroup":

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

Si dovrebbe ricevere una risposta da Azure contenente i dettagli della distribuzione poco dopo l'esecuzione del comando.

Visualizza i log

Dopo aver distribuito il gruppo di contenitori, possono essere necessari alcuni minuti (fino a 10) per visualizzare le prime voci di log nel portale di Azure.

Per visualizzare i log del gruppo di contenitori nella ContainerInstanceLog_CL tabella:

  1. Passare all'area di lavoro Log Analytics nel portale di Azure
  2. In Generale selezionare Log
  3. Digitare la query seguente: ContainerInstanceLog_CL | limit 50
  4. Selezionare Esegui

Dovresti vedere diversi risultati restituiti dalla query. Se in un primo momento non vengono visualizzati risultati, attendere alcuni minuti, quindi selezionare il pulsante Esegui per eseguire di nuovo la query. Per impostazione predefinita, le voci di log vengono visualizzate in formato tabella . È quindi possibile espandere una riga per visualizzare il contenuto di una singola voce di log.

Risultati della ricerca log nel portale di Azure

Visualizzare gli eventi

È anche possibile visualizzare gli eventi per le istanze del contenitore nel portale di Azure. Gli eventi includono l'ora di creazione dell'istanza e l'avvio. Per visualizzare i dati dell'evento nella ContainerEvent_CL tabella:

  1. Passare all'area di lavoro Log Analytics nel portale di Azure
  2. In Generale selezionare Log
  3. Digitare la query seguente: ContainerEvent_CL | limit 50
  4. Selezionare Esegui

Dovresti vedere diversi risultati restituiti dalla query. Se in un primo momento non vengono visualizzati risultati, attendere alcuni minuti, quindi selezionare il pulsante Esegui per eseguire di nuovo la query. Per impostazione predefinita, le voci vengono visualizzate in formato tabella . È quindi possibile espandere una riga per visualizzare il contenuto di una singola voce.

Risultati di Ricerca eventi nel portale di Azure

Eseguire query sui log dei contenitori

I log di Monitoraggio di Azure includono un ampio linguaggio di query per estrarre informazioni da potenzialmente migliaia di righe di output di log.

La struttura di base di una query è la tabella di origine (in questo articolo o ContainerInstanceLog_CLContainerEvent_CL) seguita da una serie di operatori separati dal carattere pipe (|). È possibile combinare più operatori per affinare i risultati ed eseguire funzioni avanzate.

Per visualizzare i risultati della query di esempio, incollare la query seguente nella casella di testo e selezionare il pulsante Esegui per eseguirla. Questa query consente di visualizzare tutte le voci di log il cui campo "Message" contiene la parola "warn":

ContainerInstanceLog_CL
| where Message contains "warn"

Sono supportate anche query più complesse. Ad esempio, questa query visualizza solo le voci di log per il gruppo di contenitori "mycontainergroup001" generate nell'ultima ora:

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

Schema del log

Per informazioni sullo schema legacy Monitoraggio di Azure per Log Analytics, vedere Tabelle di Log Analytics legacy.

Uso delle impostazioni di diagnostica

Usare Le impostazioni di diagnostica per instradare i log e gli eventi del gruppo di contenitori a Log Analytics. Questa funzionalità offre diversi vantaggi rispetto all'integrazione legacy descritta in questo articolo:

  • Supporto degli endpoint privati: funziona con le aree di lavoro Log Analytics che usano endpoint privati.
  • Nessuna chiave dell'area di lavoro necessaria: Azure Resource Manager gestisce l'autenticazione, quindi non è necessario gestire o ruotare le chiavi dell'area di lavoro.
  • Tabelle Monitoraggio di Azure standard: i log passano alle tabelle standard Monitoraggio di Azure anziché alle tabelle di log personalizzate.

Per altre informazioni, vedere Monitoraggio di Azure Log Analytics tabelle.

Passaggi successivi

Log di Monitoraggio di Azure

Per altre informazioni sull'esecuzione di query sui log e la configurazione di avvisi nei log di Monitoraggio di Azure, vedere:

Monitorare CPU e memoria del contenitore

Per informazioni sul monitoraggio delle risorse di CPU e memoria per l'istanza di contenitore, vedere: