Usare l'estensione Diagnostica per Linux 3.0 per monitorare le metriche e i log
Attenzione
Questo articolo fa riferimento a CentOS, una distribuzione di Linux che ha raggiunto lo stato di fine del servizio (EOL). Valutare le proprie esigenze e pianificare di conseguenza. Per ulteriori informazioni, consultare la Guida alla fine del ciclo di vita di CentOS.
Questo documento descrive la versione 3.0 e successive dell'estensione Diagnostica per Linux (LAD).
Importante
Per informazioni sulla versione 2.3 e sulle versioni precedenti, vedere Monitorare le prestazioni e i dati di diagnostica di una VM Linux.
Introduzione
L'estensione Diagnostica per Linux consente all'utente di monitorare l'integrità delle macchine virtuali Linux eseguite in Microsoft Azure. Questo servizio offre le funzionalità seguenti:
- Raccoglie le metriche delle prestazioni di sistema dalla macchina virtuale e le inserisce in una tabella specifica in un account di archiviazione designato.
- Recupera gli eventi di registrazione da SysLog e li inserisce in una tabella specifica nell'account di archiviazione designato.
- Consente agli utenti di personalizzare le metriche dei dati che verranno raccolte e caricate.
- Consente agli utenti di personalizzare i servizi di SysLog e i livelli di gravità degli eventi che vengono raccolti e caricati.
- Consente agli utenti di caricare in una tabella di archiviazione designata i file di log specificati.
- Supporta l'invio delle metriche e del registro agli endpoint Hub eventi di Azure arbitrari e ai BLOB in formato JSON nell'account di archiviazione designato.
Questa estensione funziona con entrambi i modelli di distribuzione di Azure.
Installare l'estensione in una macchina virtuale
È possibile abilitare l'estensione usando i cmdlet di Azure PowerShell, gli script dell'interfaccia della riga di comando di Azure, i modelli di Monitoraggio risorse di Azure (modelli di ARM) o il portale di Azure. Per altre informazioni, vedere Funzionalità delle estensioni.
Nota
Alcuni componenti dell'estensione macchina virtuale LAD vengono forniti anche nell'estensione VM di Log Analytics. A causa di questa architettura, possono verificarsi conflitti se entrambe le estensioni vengono create nello stesso modello di ARM.
Per evitare conflitti in fase di installazione, usare la dependsOn
direttiva per assicurarsi che le estensioni vengano installate in sequenza. È possibile installare le estensioni in entrambi gli ordini.
Le istruzioni di installazione e la configurazione di esempio scaricabile per configurare LAD 3.0 per:
- Acquisire e archiviare le stesse metriche di LAD 2.3.
- Acquisire un insieme utile di metriche File system. Questa funzionalità è una novità di LAD 3.0.
- Acquisire la raccolta syslog predefinita abilitata per LAD 2.3.
- Abilitare l'esperienza del portale di Azure per la creazione di grafici e avvisi relativi alle metriche della VM.
La configurazione scaricabile è solo un esempio. Modificarlo per adeguarlo alle proprie esigenze.
Prerequisiti
- Agente Linux di Azure 2.2.0 o versione successiva. La maggior parte delle immagini della raccolta Linux di macchine virtuali di Azure include la versione 2.2.7 o successive. Eseguire
/usr/sbin/waagent -version
per verificare la versione installata nella macchina virtuale. Se la macchina virtuale esegue una versione precedente, aggiornare l'agente guest. - Interfaccia della riga di comando di Azure. Se necessario, configurare l'ambiente dell'interfaccia della riga di comando di Azure nella macchina.
- Comando wget. Se non è già disponibile, installarlo usando la gestione pacchetti corrispondente.
- Una sottoscrizione di Azure esistente.
- Un account di archiviazione per utilizzo generico esistente per archiviare i dati. Gli account di archiviazione per utilizzo generico devono supportare l'archiviazione tabelle. Un account di archiviazione BLOB non funzionerà.
- Python 2.
Requisito di Python
L'estensione di diagnostica per Linux richiede Python 2. Se la macchina virtuale usa una distribuzione che non include Python 2 per impostazione predefinita, è necessario installarla. I comandi di esempio seguenti installano Python 2 in varie distribuzioni:
- Red Hat, CentOS, Oracle:
yum install -y python2
- Ubuntu, Debian:
apt-get install -y python2
- SUSE:
zypper install -y python2
Il file eseguibile python2
deve essere sottoposto a alias a Python. Ecco un metodo per impostare questo alias:
Eseguire il comando seguente per rimuovere eventuali alias esistenti.
sudo update-alternatives --remove-all python
Eseguire il comando seguente per creare l'alias.
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
Installazione di esempio
La configurazione di esempio scaricata negli esempi seguenti raccoglie un set di dati standard e lo invia all'archiviazione tabelle. L'URL per la configurazione di esempio e il relativo contenuto possono cambiare.
Nella maggior parte dei casi, è bene scaricare una copia del file JSON delle impostazioni del portale e personalizzarla in base alle proprie esigenze. Usare quindi i modelli o la propria automazione per usare una versione personalizzata del file di configurazione anziché scaricarla dall'URL ogni volta.
Nota
Per gli esempi seguenti, compilare i valori corretti per le variabili nella prima sezione prima di eseguire il codice.
Esempio di interfaccia della riga di comando di Azure
# Set your Azure VM diagnostic variables.
my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
my_linux_vm=<your_azure_linux_vm_name>
my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>
# Login to Azure before you do anything else.
az login
# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>
# Download the sample public settings. (You could also use curl or any web browser.)
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json
# Build the VM resource ID. Replace the storage account name and resource ID in the public settings.
my_vm_resource_id=$(az vm show -g $my_resource_group -n $my_linux_vm --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vm_resource_id#g" portal_public_settings.json
# Build the protected settings (storage account SAS token).
my_diagnostic_storage_account_sastoken=$(az storage account generate-sas --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z --permissions wlacu --resource-types co --services bt -o tsv)
my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"
# Finally, tell Azure to install and enable the extension.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group $my_resource_group --vm-name $my_linux_vm --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json
Esempio dell'interfaccia della riga di comando di Azure per installare LAD 3.0 nell'istanza del Set di scalabilità di macchine virtuali
#Set your Azure Virtual Machine Scale Sets diagnostic variables.
$my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
$my_linux_vmss=<your_azure_linux_vmss_name>
$my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>
# Login to Azure before you do anything else.
az login
# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>
# Download the sample public settings. (You could also use curl or any web browser.)
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json
# Build the virtual machine scale set resource ID. Replace the storage account name and resource ID in the public settings.
$my_vmss_resource_id=$(az vmss show -g $my_resource_group -n $my_linux_vmss --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vmss_resource_id#g" portal_public_settings.json
# Build the protected settings (storage account SAS token).
$my_diagnostic_storage_account_sastoken=$(az storage account generate-sas --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z --permissions wlacu --resource-types co --services bt -o tsv)
$my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"
# Finally, tell Azure to install and enable the extension.
az vmss extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group $my_resource_group --vmss-name $my_linux_vmss --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json
Esempio PowerShell
$storageAccountName = "yourStorageAccountName"
$storageAccountResourceGroup = "yourStorageAccountResourceGroupName"
$vmName = "yourVMName"
$VMresourceGroup = "yourVMResourceGroupName"
# Get the VM object
$vm = Get-AzVM -Name $vmName -ResourceGroupName $VMresourceGroup
# Get the public settings template from GitHub and update the templated values for storage account and resource ID
$publicSettings = (Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json).Content
$publicSettings = $publicSettings.Replace('__DIAGNOSTIC_STORAGE_ACCOUNT__', $storageAccountName)
$publicSettings = $publicSettings.Replace('__VM_RESOURCE_ID__', $vm.Id)
# If you have customized public settings, you can inline those rather than using the preceding template: $publicSettings = '{"ladCfg": { ... },}'
# Generate a SAS token for the agent to use to authenticate with the storage account
$sasToken = New-AzStorageAccountSASToken -Service Blob,Table -ResourceType Service,Container,Object -Permission "racwdlup" -Context (Get-AzStorageAccount -ResourceGroupName $storageAccountResourceGroup -AccountName $storageAccountName).Context -ExpiryTime $([System.DateTime]::Now.AddYears(10))
# Build the protected settings (storage account SAS token)
$protectedSettings="{'storageAccountName': '$storageAccountName', 'storageAccountSasToken': '$sasToken'}"
# Finally, install the extension with the settings you built
Set-AzVMExtension -ResourceGroupName $VMresourceGroup -VMName $vmName -Location $vm.Location -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0
Aggiornare le impostazioni dell'estensione
Dopo aver modificato le impostazioni pubbliche o protette, è necessario distribuirle alla macchina virtuale eseguendo lo stesso comando. Se le impostazioni sono state modificate, gli aggiornamenti vengono inviati all'estensione. LAD ricarica la configurazione e si riavvia.
Eseguire la migrazione dalle versioni precedenti dell'estensione
La versione più recente dell'estensione è 4.0.
Importante
Questa estensione introduce importanti modifiche alla configurazione. Una di queste modifiche ha migliorato la sicurezza dell'estensione, quindi non è stato possibile mantenere la compatibilità con le versioni precedenti con 2.x. In aggiunta, il server di pubblicazione per questa estensione differisce dal server di pubblicazione per le versioni 2.x.
Per eseguire la migrazione dalla versione 2.x alla nuova versione, disinstallare prima di tutto l'estensione precedente (sotto il nome del server di pubblicazione precedente). Installare quindi la versione 3.
Raccomandazioni:
- Installare l'estensione abilitando l'aggiornamento automatico della versione secondaria.
- Nelle VM con modello di distribuzione classico, specificare
3.*
come versione, se si installa l'estensione tramite Powershell o l'interfaccia della riga di comando XPLAT di Azure. - Nelle VM con il modello di distribuzione Azure Resource Manager, includere
"autoUpgradeMinorVersion": true
nel modello di distribuzione della VM.
- Nelle VM con modello di distribuzione classico, specificare
- Usare un account di archiviazione nuovo o differente per LAD 3.0. Esistono diverse piccole incompatibilità tra LAD 2.3 e LAD 3.0 che creano problemi nella condivisione di un account:
- LAD 3.0 inserisce gli eventi SysLog in una tabella con un nome differente.
- Le stringhe
counterSpecifier
per le metrichebuiltin
differiscono in LAD 3.0.
Impostazioni protette
Questo set di informazioni per la configurazione contiene informazioni riservate che devono essere protette dalla visualizzazione pubblica. Contiene, ad esempio, le credenziali di archiviazione. Queste impostazioni vengono trasmesse e memorizzate dall'estensione in modo crittografato.
{
"storageAccountName" : "the storage account to receive data",
"storageAccountEndPoint": "the hostname suffix for the cloud for this account",
"storageAccountSasToken": "SAS access token",
"mdsdHttpProxy": "HTTP proxy settings",
"sinksConfig": { ... }
}
Nome | Valore |
---|---|
storageAccountName | Nome dell'account di archiviazione in cui l'estensione scrive i dati. |
storageAccountEndPoint | (Facoltativo) Endpoint che identifica il cloud in cui esiste l'account di archiviazione. Se questa impostazione è assente, il LAD per impostazione predefinita è il cloud pubblico di Azure, https://core.windows.net . Per usare un account di archiviazione in Azure Germania, Azure per enti pubblici o Microsoft Azure gestito da 21Vianet, impostare questo valore come pertinente. |
storageAccountSasToken | Token SAS dell'account per i servizi BLOB e tabelle (ss='bt' ). Si applica a contenitori e oggetti (srt='co' ). Concede autorizzazioni di aggiunta, creazione, elenco, aggiornamento e scrittura (sp='acluw' ). Non includere il punto interrogativo (?) principale. |
mdsdHttpProxy | (Facoltativo) Informazioni sul proxy HTTP di cui l'estensione necessita per connettersi all'account di archiviazione e all'endpoint specificati. |
sinksConfig | (Facoltativo) Informazioni sulle destinazioni alternative a cui possono essere inviati le metriche e gli eventi. Nelle sezioni seguenti vengono fornite informazioni dettagliate su ogni sink di dati supportato dall'estensione. |
Per ottenere un token SAS all'interno di un modello di ARM, usare la funzione listAccountSas
. Per un modello di esempio, vedere l'esempio di funzione list.
È possibile costruire il token SAS richiesto tramite il portale di Azure:
- Selezionare l'account di archiviazione generico che in cui si desidera che l'estensione scriva.
- Nel menu a sinistra, in Impostazioniselezionare Firma di accesso condiviso.
- Effettuare le selezioni come descritto in precedenza.
- Selezionare Genera firma di accesso condiviso.
Copiare SAS generata nel campo storageAccountSasToken
. Rimuovere il punto interrogativo iniziale (?).
sinksConfig
"sinksConfig": {
"sink": [
{
"name": "sinkname",
"type": "sinktype",
...
},
...
]
},
Questa sezione facoltativa sinksConfig
definisce altre destinazioni a cui l'estensione invia le informazioni raccolte. L'array sink
contiene un oggetto per ogni sink di dati aggiuntivo. L'attributo type
determina gli altri attributi dell'oggetto.
Elemento | valore |
---|---|
name | Una stringa che fa riferimento a questo sink altrove nella configurazione dell'estensione. |
type | Il tipo di sink da definire. Determina gli altri valori, se presenti, nelle istanze di questo tipo. |
LAD versione 3.0 supporta due tipi di sink: EventHub
e JsonBlob
.
Sink EventHub
"sink": [
{
"name": "sinkname",
"type": "EventHub",
"sasURL": "https SAS URL"
},
...
]
La voce "sasURL"
contiene l'URL completo, incluso il token SAS, per l'hub di eventi in cui devono essere pubblicati i dati. Per LAD è necessario che una SAS dia un nome a un criterio che consente l'attestazione di trasmissione.
Ad esempio:
- Creare uno spazio dei nomi di Hub eventi di Azure denominato
contosohub
. - Creare un hub eventi nello spazio dei nomi denominato
syslogmsgs
. - Creare un criterio di accesso condiviso nell'hub eventi che consenta l'attestazione di trasmissione. Denominare il criterio
writer
.
Se SAS è valida fino a mezzanotte UTC il 1° gennaio 2018, il valore sasURL potrebbe essere simile al seguente:
https://contosohub.servicebus.windows.net/syslogmsgs?sr=contosohub.servicebus.windows.net%2fsyslogmsgs&sig=xxxxxxxxxxxxxxxxxxxxxxxxx&se=1514764800&skn=writer
Per altre informazioni sulla generazione e il recupero di informazioni sui token SAS per Hub eventi, vedere Generare un token SAS.
Sink JsonBlob
"sink": [
{
"name": "sinkname",
"type": "JsonBlob"
},
...
]
I dati indirizzati a un sink JsonBlob
vengono memorizzati nei BLOB dell'Archiviazione di Azure. Ogni istanza di LAD crea un BLOB all'ora per ogni nome di sink. Ciascun BLOB contiene sempre un array JSON sintatticamente valida degli oggetti. Le nuove voci vengono aggiunte in modo atomico alla matrice.
I BLOB vengono archiviati in un contenitore con lo stesso nome del sink. Le regole di Archiviazione di Azure per i nomi dei contenitori BLOB si applicano ai nomi dei sink JsonBlob
. Il nome deve avere una lunghezza compresa tra 3 e 63 caratteri ASCII o trattini.
Impostazioni pubbliche
La struttura delle impostazioni pubbliche contiene diversi blocchi di impostazioni che controllano le informazioni raccolte dall'estensione. Tutte le impostazioni sono facoltative. Se si specifica ladCfg
, è necessario specificare anche StorageAccount
.
{
"ladCfg": { ... },
"perfCfg": { ... },
"fileLogs": { ... },
"StorageAccount": "the storage account to receive data",
"mdsdHttpProxy" : ""
}
Elemento | Valore |
---|---|
StorageAccount | Nome dell'account di archiviazione in cui l'estensione scrive i dati. Deve essere il nome specificato nelle impostazioni protette. |
mdsdHttpProxy | (Facoltativo) Uguale al valore indicato in Impostazioni protette. Il valore pubblico viene sostituito dal valore privato, se impostato. Inserire le impostazioni proxy che contengono un segreto, ad esempio una password, nelle Impostazioni protette. |
Le sezioni seguenti forniscono informazioni dettagliate sugli elementi rimanenti.
ladCfg
"ladCfg": {
"diagnosticMonitorConfiguration": {
"eventVolume": "Medium",
"metrics": { ... },
"performanceCounters": { ... },
"syslogEvents": { ... }
},
"sampleRateInSeconds": 15
}
La struttura ladCfg
è facoltativa. Controlla la raccolta di metriche e log recapitati al servizio Metriche di Monitoraggio di Azure e ad altri sink di dati. È necessario specificare:
performanceCounters
osyslogEvents
o entrambi.- Struttura
metrics
.
Elemento | Valore |
---|---|
eventVolume | (Facoltativo) Controlla il numero di partizioni create all'interno della tabella di archiviazione. Deve essere "Large" , "Medium" o "Small" . Se non viene specificato alcun valore, il valore predefinito è "Medium" . |
sampleRateInSeconds | (Facoltativo) L'intervallo predefinito tra la raccolta di metriche non elaborate (non aggregate). La frequenza di esempio più piccola supportata è 15 secondi. Se il valore non è specificato, il valore predefinito è 15 . |
Metriche
"metrics": {
"resourceId": "/subscriptions/...",
"metricAggregation" : [
{ "scheduledTransferPeriod" : "PT1H" },
{ "scheduledTransferPeriod" : "PT5M" }
]
}
Elemento | Valore |
---|---|
resourceId | L'ID della risorsa di Azure Resource Manager della VM o del set di scalabilità a cui appartiene la VM. Questa impostazione deve essere specificata anche se nella configurazione viene usato un sink JsonBlob . |
scheduledTransferPeriod | La frequenza con cui le metriche aggregate sono calcolate e trasferite a Metriche di Monitoraggio di Azure. La frequenza viene espressa come intervallo di tempo IS 8601. Il periodo di trasferimento più piccolo è 60 secondi, ovvero PT1M. Specificare almeno un scheduledTransferPeriod . |
Gli esempi delle metriche specificate nella sezione performanceCounters
vengono raccolti ogni 15 secondi o alla frequenza di esempio definita in modo esplicito per il contatore. Se vengono visualizzate più frequenze scheduledTransferPeriod
, come illustrato nell'esempio, ogni aggregazione viene calcolata in modo indipendente.
performanceCounters
"performanceCounters": {
"sinks": "",
"performanceCounterConfiguration": [
{
"type": "builtin",
"class": "Processor",
"counter": "PercentIdleTime",
"counterSpecifier": "/builtin/Processor/PercentIdleTime",
"condition": "IsAggregate=TRUE",
"sampleRate": "PT15S",
"unit": "Percent",
"annotation": [
{
"displayName" : "Aggregate CPU %idle time",
"locale" : "en-us"
}
]
}
]
}
La sezione facoltativa performanceCounters
consente di controllare la raccolta delle metriche. I campioni non elaborati vengono aggregati per ogni scheduledTransferPeriod
per produrre questi valori:
- Media
- Minimo
- Massimo
- Ultimo valore raccolto
- Numero di esempi non elaborati usati per calcolare l'aggregazione
Elemento | Valore |
---|---|
sinks | (Facoltativo) Un elenco di nomi delimitato da virgole di sink a cui LAD invia i risultati di metrica aggregati. Tutte le metriche aggregate vengono pubblicate in ogni sink elencato. Esempio: "EHsink1, myjsonsink" . Per ulteriori informazioni, vedere sinksConfig . |
type | Identifica il provider effettivo della metrica. |
class | Con "counter" identifica la metrica specifica all'interno dello spazio dei nomi del provider. |
counter | Con "class" identifica la metrica specifica all'interno dello spazio dei nomi del provider. |
counterSpecifier | Identifica la metrica specifica all'interno dello spazio dei nomi di Metriche di Monitoraggio di Azure. |
condizione | (Facoltativo) Seleziona un'istanza specifica dell'oggetto a cui si applica la metrica. In alternativa, seleziona l'aggregazione in tutte le istanze di tale oggetto. |
sampleRate | Intervallo IS 8601 che imposta la frequenza con cui vengono raccolti gli esempi non elaborati per questa metrica. Se il valore non è impostato, l'intervallo di raccolta viene impostato dal valore di sampleRateInSeconds . La frequenza di esempio più piccola supportata è 15 secondi (PT15S). |
unitàà | Definisce l'unità per la metrica. Deve essere una delle seguenti stringhe: "Count" , "Bytes" , "Seconds" , "Percent" , "CountPerSecond" , "BytesPerSecond" , "Millisecond" . Gli utenti dei dati raccolti prevedono che i valori dei dati raccolti corrispondano a questa unità. LAD ignora questo campo. |
displayName | Etichetta da associare ai dati nelle Metriche di Monitoraggio di Azure. Questa etichetta si trova nella lingua specificata dalle impostazioni locali associate. LAD ignora questo campo. |
counterSpecifier
è un identificatore arbitrario. Gli utenti di metriche, quali le funzionalità dei grafici del portale di Azure e gli avvisi, usano counterSpecifier
come la "chiave" che identifica una metrica o un'istanza di una metrica.
Per le metriche builtin
, è consigliabile usare i valori counterSpecifier
che iniziano con /builtin/
. Se si raccoglie un'istanza specifica di una metrica, è consigliabile allegare l'identificatore dell'istanza del valore counterSpecifier
.
Di seguito sono riportati alcuni esempi.
/builtin/Processor/PercentIdleTime
- Tempo di inattività medio calcolato per tutte le CPU virtuali/builtin/Disk/FreeSpace(/mnt)
- Spazio disponibile per il file system/mnt
/builtin/Disk/FreeSpace
- Spazio libero medio calcolato per tutti i file system montati
LAD e il portale di Azure non prevedono che il valore counterSpecifier
corrisponda a qualsiasi criterio. Essere coerenti nel modo in cui si creano valori counterSpecifier
.
Quando si specifica performanceCounters
, LAD scrive sempre i dati in una tabella in Archiviazione di Azure. Gli stessi dati possono essere scritti in BLOB JSON o in Hub eventi o in entrambi. Non è tuttavia possibile disabilitare l'archiviazione dei dati in una tabella.
Tutte le istanze di LAD che usano lo stesso nome ed endpoint per l'account di archiviazione aggiungono le metriche e i log alla stessa tabella. Se troppe VM scrivono nella stessa partizione di tabella, Azure può limitare le scritture per tale partizione.
L'impostazione eventVolume
fa in modo che le voci si diffondano tra 1 (piccola), 10 (medie) o 100 (grandi) partizioni differenti. In genere, le partizioni medie sono sufficienti per evitare la limitazione delle richieste di traffico.
La funzionalità Metriche di Monitoraggio di Azure del portale di Azure usa i dati in questa tabella per creare grafici o per attivare gli avvisi. Il nome della tabella è la concatenazione delle stringhe seguenti:
WADMetrics
"scheduledTransferPeriod"
per i valori aggregati inseriti nella tabellaP10DV2S
- Una data nel formato "AAAAMMGG", che cambia ogni 10 giorni
Gli esempi includono WADMetricsPT1HP10DV2S20170410
e WADMetricsPT1MP10DV2S20170609
.
syslogEvents
"syslogEvents": {
"sinks": "",
"syslogEventConfiguration": {
"facilityName1": "minSeverity",
"facilityName2": "minSeverity",
...
}
}
La sezione facoltativa syslogEvents
consente di controllare la raccolta degli eventi di SysLog. Se la sezione viene omessa, gli eventi di SysLog non vengono acquisiti.
La raccolta syslogEventConfiguration
ha una voce per ogni struttura di interesse di SysLog. Se minSeverity
è "NONE"
per una particolare struttura o se tale struttura non viene visualizzata nell'elemento, non viene acquisito alcun evento da tale struttura.
Elemento | Valore |
---|---|
sinks | Un elenco delimitato da virgole di nomi di sink in cui vengono pubblicati i singoli eventi del registro. Tutti gli eventi del registro corrispondenti alle restrizioni in syslogEventConfiguration vengono pubblicati nei singoli sink elencati. Esempio: "EHforsyslog" |
facilityName | Nome della struttura syslog, ad esempio "LOG_USER" o "LOG\LOCAL0" . Per altre informazioni, vedere la sezione "Struttura" della pagina syslog man. |
minSeverity | Livello di gravità Syslog, ad esempio "LOG_ERR" o "LOG_INFO" . Per altre informazioni, vedere la sezione "Livello" della pagina syslog man. L'estensione acquisisce gli eventi inviati all'impianto con livello superiore o uguale a quello specificato. |
Quando si specifica syslogEvents
, LAD scrive sempre i dati in una tabella di Archiviazione di Azure denominata LinuxSyslogVer2v0. Gli stessi dati possono essere scritti in BLOB JSON o in Hub eventi o in entrambi. Non è tuttavia possibile disabilitare l'archiviazione dei dati in una tabella.
perfCfg
La sezione perfCfg
è facoltativa. Controlla l'esecuzione di query Open Management Infrastructure (OMI) arbitrarie.
"perfCfg": [
{
"namespace": "root/scx",
"query": "SELECT PercentAvailableMemory, PercentUsedSwap FROM SCX_MemoryStatisticalInformation",
"table": "LinuxOldMemory",
"frequency": 300,
"sinks": ""
}
]
Elemento | Valore |
---|---|
namespace | (Facoltativo) Lo spazio dei nomi OMI entro il quale deve essere eseguita la query. Se non specificato, il valore predefinito è "root/scx" . Viene implementato dai provider multipiattaforma di System Center. |
query | Query OMI da eseguire. |
table | (Facoltativo) Tabella di Archiviazione di Azure nell'account di archiviazione designato. Per altre informazioni, vedere Impostazioni protette. |
frequenza | (Facoltativo) Numero di secondi tra le esecuzioni di query. Il valore predefinito è 300 (5 minuti). Il valore minimo è 15 secondi. |
sinks | (Facoltativo) Un elenco di nomi delimitato da virgole di sink aggiuntivi in cui pubblicare i risultati di metrica di esempio non elaborati. Nessuna aggregazione di questi esempi non elaborati viene calcolata dall'estensione o da Metriche di Monitoraggio di Azure. |
È necessario specificare "table"
o "sinks"
o entrambi.
fileLogs
La sezione fileLogs
controlla l'acquisizione dei file di log. LAD acquisisce nuove righe di testo mentre vengono scritte nel file. Li scrive in righe di tabella e/o in eventuali sink specificati (JsonBlob
o EventHub
).
Nota
fileLogs
viene acquisito da un sotto-componente di LAD denominato omsagent
. Per raccogliere fileLogs
, assicurarsi che l'utente omsagent
disponga delle autorizzazioni di lettura per i file specificati. L'utente deve disporre anche delle autorizzazioni di esecuzione per tutte le directory nel percorso del file. Dopo aver installato LAD, è possibile controllare le autorizzazioni eseguendo sudo su omsagent -c 'cat /path/to/file'
.
"fileLogs": [
{
"file": "/var/log/mydaemonlog",
"table": "MyDaemonEvents",
"sinks": ""
}
]
Elemento | Valore |
---|---|
file | Il nome del percorso completo del file di registro da esaminare e acquisire. Il nome del percorso deve assegnare un nome a un singolo file. Non può denominare una directory o contenere caratteri jolly. L'account utente omsagent deve avere accesso in lettura al percorso del file. |
table | (Facoltativo) Tabella di Archiviazione di Azure in cui vengono scritte nuove righe dalla "parte finale" del file. La tabella deve trovarsi nell'account di archiviazione designato, come specificato nella configurazione protetta. |
sinks | (Facoltativo) Un elenco di nomi delimitato da virgole di sink aggiuntivi a cui vengono inviate le righe del registro. |
È necessario specificare "table"
o "sinks"
o entrambi.
Metriche supportate dal provider Builtin
Il provider di metriche builtin
è un'origine di metriche più interessante per molti utenti. Queste metriche sono suddivise in cinque grandi categorie:
- Processore
- Memoria
- Network
- File system
- Disco
Metriche Builtin per la classe Processore
La classe di metriche Processore offre informazioni sull'uso del processore nella macchina virtuale. Quando le percentuali vengono aggregate, il risultato è la media tra tutte le CPU.
In una VM a due vCPU, se una vCPU è per il 100% occupata e l'altra è per il 100% inattiva, il PercentIdleTime
segnalato è 50. Se ogni vCPU è occupata per il 50% per lo stesso periodo, anche il risultato segnalato è 50. In una VM a quattro vCPU, quando una vCPU è per il 100% occupata e le altre sono inattive, il PercentIdleTime
segnalato è 75.
Contatore | significato |
---|---|
PercentIdleTime | Percentuale di tempo nella finestra di aggregazione durante la quale i processori hanno eseguito il ciclo inattivo del kernel |
PercentProcessorTime | Percentuale di tempo di esecuzione di un thread non inattivo |
PercentIOWaitTime | Percentuale di tempo di attesa per il completamento delle operazioni di input/output |
PercentInterruptTime | Percentuale di tempo per l'esecuzione di interruzioni hardware o software e DPC, (chiamate di procedura differite) |
PercentUserTime | Relativamente al tempo di inattività nella finestra di aggregazione, la percentuale di tempo impiegato in modalità utente con priorità normale |
PercentNiceTime | Relativamente al tempo di inattività, la percentuale di tempo impiegata a bassa priorità (interessante) |
PercentPrivilegedTime | La percentuale di tempo di inattività impiegata in modalità privilegiata (kernel) |
La somma dei primi quattro contatori deve essere 100 percento. Anche la somma degli ultimi tre contatori deve essere 100 percento. Questi tre contatori suddividono la somma di PercentProcessorTime
, PercentIOWaitTime
e PercentInterruptTime
.
Per aggregare una singola metrica in tutti i processori, impostare "condition": "IsAggregate=TRUE"
. Per ottenere una metrica per un processore specifico, ad esempio per il secondo processore logico di una macchina virtuale con quattro CPU virtuali, impostare "condition": "Name=\\"1\\""
. I valori del processore logico sono compresi nell'intervallo [0..n-1]
.
Metriche Builtin per la classe Memoria
La classe di memoria delle metriche contiene informazioni sull'uso della memoria, il paging e lo scambio.
Contatore | significato |
---|---|
AvailableMemory | Memoria fisica disponibile in MiB |
PercentAvailableMemory | Percentuale della memoria totale che indica la memoria fisica disponibile |
UsedMemory | Memoria fisica in uso (MiB) |
PercentUsedMemory | Percentuale della memoria totale che indica la memoria fisica in uso |
PagesPerSec | Paging totale (lettura/scrittura) |
PagesReadPerSec | Pagine lette dall'archivio di backup, ad esempio file di scambio, file di programma e file mappato |
PagesWrittenPerSec | Pagine scritte nell'archivio di backup, ad esempio file di scambio e file mappato |
AvailableSwap | Spazio di swapping inutilizzato (MiB) |
PercentAvailableSwap | Percentuale dello swapping totale che indica lo spazio di swapping inutilizzato |
UsedSwap | Spazio di swapping in uso (MiB) |
PercentUsedSwap | Percentuale dello swapping totale che indica lo spazio di swapping in uso |
Questa classe di metriche ha una sola istanza. L'attributo "condition"
non presenta impostazioni utili e deve essere omesso.
Metriche Builtin per la classe Rete
La classe di metriche Rete contiene informazioni sulle attività di rete su un interfacce di rete singole sin dall'avvio.
LAD non espone le metriche della larghezza di banda. È possibile ottenere queste metriche dalle metriche host.
Contatore | significato |
---|---|
BytesTransmitted | Byte totali inviati sin dall'avvio |
BytesReceived | Byte totali ricevuti sin dall'avvio |
BytesTotal | Byte totali inviati o ricevuti sin dall'avvio |
PacketsTransmitted | Pacchetti totali inviati sin dall'avvio |
PacketsReceived | Pacchetti totali ricevuti sin dall'avvio |
TotalRxErrors | Numero di errori di ricezione sin dall'avvio |
TotalTxErrors | Numero di errori di trasmissione sin dall'avvio |
TotalCollisions | Numero di conflitti segnalati tramite le porte di rete sin dall'avvio |
Anche se questa classe di rete presenta un'istanza, LAD non supporta l'acquisizione delle metriche di rete aggregate per tutti i dispositivi di rete. Per ottenere le metriche per un'interfaccia specifica, ad esempio eth0, impostare "condition": "InstanceID=\\"eth0\\""
.
Metriche Builtin per la classe File system
La classe di metriche File system contiene informazioni sull'uso del File system. I valori assoluti e in percentuale vengono segnalati come sarebbero visualizzati da un utente normale (non radice).
Contatore | significato |
---|---|
FreeSpace | Spazio disponibile su disco in byte |
UsedSpace | Spazio su disco usato in byte |
PercentFreeSpace | Percentuale di spazio libero |
PercentUsedSpace | Percentuale di spazio usato |
PercentFreeInodes | Percentuale di inode non usati (inode) |
PercentUsedInodes | Percentuale di inode allocati (in uso) sommati tra tutti i File system |
BytesReadPerSecond | Byte letti per secondo |
BytesWrittenPerSecond | Byte scritti per secondo |
Byte al secondo | Byte letti o scritti per secondo |
ReadsPerSecond | Operazioni di lettura per secondo |
WritesPerSecond | Operazioni di scrittura per secondo |
TransfersPerSecond | Operazioni di lettura o scrittura per secondo |
È possibile ottenere valori aggregati in tutti i file system impostando "condition": "IsAggregate=True"
. Ottenere valori per un file system montato specifico, ad esempio "/mnt"
, impostando "condition": 'Name="/mnt"'
.
Nota
Se si lavora nel portale di Azure invece di JSON, il modulo del campo della condizione è Name='/mnt'
.
Metriche Builtin per la classe Disco
La classe di metriche Disco contiene informazioni sull'uso del dispositivo del disco. Queste statistiche si applicano all'intera unità.
Quando un dispositivo contiene diversi File system, i contatori per il dispositivo sono aggregati in modo efficace in tutti i File system.
Contatore | significato |
---|---|
ReadsPerSecond | Operazioni di lettura per secondo |
WritesPerSecond | Operazioni di scrittura per secondo |
TransfersPerSecond | Operazioni totali per secondo |
AverageReadTime | Media di secondi per operazione di lettura |
AverageWriteTime | Media di secondi per operazione di scrittura |
AverageTransferTime | Media di secondi per operazione |
AverageDiskQueueLength | Media delle operazioni del disco in coda |
ReadBytesPerSecond | Numero di byte letti al secondo |
WriteBytesPerSecond | Numero di byte scritti al secondo |
Byte al secondo | Numero di byte letti o scritti al secondo |
È possibile ottenere valori aggregati in tutti i dischi impostando "condition": "IsAggregate=True"
. Per ottenere le informazioni per un dispositivo specifico (ad esempio /dev/sdf1
), impostare "condition": "Name=\\"/dev/sdf1\\""
.
Installare e configurare LAD 3.0
Interfaccia della riga di comando di Azure
Se le impostazioni protette si trovano nel file ProtectedSettings.json e le informazioni sulla configurazione pubblica si trovano in PublicSettings.json, eseguire il comando seguente.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group <resource_group_name> --vm-name <vm_name> --protected-settings ProtectedSettings.json --settings PublicSettings.json
Il comando presuppone che si stia usando la modalità Azure Resource Manager dell'interfaccia della riga di comando di Azure. Per configurare LAD per le VM che usano il modello di distribuzione classico, passare alla modalità "asm" (azure config mode asm
) e omettere il nome del gruppo di risorse nel comando.
Per altre informazioni, vedere la documentazione sull'interfaccia della riga di comando multipiattaforma.
PowerShell
Se le impostazioni protette si trovano nella variabile $protectedSettings
e le informazioni sulla configurazione pubblica si trovano nella variabile $publicSettings
, eseguire questo comando:
Set-AzVMExtension -ResourceGroupName <resource_group_name> -VMName <vm_name> -Location <vm_location> -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0
Configurazione di LAD 3.0 di esempio
In base alle definizioni precedenti, questa sezione fornisce una configurazione dell'estensione LAD 3.0 di esempio e una spiegazione. Per applicare questo esempio al caso in questione, usare il nome dell'account di archiviazione, il token SAS dell'account e i token SAS di Hub eventi.
Nota
A seconda che si usi l'interfaccia della riga di comando di Azure o PowerShell per installare LAD, il metodo per fornire impostazioni pubbliche e protette differisce:
- Se si usa l'interfaccia della riga di comando di Azure, salvare le impostazioni seguenti per ProtectedSettings.json e PublicSettings.json per usare il comando di esempio precedente.
- Se si usa PowerShell, salvare le impostazioni seguenti in
$protectedSettings
e$publicSettings
eseguendo$protectedSettings = '{ ... }'
.
Impostazioni protette
Le impostazioni protette configurano:
- Un account di archiviazione.
- Un token SAS dell'account corrispondente.
- Diversi sink (
JsonBlob
oEventHub
con token SAS).
{
"storageAccountName": "yourdiagstgacct",
"storageAccountSasToken": "sv=xxxx-xx-xx&ss=bt&srt=co&sp=wlacu&st=yyyy-yy-yyT21%3A22%3A00Z&se=zzzz-zz-zzT21%3A22%3A00Z&sig=fake_signature",
"sinksConfig": {
"sink": [
{
"name": "SyslogJsonBlob",
"type": "JsonBlob"
},
{
"name": "FilelogJsonBlob",
"type": "JsonBlob"
},
{
"name": "LinuxCpuJsonBlob",
"type": "JsonBlob"
},
{
"name": "MyJsonMetricsBlob",
"type": "JsonBlob"
},
{
"name": "LinuxCpuEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=fake_signature&se=1808096361&skn=yourehpolicy"
},
{
"name": "MyMetricEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&skn=yourehpolicy"
},
{
"name": "LoggingEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&se=1808096361&skn=yourehpolicy"
}
]
}
}
Impostazioni pubbliche
Con le impostazioni pubbliche il LAD:
- Caricare le metriche della percentuale di tempo del processore e dello spazio sul disco usato nella tabella
WADMetrics*
. - Caricare messaggi dalla struttura syslog
"user"
e dalla gravità"info"
nella tabellaLinuxSyslog*
. - Caricare i risultati delle query OMI non elaborate (
PercentProcessorTime
ePercentIdleTime
) nella tabella denominataLinuxCPU
. - Caricare le righe aggiunte nel file
/var/log/myladtestlog
nella tabellaMyLadTestLog
.
In ogni caso, i dati vengono anche caricati:
- Archiviazione BLOB di Azure. Il nome del contenitore è definito nel sink
JsonBlob
. - Endpoint di Hub eventi, come specificato nel sink
EventHub
.
{
"StorageAccount": "yourdiagstgacct",
"ladCfg": {
"sampleRateInSeconds": 15,
"diagnosticMonitorConfiguration": {
"performanceCounters": {
"sinks": "MyMetricEventHub,MyJsonMetricsBlob",
"performanceCounterConfiguration": [
{
"unit": "Percent",
"type": "builtin",
"counter": "PercentProcessorTime",
"counterSpecifier": "/builtin/Processor/PercentProcessorTime",
"annotation": [
{
"locale": "en-us",
"displayName": "Aggregate CPU %utilization"
}
],
"condition": "IsAggregate=TRUE",
"class": "Processor"
},
{
"unit": "Bytes",
"type": "builtin",
"counter": "UsedSpace",
"counterSpecifier": "/builtin/FileSystem/UsedSpace",
"annotation": [
{
"locale": "en-us",
"displayName": "Used disk space on /"
}
],
"condition": "Name=\"/\"",
"class": "Filesystem"
}
]
},
"metrics": {
"metricAggregation": [
{
"scheduledTransferPeriod": "PT1H"
},
{
"scheduledTransferPeriod": "PT1M"
}
],
"resourceId": "/subscriptions/your_azure_subscription_id/resourceGroups/your_resource_group_name/providers/Microsoft.Compute/virtualMachines/your_vm_name"
},
"eventVolume": "Large",
"syslogEvents": {
"sinks": "SyslogJsonBlob,LoggingEventHub",
"syslogEventConfiguration": {
"LOG_USER": "LOG_INFO"
}
}
}
},
"perfCfg": [
{
"query": "SELECT PercentProcessorTime, PercentIdleTime FROM SCX_ProcessorStatisticalInformation WHERE Name='_TOTAL'",
"table": "LinuxCpu",
"frequency": 60,
"sinks": "LinuxCpuJsonBlob,LinuxCpuEventHub"
}
],
"fileLogs": [
{
"file": "/var/log/myladtestlog",
"table": "MyLadTestLog",
"sinks": "FilelogJsonBlob,LoggingEventHub"
}
]
}
Nella configurazione resourceId
deve corrispondere al valore della macchina virtuale o al valore del set di scalabilità della macchina virtuale.
- I valori di
resourceId
della VM in funzione sono noti a grafici e avvisi relativi alle metriche della piattaforma di Azure. Si prevede di trovare i dati per la macchina virtuale usando la chiave di ricercaresourceId
. - Se si usa la scalabilità automatica di Azure,
resourceId
nella configurazione della scalabilità automatica deve corrispondere aresourceId
usato da LAD. - Il valore di
resourceId
viene creato nei nomi di BLOB JSON scritti da LAD.
Visualizzare i dati
Usare il portale di Azure per visualizzare i dati sulle prestazioni o impostare gli avvisi:
I dati performanceCounters
sono sempre archiviati in una tabella di Archiviazione di Azure. Le API di Archiviazione di Azure sono disponibili per più linguaggi e piattaforme.
I dati inviati ai sink JsonBlob
sono archiviati nei BLOB nell'account di archiviazione indicato in Impostazioni protette. È possibile usare i dati BLOB usando qualsiasi API di archiviazione BLOB di Azure.
È anche possibile usare questi strumenti dell'interfaccia utente per accedere ai dati nell'Archiviazione di Azure:
- Esplora server di Visual Studio.
- Azure Storage Explorer
Lo screenshot seguente di una sessione di Microsoft Azure Storage Explorer mostra le tabelle di Archiviazione di Azure e i contenitori generati da un'estensione LAD 3.0 correttamente configurata su una macchina virtuale di test. L'immagine non corrisponde esattamente alla configurazione LAD 3.0 di esempio.
Per altre informazioni su come usare i messaggi pubblicati in un endpoint di Hub eventi, vedere la documentazione di Hub eventi pertinente.
Passaggi successivi
- In Monitoraggio di Azure creare avvisi per le metriche raccolte.
- Creare grafici di monitoraggio per le metriche.
- Creare un Set di scalabilità di macchine virtuali con le metriche per controllare la scalabilità automatica.