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:
- Passare all'area di lavoro Log Analytics nel portale di Azure
- In Impostazioni selezionare Gestione agenti
- 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
:
- Passare all'area di lavoro Log Analytics nel portale di Azure
- In Generale selezionare Log
- Digitare la query seguente:
ContainerInstanceLog_CL | limit 50
- 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.
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
:
- Passare all'area di lavoro Log Analytics nel portale di Azure
- In Generale selezionare Log
- Digitare la query seguente:
ContainerEvent_CL | limit 50
- 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.
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:
- Informazioni sulle ricerche nei log di Monitoraggio di Azure
- Avvisi unificati in Monitoraggio di Azure
Monitorare CPU e memoria del contenitore
Per informazioni sul monitoraggio delle risorse di CPU e memoria per l'istanza di contenitore, vedere: