Archiviare i log di diagnostica di AzureArchive Azure Diagnostic Logs

Questo articolo illustra come è possibile usare il portale di Azure, i cmdlet di PowerShell, l'interfaccia della riga di comando o l'API REST per archiviare i log di diagnostica di Azure in un account di archiviazione.In this article, we show how you can use the Azure portal, PowerShell Cmdlets, CLI, or REST API to archive your Azure diagnostic logs in a storage account. Questa opzione è utile per conservare i log di diagnostica con criteri di conservazione facoltativi per il controllo, l'analisi statica o il backup.This option is useful if you would like to retain your diagnostic logs with an optional retention policy for audit, static analysis, or backup. L'account di archiviazione non deve trovarsi nella stessa sottoscrizione della risorsa che emette log, purché l'utente che configura l'impostazione abbia un accesso RBAC appropriato a entrambe le sottoscrizioni.The storage account does not have to be in the same subscription as the resource emitting logs as long as the user who configures the setting has appropriate RBAC access to both subscriptions.

PrerequisitiPrerequisites

Prima di iniziare, è necessario creare un account di archiviazione in cui archiviare i log di diagnostica.Before you begin, you need to create a storage account to which you can archive your diagnostic logs. È consigliabile non usare un account di archiviazione esistente in cui sono archiviati altri dati non di monitoraggio, per poter controllare meglio l'accesso ai dati di monitoraggio.We highly recommend that you do not use an existing storage account that has other, non-monitoring data stored in it so that you can better control access to monitoring data. Se tuttavia in un account di archiviazione si archiviano anche il log attività e le metriche di diagnostica, può avere senso usare tale account di archiviazione anche per i log di diagnostica per tenere tutti i dati di monitoraggio in una posizione centrale.However, if you are also archiving your Activity Log and diagnostic metrics to a storage account, it may make sense to use that storage account for your diagnostic logs as well to keep all monitoring data in a central location. L'account di archiviazione usato deve essere un account di archiviazione per utilizzo generico, non un account di archiviazione BLOB.The storage account you use must be a general purpose storage account, not a blob storage account.

Impostazioni di diagnosticaDiagnostic settings

Per archiviare i log di diagnostica usando uno dei metodi indicati di seguito, definire una impostazione di diagnostica per una risorsa specifica.To archive your diagnostic logs using any of the methods below, you set a diagnostic setting for a particular resource. Un'impostazione di diagnostica per una risorsa definisce le categorie dei log e di dati di metrica inviati a una destinazione (account di archiviazione, spazio dei nomi di Hub eventi o Log Analytics).A diagnostic setting for a resource defines the categories of logs and metric data sent to a destination (storage account, Event Hubs namespace, or Log Analytics). Definisce anche i criteri di conservazione (numero di giorni di conservazione) per gli eventi di ogni categoria di log e dati di metrica archiviati in un account di archiviazione.It also defines the retention policy (number of days to retain) for events of each log category and metric data stored in a storage account. Se un criterio di conservazione è impostato su zero, gli eventi per tale categoria di log vengono archiviati per un periodo illimitato (per sempre).If a retention policy is set to zero, events for that log category are stored indefinitely (that is to say, forever). Diversamente, un criterio di conservazione può essere qualsiasi numero di giorni compreso tra 1 e 2147483647.A retention policy can otherwise be any number of days between 1 and 2147483647. Altre informazioni sulle impostazioni di diagnostica sono disponibili qui.You can read more about diagnostic settings here. I criteri di conservazione vengono applicati su base giornaliera. Al termine della giornata, i log relativi a tale giornata non rientrano quindi più nei criteri di conservazione e verranno eliminati.Retention policies are applied per-day, so at the end of a day (UTC), logs from the day that is now beyond the retention policy will be deleted. Se, ad esempio, è presente un criterio di conservazione di un giorno, all'inizio della giornata attuale vengono eliminati i log relativi alla giornata precedente a ieri.For example, if you had a retention policy of one day, at the beginning of the day today the logs from the day before yesterday would be deleted

Archiviare i log di diagnostica tramite il portaleArchive diagnostic logs using the portal

  1. Nel portale passare a Monitoraggio di Azure e fare clic su Impostazioni di diagnosticaIn the portal, navigate to Azure Monitor and click on Diagnostic Settings

    Sezione relativa al monitoraggio di Monitoraggio di Azure

  2. Facoltativamente filtrare l'elenco in base al tipo di risorsa o al gruppo di risorse, quindi fare clic sulla risorsa per cui si vuole specificare un'impostazione di diagnostica.Optionally filter the list by resource group or resource type, then click on the resource for which you would like to set a diagnostic setting.

  3. Se non esiste un'impostazione sulla risorsa selezionata, viene chiesto di creare un'impostazione.If no settings exist on the resource you have selected, you are prompted to create a setting. Fare clic su "Attiva diagnostica".Click "Turn on diagnostics."

    Aggiungi impostazione di diagnostica - Nessuna impostazione esistente

    Se esistono già impostazioni sulla risorsa, verrò visualizzato un elenco di impostazioni già configurate per questa risorsa.If there are existing settings on the resource, you will see a list of settings already configured on this resource. Fare clic su "Add diagnostic setting" (Aggiungi impostazione di diagnostica).Click "Add diagnostic setting."

    "Add diagnostic setting" (Aggiungi impostazione di diagnostica) - impostazioni esistenti

  4. Assegnare un nome all'impostazione, selezionare la casella per Esporta in Account di archiviazione, quindi selezionare un account di archiviazione.Give your setting a name and check the box for Export to Storage Account, then select a storage account. Facoltativamente, impostare un numero di giorni per la conservazione di questi log usando i dispositivi di scorrimento Conservazione (giorni) .Optionally, set a number of days to retain these logs by using the Retention (days) sliders. Se il valore di conservazione è zero giorni, i log vengono conservati all'infinito.A retention of zero days stores the logs indefinitely.

    "Add diagnostic setting" (Aggiungi impostazione di diagnostica) - impostazioni esistenti

  5. Fare clic su Salva.Click Save.

Dopo qualche istante, la nuova impostazione viene visualizzata nell'elenco delle impostazioni per questa risorsa e i log di diagnostica vengono archiviati in tale account di archiviazione non appena vengono generati nuovi dati di eventi.After a few moments, the new setting appears in your list of settings for this resource, and diagnostic logs are archived to that storage account as soon as new event data is generated.

Archiviare i log di diagnostica tramite Azure PowerShellArchive diagnostic logs via Azure PowerShell

Set-AzureRmDiagnosticSetting -ResourceId /subscriptions/s1id1234-5679-0123-4567-890123456789/resourceGroups/testresourcegroup/providers/Microsoft.Network/networkSecurityGroups/testnsg -StorageAccountId /subscriptions/s1id1234-5679-0123-4567-890123456789/resourceGroups/myrg1/providers/Microsoft.Storage/storageAccounts/my_storage -Categories networksecuritygroupevent,networksecuritygrouprulecounter -Enabled $true -RetentionEnabled $true -RetentionInDays 90
ProprietàProperty ObbligatorioRequired DescrizioneDescription
ResourceIdResourceId Yes ID risorsa della risorsa in cui si vuole definire un'impostazione di diagnostica.Resource ID of the resource on which you want to set a diagnostic setting.
StorageAccountIdStorageAccountId NoNo ID risorsa dell'account di archiviazione in cui devono essere salvati i log di diagnostica.Resource ID of the Storage Account to which Diagnostic Logs should be saved.
CategorieCategories NoNo Elenco delimitato da virgole di categorie di log da abilitare.Comma-separated list of log categories to enable.
EnabledEnabled Yes Valore booleano che indica se la diagnostica viene abilitata o disabilitata per questa risorsa.Boolean indicating whether diagnostics are enabled or disabled on this resource.
RetentionEnabledRetentionEnabled NoNo Valore booleano che indica se un criterio di conservazione è abilitato per questa risorsa.Boolean indicating if a retention policy are enabled on this resource.
RetentionInDaysRetentionInDays NoNo Numero di giorni per cui gli eventi devono essere conservati, compreso tra 1 e 2147483647.Number of days for which events should be retained between 1 and 2147483647. Se il valore è zero, i log vengono conservati all'infinito.A value of zero stores the logs indefinitely.

Archiviare i log di diagnostica tramite l'interfaccia della riga di comando multipiattaformaArchive diagnostic logs via the Cross-Platform CLI

azure insights diagnostic set --resourceId /subscriptions/s1id1234-5679-0123-4567-890123456789/resourceGroups/testresourcegroup/providers/Microsoft.Network/networkSecurityGroups/testnsg --storageId /subscriptions/s1id1234-5679-0123-4567-890123456789/resourceGroups/myrg1/providers/Microsoft.Storage/storageAccounts/my_storage –categories networksecuritygroupevent,networksecuritygrouprulecounter --enabled true
ProprietàProperty ObbligatorioRequired DescrizioneDescription
ResourceIdresourceId Yes ID risorsa della risorsa in cui si vuole definire un'impostazione di diagnostica.Resource ID of the resource on which you want to set a diagnostic setting.
storageIdstorageId NoNo ID risorsa dell'account di archiviazione in cui devono essere salvati i log di diagnostica.Resource ID of the Storage Account to which diagnostic logs should be saved.
Categoriecategories NoNo Elenco delimitato da virgole di categorie di log da abilitare.Comma-separated list of log categories to enable.
Enabledenabled Yes Valore booleano che indica se la diagnostica viene abilitata o disabilitata per questa risorsa.Boolean indicating whether diagnostics are enabled or disabled on this resource.

Archiviare i log di diagnostica tramite l'API RESTArchive diagnostic logs via the REST API

Vedere questo documento per informazioni su come è possibile configurare un'impostazione di diagnostica usando l'API REST di Monitoraggio di Azure.See this document for information on how you can set up a diagnostic setting using the Azure Monitor REST API.

Schema dei log di diagnostica nell'account di archiviazioneSchema of diagnostic logs in the storage account

Dopo aver configurato l'archiviazione, viene creato un contenitore di archiviazione nell'account di archiviazione non appena si verifica un evento in una delle categorie di log abilitate.Once you have set up archival, a storage container is created in the storage account as soon as an event occurs in one of the log categories you have enabled. I BLOB nel contenitore seguono lo stesso formato nei log di diagnostica e nel log attività.The blobs within the container follow the same format across Diagnostic Logs and the Activity Log. La struttura di questi BLOB è:The structure of these blobs is:

insights-logs-{log category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/RESOURCEGROUPS/{nome gruppo risorse}/PROVIDERS/{nome provider risorse}/{tipo risorsa}/{nome risorsa}/y={anno numerico a quattro cifre}/m={mese numerico a due cifre}/d={giorno numerico a due cifre}/h={ora in formato 24 ore a due cifre}/m=00/PT1H.jsoninsights-logs-{log category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/RESOURCEGROUPS/{resource group name}/PROVIDERS/{resource provider name}/{resource type}/{resource name}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

O più semplicemente,Or, more simply,

insights-logs-{nome categoria log}/resourceId=/{ID risorsa}/y={anno numerico a quattro cifre}/m={mese numerico a due cifre}/d={giorno numerico a due cifre}/h={ora in formato 24 ore a due cifre}/m=00/PT1H.jsoninsights-logs-{log category name}/resourceId=/{resource Id}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

Ad esempio, un nome BLOB potrebbe essere:For example, a blob name might be:

insights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/s1id1234-5679-0123-4567-890123456789/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUP/TESTNSG/y=2016/m=08/d=22/h=18/m=00/PT1H.jsoninsights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/s1id1234-5679-0123-4567-890123456789/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUP/TESTNSG/y=2016/m=08/d=22/h=18/m=00/PT1H.json

Ogni BLOB PT1H.json contiene un BLOB JSON di eventi che si sono verificati nell'ora specificata nell'URL BLOB (ad esempio, h=12).Each PT1H.json blob contains a JSON blob of events that occurred within the hour specified in the blob URL (for example, h=12). Durante l'ora attuale, gli eventi vengono aggiunti al file PT1H.json man mano che si verificano.During the present hour, events are appended to the PT1H.json file as they occur. Il valore dei minuti (m=00) è sempre 00, perché gli eventi del log di diagnostica vengono sempre suddivisi in singoli BLOB per ogni ora.The minute value (m=00) is always 00, since diagnostic log events are broken into individual blobs per hour.

Nel file PT1H.json ogni evento viene archiviato nella matrice "records", con questo formato:Within the PT1H.json file, each event is stored in the “records” array, following this format:

{
    "records": [
        {
            "time": "2016-07-01T00:00:37.2040000Z",
            "systemId": "46cdbb41-cb9c-4f3d-a5b4-1d458d827ff1",
            "category": "NetworkSecurityGroupRuleCounter",
            "resourceId": "/SUBSCRIPTIONS/s1id1234-5679-0123-4567-890123456789/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/TESTNSG",
            "operationName": "NetworkSecurityGroupCounters",
            "properties": {
                "vnetResourceGuid": "{12345678-9012-3456-7890-123456789012}",
                "subnetPrefix": "10.3.0.0/24",
                "macAddress": "000123456789",
                "ruleName": "/subscriptions/ s1id1234-5679-0123-4567-890123456789/resourceGroups/testresourcegroup/providers/Microsoft.Network/networkSecurityGroups/testnsg/securityRules/default-allow-rdp",
                "direction": "In",
                "type": "allow",
                "matchedConnections": 1988
            }
        }
    ]
}
Nome dell'elementoElement name DescrizioneDescription
timetime Timestamp del momento in cui l'evento è stato generato dal servizio di Azure che ha elaborato la richiesta corrispondente all'evento.Timestamp when the event was generated by the Azure service processing the request corresponding the event.
ResourceIdresourceId ID risorsa della risorsa interessata.Resource ID of the impacted resource.
operationNameoperationName Nome dell'operazione.Name of the operation.
categorycategory Categoria di log dell'evento.Log category of the event.
propertiesproperties Set di coppie <Key, Value> ad esempio Dictionary, che descrivono i dettagli dell'evento.Set of <Key, Value> pairs (i.e. Dictionary) describing the details of the event.

Nota

Le proprietà e l'utilizzo di tali proprietà possono variare a seconda della risorsa.The properties and usage of those properties can vary depending on the resource.

Passaggi successiviNext steps