Condividi tramite


Usare l'estensione di diagnostica Linux 3.0 per monitorare metriche e log

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Prendere in considerazione l'uso e il piano di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

Questo documento descrive la versione 3.0 e successive dell'estensione diagnostica Linux (LAD).

Importante

Per informazioni sulla versione 2.3 e precedenti, vedere Monitorare le prestazioni e i dati di diagnostica di una macchina virtuale Linux.

Introduzione

L'estensione di diagnostica Linux consente a un utente di monitorare l'integrità di una macchina virtuale Linux in esecuzione 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 di metriche e eventi di log a endpoint arbitrari Hub eventi di Azure e 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 o i 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 Resource Manager.

Per evitare conflitti in fase di installazione, usare la dependsOn direttiva per assicurarsi che le estensioni vengano installate in sequenza. Le estensioni possono essere installate in entrambi gli ordini.

Queste istruzioni di installazione e una configurazione di esempio scaricabile per configurare LAD 3.0 per:

  • Acquisire e archiviare le stesse metriche di LAD 2.3.
  • Acquisire un set utile di metriche del file system. Questa funzionalità è una novità di LAD 3.0.
  • Acquisire la raccolta syslog predefinita abilitata per LAD 2.3.
  • Abilitare l'esperienza di portale di Azure per creare grafici e avvisi sulle metriche delle macchine virtuali.

La configurazione scaricabile è solo un esempio. Modificarlo in base 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 nel computer.
  • 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 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 python2 file eseguibile deve essere aliasato in Python. Ecco un metodo per impostare questo alias:

  1. Eseguire il comando seguente per rimuovere eventuali alias esistenti.

    sudo update-alternatives --remove-all python
    
  2. 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 li invia all'archiviazione tabelle. L'URL per la configurazione di esempio e il relativo contenuto possono cambiare.

Nella maggior parte dei casi, è necessario scaricare una copia del file JSON delle impostazioni del portale e personalizzarla in base alle 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 protette o pubbliche, distribuirle nella 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 modifiche di rilievo 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. Inoltre, il server di pubblicazione delle estensioni per questa estensione è diverso 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 macchine virtuali del modello di distribuzione classica specificare la versione 3.* se si installa l'estensione tramite l'interfaccia della riga di comando di Azure XPLAT o PowerShell.
    • Nelle macchine virtuali del modello di distribuzione di Azure Resource Manager includere "autoUpgradeMinorVersion": true nel modello di distribuzione della macchina virtuale.
  • Usare un account di archiviazione nuovo o diverso per LAD 3.0. LAD 2.3 e LAD 3.0 presentano diverse piccole incompatibilità che rendono difficile la condivisione di un account:
    • LAD 3.0 archivia gli eventi syslog in una tabella con un nome diverso.
    • Le counterSpecifier stringhe per builtin le metriche differiscono in LAD 3.0.

Impostazioni protette

Questo set di informazioni di 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 è presente l'account di archiviazione. Se questa impostazione è assente, il valore predefinito di LAD è 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 richiesto.
storageAccountSasToken Token di firma di accesso condiviso 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 necessarie per connettersi all'account di archiviazione e all'endpoint specificati.
sinksConfig (Facoltativo) Dettagli delle destinazioni alternative a cui è possibile recapitare metriche ed eventi. Nelle sezioni seguenti vengono fornite informazioni dettagliate su ogni sink di dati supportato dall'estensione.

Per ottenere un token di firma di accesso condiviso all'interno di un modello di Resource Manager, usare la listAccountSas funzione . Per un modello di esempio, vedere l'esempio di funzione list.

È possibile costruire il token di firma di accesso condiviso necessario tramite il portale di Azure:

  1. Selezionare l'account di archiviazione per utilizzo generico in cui si vuole scrivere l'estensione.
  2. Nel menu a sinistra, in Impostazioni selezionare Firma di accesso condiviso.
  3. Effettuare le selezioni come descritto in precedenza.
  4. Selezionare Genera firma di accesso condiviso.

Screenshot che mostra la pagina Firma di accesso condiviso con il pulsante Genera S A.

Copiare la firma di accesso condiviso generata nel storageAccountSasToken campo . Rimuovere il punto interrogativo iniziale (?).

sinksConfig

"sinksConfig": {
    "sink": [
        {
            "name": "sinkname",
            "type": "sinktype",
            ...
        },
        ...
    ]
},

La sinksConfig sezione facoltativa definisce più destinazioni a cui l'estensione invia le informazioni raccolte. La sink matrice contiene un oggetto per ogni sink di dati aggiuntivo. L'attributo type determina gli altri attributi nell'oggetto .

Elemento valore
name 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 di EventHub

"sink": [
    {
        "name": "sinkname",
        "type": "EventHub",
        "sasURL": "https SAS URL"
    },
    ...
]

La "sasURL" voce contiene l'URL completo, incluso il token di firma di accesso condiviso, per l'hub eventi in cui devono essere pubblicati i dati. LAD richiede una firma di accesso condiviso per assegnare un nome a un criterio che consenta l'attestazione di invio.

Ad esempio:

  • Creare uno spazio dei nomi 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 abilita l'attestazione di invio. Denominare il criterio writer.

Se la firma di accesso condiviso è 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 di firma di accesso condiviso per Hub eventi, vedere Generare un token di firma di accesso condiviso.

Sink JsonBlob

"sink": [
    {
        "name": "sinkname",
        "type": "JsonBlob"
    },
    ...
]

I dati indirizzati a un JsonBlob sink vengono archiviati in BLOB in Archiviazione di Azure. Ogni istanza di LAD crea un BLOB all'ora per ogni nome di sink. Ogni BLOB contiene sempre una matrice JSON sintatticamente valida di 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 JsonBlob sink. Il nome deve avere una lunghezza compresa tra 3 e 63 caratteri alfanumerici alfanumerici o trattini.

Impostazioni pubbliche

La struttura delle impostazioni pubbliche contiene vari 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) Come nelle impostazioni protette. Il valore pubblico viene sottoposto a override 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 ladCfg struttura è facoltativa. Controlla la raccolta di metriche e log recapitati al servizio Metriche di Monitoraggio di Azure e ad altri sink di dati. È necessario specificare:

  • O performanceCounters o syslogEvents 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 un valore, il valore predefinito è "Medium".
sampleRateInSeconds (Facoltativo) Intervallo predefinito tra la raccolta di metriche non elaborate (non raggruppate). 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 ID risorsa di Azure Resource Manager della macchina virtuale o del set di scalabilità a cui appartiene la macchina virtuale. Questa impostazione deve essere specificata anche se nella configurazione viene usato un JsonBlob sink.
scheduledTransferPeriod Frequenza con cui vengono calcolate e trasferite le metriche di aggregazione alle 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 scheduledTransferPeriodoggetto .

I campioni delle metriche specificate nella performanceCounters sezione vengono raccolti ogni 15 secondi o alla frequenza di campionamento definita in modo esplicito per il contatore. Se vengono visualizzate più scheduledTransferPeriod frequenze, come 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 performanceCounters sezione facoltativa controlla la raccolta di metriche. I campioni non elaborati vengono aggregati per ognuno scheduledTransferPeriod per produrre questi valori:

  • Media
  • Minimo
  • Massimo
  • Ultimo valore raccolto
  • Numero di campioni non elaborati usati per calcolare l'aggregazione
Elemento Valore
sinks (Facoltativo) Elenco delimitato da virgole di nomi di sink a cui LAD invia i risultati aggregati delle metriche. 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 Insieme a "counter", identifica la metrica specifica all'interno dello spazio dei nomi del provider.
counter Insieme a "class", identifica la metrica specifica all'interno dello spazio dei nomi del provider.
counterSpecifier Identifica la metrica specifica nello spazio dei nomi 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 di raccolta dei campioni 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 stringhe seguenti: "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 dall'impostazione delle impostazioni locali associata. LAD ignora questo campo.

counterSpecifier è un identificatore arbitrario. I consumer di metriche, ad esempio la funzionalità di creazione di grafici e avvisi portale di Azure, usano counterSpecifier come "chiave" che identifica una metrica o un'istanza di una metrica.

Per builtin le metriche, è consigliabile counterSpecifier usare i valori che iniziano con /builtin/. Se si raccoglie un'istanza specifica di una metrica, è consigliabile associare l'identificatore dell'istanza al counterSpecifier valore .

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 /mnt file system
  • /builtin/Disk/FreeSpace - Spazio disponibile medio in tutti i file system montati

LAD e il portale di Azure non prevedono che il counterSpecifier valore corrisponda ad alcun modello. Essere coerenti nel modo in cui si creano counterSpecifier valori.

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 e endpoint dell'account di archiviazione aggiungono le metriche e i log alla stessa tabella. Se troppe macchine virtuali scrivono nella stessa partizione di tabella, Azure può limitare le scritture in tale partizione.

L'impostazione eventVolume fa sì che le voci vengano distribuite tra 1 (piccolo), 10 (medio) o 100 (grandi) partizioni. In genere, le partizioni medie sono sufficienti per evitare la limitazione del traffico.

La funzionalità Metriche di Monitoraggio di Azure del portale di Azure usa i dati in questa tabella per produrre grafici o attivare avvisi. Il nome della tabella è la concatenazione delle stringhe seguenti:

  • WADMetrics
  • Oggetto "scheduledTransferPeriod" per i valori aggregati archiviati nella tabella
  • P10DV2S
  • 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 syslogEvents sezione facoltativa controlla la raccolta di eventi di log da syslog. Se la sezione viene omessa, gli eventi syslog non vengono acquisiti affatto.

La syslogEventConfiguration raccolta include una voce per ogni struttura syslog di interesse. Se minSeverity si tratta "NONE" di 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 di log che corrispondono alle restrizioni in vengono pubblicati in syslogEventConfiguration ogni sink elencato. Esempio: "EHforsyslog"
facilityName Nome della struttura syslog, ad esempio "LOG_USER" o "LOG\LOCAL0". Per altre informazioni, vedere la sezione "Facility" della pagina dell'uomo syslog.
minSeverity Livello di gravità syslog, ad esempio "LOG_ERR" o "LOG_INFO". Per altre informazioni, vedere la sezione "Livello" della pagina di gestione syslog. 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 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.

Il comportamento di partizionamento per la tabella è uguale a quello descritto per performanceCounters. Il nome della tabella è la concatenazione delle stringhe seguenti:

  • LinuxSyslog
  • Una data nel formato "AAAAMMGG", che cambia ogni 10 giorni

Gli esempi includono LinuxSyslog20170410 e LinuxSyslog20170609.

perfCfg

La sezione perfCfg è facoltativa. Controlla l'esecuzione di query OMI (Open Management Infrastructure) arbitrarie.

"perfCfg": [
    {
        "namespace": "root/scx",
        "query": "SELECT PercentAvailableMemory, PercentUsedSwap FROM SCX_MemoryStatisticalInformation",
        "table": "LinuxOldMemory",
        "frequency": 300,
        "sinks": ""
    }
]
Elemento Valore
namespace (Facoltativo) Spazio dei nomi OMI in cui 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 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) Elenco delimitato da virgole di nomi di più sink in cui devono essere pubblicati i risultati delle metriche di esempio non elaborati. Nessuna aggregazione di questi esempi non elaborati viene calcolata dall'estensione o dalle metriche di Monitoraggio di Azure.

È "table" necessario specificare o "sinks" entrambi.

fileLogs

La fileLogs sezione 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

L'oggetto fileLogs viene acquisito da un sottocomponente 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 Nome completo del percorso del file di log da controllare 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 omsagent utente deve avere accesso in lettura al percorso del file.
table (Facoltativo) Tabella Archiviazione di Azure in cui vengono scritte nuove righe dalla "coda" del file. La tabella deve trovarsi nell'account di archiviazione designato, come specificato nella configurazione protetta.
sinks (Facoltativo) Elenco delimitato da virgole di nomi di più sink a cui vengono inviate le righe di log.

È "table" necessario specificare o "sinks"o entrambi.

Metriche supportate dal provider Builtin

Il builtin provider di metriche è una fonte di metriche che sono le più interessanti per un ampio set di 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 macchina virtuale a due vCPU, se una vCPU è 100% occupata e l'altra è 100% inattiva, il segnalato PercentIdleTime è 50. Se ogni vCPU è occupato per il 50% per lo stesso periodo, anche il risultato segnalato è 50. In una macchina virtuale a quattro vCPU, quando una vCPU è 100% occupata e le altre sono inattive, il segnalato PercentIdleTime è 75.

Contatore Significato
PercentIdleTime Percentuale di tempo durante la finestra di aggregazione in cui i processori hanno eseguito il ciclo di inattività del kernel
PercentProcessorTime Percentuale di tempo durante l'esecuzione di un thread non inattio
PercentIOWaitTime Percentuale di tempo in attesa del completamento delle operazioni di I/O
PercentInterruptTime Percentuale di time running hardware o software interrupts e DPC (chiamate di procedure posticipate)
PercentUserTime Tempo di inattività durante la finestra di aggregazione, percentuale di tempo trascorso 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)

I primi quattro contatori devono sommare al 100%. Gli ultimi tre contatori sommano anche al 100%. Questi tre contatori suddividono la somma di PercentProcessorTime, PercentIOWaitTimee 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 Memory delle metriche fornisce informazioni sull'uso della memoria, il paging e lo scambio.

Contatore Significato
AvailableMemory Memoria fisica disponibile in MiB
PercentAvailableMemory Memoria fisica disponibile come percentuale della memoria totale
UsedMemory Memoria fisica in uso (MiB)
PercentUsedMemory Memoria fisica in uso come percentuale della memoria totale
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 il file di scambio e il file mappato
AvailableSwap Spazio di swapping inutilizzato (MiB)
PercentAvailableSwap Spazio di scambio inutilizzato come percentuale dello scambio totale
UsedSwap Spazio di swapping in uso (MiB)
PercentUsedSwap Spazio di scambio in uso come percentuale dello scambio totale

Questa classe di metriche ha una sola istanza. L'attributo "condition" non ha impostazioni utili e deve essere omesso.

Metriche Builtin per la classe Rete

La classe Network di metriche fornisce informazioni sull'attività di rete in una singola interfaccia di rete dall'avvio.

LAD non espone le metriche della larghezza di banda. È possibile ottenere queste metriche dalle metriche host.

Contatore Significato
BytesTransmitted Totale byte inviati dall'avvio
BytesReceived Totale byte ricevuti dall'avvio
BytesTotal Totale byte inviati o ricevuti dall'avvio
PacketsTransmitted Totale pacchetti inviati dall'avvio
PacketsReceived Totale pacchetti ricevuti dall'avvio
TotalRxErrors Numero di errori di ricezione dall'avvio
TotalTxErrors Numero di errori di trasmissione dall'avvio
TotalCollisions Numero di collisioni segnalate dalle porte di rete dall'avvio

Anche se viene istanzata la classe Network, LAD non supporta l'acquisizione delle metriche di rete aggregate in tutti i dispositivi di rete. Per ottenere le metriche per un'interfaccia specifica, ad esempio eth0, impostare "condition": "InstanceID=\\"eth0\\"".

Metriche predefinite per la classe File system

La classe File system di metriche fornisce informazioni sull'utilizzo del file system. I valori assoluti e percentuali vengono segnalati come verrebbero visualizzati a un utente ordinario (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 nodi di indice inutilizzati (inodes)
PercentUsedInodes Percentuale di inodi allocati (in uso) sommati in 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 usa il 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 ha più file system, i contatori per tale 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 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 Protected Impostazioni.json e le informazioni di configurazione pubbliche sono in Public Impostazioni.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 macchine virtuali del modello di distribuzione classica, 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 $protectedSettings variabile e le informazioni sulla configurazione pubblica si trovano nella $publicSettings variabile , 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, usare il proprio nome dell'account di archiviazione, il token di firma di accesso condiviso dell'account e i token di firma di accesso condiviso 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 in Protected Impostazioni.json e Public Impostazioni.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.
  • Token di firma di accesso condiviso dell'account corrispondente.
  • Diversi sink (JsonBlob o EventHub con token di firma di accesso condiviso).
{
  "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

Le impostazioni pubbliche causano la lad:

  • Caricare le metriche in percentuale del tempo del processore e le metriche dello spazio su disco usato nella WADMetrics* tabella.
  • Caricare messaggi dalla struttura "user" syslog e dalla gravità "info" nella LinuxSyslog* tabella.
  • Caricare i risultati delle query OMI non elaborati (PercentProcessorTime e PercentIdleTime) nella tabella denominata LinuxCPU .
  • Caricare righe accodate nel file /var/log/myladtestlog nella MyLadTestLog tabella.

In ogni caso, i dati vengono anche caricati:

  • Archiviazione BLOB di Azure. Il nome del JsonBlob contenitore è definito nel sink.
  • Endpoint di Hub eventi, come specificato nel EventHub sink.
{
  "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 grafici e gli avvisi della piattaforma Azure conoscono la resourceId macchina virtuale su cui si sta lavorando. Si prevede di trovare i dati per la macchina virtuale usando la resourceId chiave di ricerca.
  • Se si usa la scalabilità automatica di Azure, nella resourceId configurazione della scalabilità automatica deve corrispondere a quella resourceId usata da LAD.
  • resourceId è integrato nei nomi dei BLOB JSON scritti da LAD.

Visualizzare i dati

Usare il portale di Azure per visualizzare i dati sulle prestazioni o per impostare gli avvisi:

Screenshot che mostra il portale di Azure. La metrica Spazio su disco usato è selezionata. Viene visualizzato il grafico risultante.

I performanceCounters dati vengono sempre archiviati in una tabella Archiviazione di Azure. Le API di Archiviazione di Azure sono disponibili per più linguaggi e piattaforme.

I dati inviati ai JsonBlob sink vengono archiviati in BLOB nell'account di archiviazione denominato nelle impostazioni protette. È possibile utilizzare i dati BLOB usando qualsiasi API Archiviazione BLOB di Azure.

È anche possibile usare questi strumenti dell'interfaccia utente per accedere ai dati in Archiviazione di Azure:

Lo screenshot seguente di una sessione di Archiviazione di Azure Explorer mostra le tabelle e i contenitori Archiviazione di Azure generati da un'estensione LAD 3.0 configurata correttamente in una macchina virtuale di test. L'immagine non corrisponde esattamente alla configurazione di LAD 3.0 di esempio.

Screenshot che mostra Archiviazione di Azure Explorer.

Per altre informazioni su come usare i messaggi pubblicati in un endpoint di Hub eventi, vedere la documentazione di Hub eventi pertinente.

Passaggi successivi