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

Le aree di lavoro 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 da risorse e risorse locali 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 di log e eventi del gruppo di contenitori ai log di Monitoraggio di Azure, specificare un ID 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.

Nota

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. Si sta procedendo a un aggiornamento della terminologia per riflettere meglio il ruolo dei log in Monitoraggio di Azure. Per informazioni dettagliate, vedere Modifiche della terminologia di Monitoraggio di Azure.

Prerequisiti

Per abilitare la registrazione nelle istanze di contenitore, è necessario quanto segue:

Ottenere le credenziali di Log Analytics

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

Per ottenere l'ID e la chiave primaria dell'area di lavoro Log Analytics:

  1. Passare all'area di lavoro Log Analytics nel portale di Azure
  2. In Impostazioni selezionare Gestione agenti
  3. Prendere nota di:
    • ID area di lavoro
    • Chiave primaria

Creare un gruppo di contenitori

Dopo aver ottenuto l'ID e la chiave primaria dell'area di lavoro Log Analytics, è possibile procedere con la creazione di 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 : l'interfaccia della riga di comando di Azure e l'interfaccia della riga di comando di Azure con un modello YAML. Il contenitore fluentd produce diverse righe di output nella configurazione predefinita. Dato che questo output viene inviato all'area di lavoro Log Analytics, è adatto per dimostrare le funzionalità di visualizzazione ed esecuzione di query per i log.

Distribuire con l'interfaccia della riga di comando di Azure

Per eseguire la distribuzione con l'interfaccia della riga di comando di Azure, specificare i parametri --log-analytics-workspace 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.

Nota

L'esempio seguente esegue il pull di un'immagine del contenitore pubblica da Docker Hub. È consigliabile configurare un segreto pull per l'autenticazione usando un account di 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 Azure Container 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>

Distribuire 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 il codice YAML in un nuovo file e 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.

Nota

L'esempio seguente esegue il pull di un'immagine del contenitore pubblica da Docker Hub. È consigliabile configurare un segreto pull per l'autenticazione usando un account di 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 Azure Container 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 oppure creare prima un gruppo di risorse denominato "myResourceGroup":

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

Si riceverà una risposta da Azure contenente i dettagli di distribuzione poco dopo aver eseguito il comando.

Visualizzare 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 tabella ContainerInstanceLog_CL:

  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

Dovrebbero essere visibili i vari risultati visualizzati dalla query. Se inizialmente non viene visualizzato alcun risultato, attendere qualche minuto e quindi selezionare il pulsante Esegui per eseguire nuovamente la query. Per impostazione predefinita, le voci del log vengono visualizzate in formato Tabella. È quindi possibile espandere una riga per visualizzare il contenuto di una singola voce del log.

Risultati di Ricerca log nel portale di Azure

Visualizza eventi

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

  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

Dovrebbero essere visibili i vari risultati visualizzati dalla query. Se inizialmente non viene visualizzato alcun risultato, attendere qualche minuto e quindi selezionare il pulsante Esegui per eseguire nuovamente 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 della ricerca di eventi nel portale di Azure

Eseguire query sui log dei contenitori

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

La struttura di base di una query è costituita da una tabella di origine (in questo articolo ContainerInstanceLog_CL o ContainerEvent_CL) seguita da una serie di operatori separati dal carattere barra verticale (|). È possibile concatenare più operatori per limitare i risultati ed eseguire funzioni avanzate.

Per visualizzare i risultati di query di esempio, incollare la query seguente nella casella di testo della query e selezionare il pulsante Esegui per eseguire la query. 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

Nota

Alcune delle colonne elencate nella tabella seguente esistono solo come parte dello schema e non contengono dati generati nei log. Queste colonne sono indicate con una descrizione di "Empty".

ContainerInstanceLog_CL

Column Type Descrizione
Computer string Vuoto
ContainerGroup_s string Nome del gruppo di contenitori associato al record
ContainerID_s string Identificatore univoco per il contenitore associato al record
ContainerImage_s string Nome dell'immagine del contenitore associata al record
Location_s string Posizione della risorsa associata al record
Message string Se applicabile, il messaggio dal contenitore
OSType_s string Il nome del sistema operativo su cui si basa il contenitore
RawData string Vuoto
ResourceGroup string Nome del gruppo di risorse a cui è associato il record
Source_s string Nome del componente di registrazione, "LoggingAgent"
SubscriptionId string Identificatore univoco della sottoscrizione a cui è associato il record
TimeGenerated datetime Timestamp quando l'evento è stato generato dal servizio di Azure che elabora la richiesta corrispondente all'evento
Type string Nome della tabella
_ResourceId string Identificatore univoco della risorsa a cui è associato il record.
_SubscriptionId string Identificatore univoco della sottoscrizione a cui è associato il record

ContainerEvent_CL

Column Type Descrizione
Computer string Vuoto
ContainerGroupInstanceId_g string Identificatore univoco per il gruppo di contenitori associato al record
ContainerGroup_s string Nome del gruppo di contenitori associato al record
ContainerName_s string Nome del contenitore associato al record
Count_d real Quante volte si è verificato l'evento dall'ultimo sondaggio
FirstTimestamp_t datetime Timestamp della prima volta che si è verificato l'evento
Location_s string Posizione della risorsa associata al record
Message string Se applicabile, il messaggio dal contenitore
OSType_s string Il nome del sistema operativo su cui si basa il contenitore
RawData string Vuoto
Reason_s string Stato corrente del gruppo di contenitori
ResourceGroup string Nome del gruppo di risorse a cui è associato il record
SubscriptionId string Identificatore univoco della sottoscrizione a cui è associato il record
TimeGenerated datetime Timestamp quando l'evento è stato generato dal servizio di Azure che elabora la richiesta corrispondente all'evento
Type string Nome della tabella
_ResourceId string Identificatore univoco della risorsa a cui è associato il record.
_SubscriptionId string Identificatore univoco della sottoscrizione a cui è associato il record

Uso di Impostazioni di diagnostica

Il Impostazioni di diagnostica per i gruppi di contenitori è una funzionalità di anteprima e può essere abilitata tramite le opzioni delle funzionalità di anteprima in portale di Azure. Dopo aver abilitato questa funzionalità per una sottoscrizione, è possibile applicare Impostazioni di diagnostica a un gruppo di contenitori. L'applicazione di Impostazioni di diagnostica determina il riavvio di un gruppo di contenitori.

Ecco ad esempio come usare il comando New-AzDiagnosticSetting per applicare un oggetto Diagnostic Impostazioni a un gruppo di contenitori.

$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

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: