Abilitare automaticamente le impostazioni di diagnostica durante la creazione di risorse con un modello di Resource ManagerAutomatically enable Diagnostic Settings at resource creation using a Resource Manager template

Questo articolo illustra come usare un modello di Azure Resource Manager per configurare le impostazioni di diagnostica in una risorsa durante la sua creazione.In this article we show how you can use an Azure Resource Manager template to configure Diagnostic Settings on a resource when it is created. Ciò consente di iniziare automaticamente a trasmettere le metriche e i log di diagnostica a Hub eventi, di memorizzarli in un account di archiviazione o di inviarli a Log Analytics quando viene creata una risorsa.This enables you to automatically start streaming your Diagnostic Logs and metrics to Event Hubs, archiving them in a Storage Account, or sending them to Log Analytics when a resource is created.

Il metodo da usare per abilitare i log di diagnostica tramite un modello di Resource Manager dipende dal tipo di risorsa.The method for enabling Diagnostic Logs using a Resource Manager template depends on the resource type.

Questo articolo illustra come configurare la diagnostica con entrambi i metodi.In this article we describe how to configure diagnostics using either method.

I passaggi di base sono i seguenti:The basic steps are as follows:

  1. Creare un modello come file JSON che descrive come creare la risorsa e abilitare la diagnostica.Create a template as a JSON file that describes how to create the resource and enable diagnostics.
  2. Distribuire il modello con un metodo di distribuzione qualsiasi.Deploy the template using any deployment method.

Di seguito viene fornito un esempio del file JSON modello da generare per le risorse di calcolo e non di calcolo.Below we give an example of the template JSON file you need to generate for non-Compute and Compute resources.

Modello per risorse non di calcoloNon-Compute resource template

Per le risorse non di calcolo, è necessario eseguire due operazioni:For non-Compute resources, you will need to do two things:

  1. Aggiungere parametri al BLOB dei parametri per il nome dell'account di archiviazione, l'ID dell'area regola del bus di servizio e/o l'ID dell'area di lavoro di Log Analytics OMS, abilitando la memorizzazione dei log di diagnostica in un account di archiviazione, la trasmissione dei log a Hub eventi e/o l'invio dei log a Log Analytics.Add parameters to the parameters blob for the storage account name, service bus rule ID, and/or OMS Log Analytics workspace ID (enabling archival of Diagnostic Logs in a storage account, streaming of logs to Event Hubs, and/or sending logs to Log Analytics).

    "storageAccountName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Storage Account in which Diagnostic Logs should be saved."
      }
    },
    "serviceBusRuleId": {
      "type": "string",
      "metadata": {
        "description": "Resource ID of the Service Bus Rule for the Service Bus Namespace in which the Event Hub should be created or streamed to."
      }
    },
    "workspaceId":{
      "type": "string",
      "metadata": {
        "description": "Azure Resource ID of the Log Analytics workspace for the Log Analytics workspace to which logs will be sent."
      }
    }
    
  2. Nella matrice di risorse della risorsa per cui si vuole abilitare i log di diagnostica, aggiungere una risorsa di tipo [resource namespace]/providers/diagnosticSettings.In the resources array of the resource for which you want to enable Diagnostic Logs, add a resource of type [resource namespace]/providers/diagnosticSettings.

    "resources": [
      {
        "type": "providers/diagnosticSettings",
        "name": "Microsoft.Insights/service",
        "dependsOn": [
          "[/*resource Id for which Diagnostic Logs will be enabled>*/]"
        ],
        "apiVersion": "2015-07-01",
        "properties": {
          "storageAccountId": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
          "serviceBusRuleId": "[parameters('serviceBusRuleId')]",
          "workspaceId": "[parameters('workspaceId')]",
          "logs": [ 
            {
              "category": "/* log category name */",
              "enabled": true,
              "retentionPolicy": {
                "days": 0,
                "enabled": false
              }
            }
          ],
          "metrics": [
            {
              "timeGrain": "PT1M",
              "enabled": true,
              "retentionPolicy": {
                "enabled": false,
                "days": 0
              }
            }
          ]
        }
      }
    ]
    

Il BLOB delle proprietà per l'impostazione di diagnostica è nel formato descritto in questo articolo.The properties blob for the Diagnostic Setting follows the format described in this article. L'aggiunta della proprietà metrics consentirà anche di inviare le metriche delle risorse a questi stessi output, purché la risorsa supporti le metriche di Monitoraggio di Azure.Adding the metrics property will enable you to also send resource metrics to these same outputs, provided that the resource supports Azure Monitor metrics.

Di seguito è riportato un esempio completo che crea un'app per la logica e abilita la trasmissione agli hub eventi e la memorizzazione in un account di archiviazione.Here is a full example that creates a Logic App and turns on streaming to Event Hubs and storage in a storage account.


{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "logicAppName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Logic App that will be created."
      }
    },
    "testUri": {
      "type": "string",
      "defaultValue": "http://azure.microsoft.com/en-us/status/feed/"
    },
    "storageAccountName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Storage Account in which Diagnostic Logs should be saved."
      }
    },
    "serviceBusRuleId": {
      "type": "string",
      "metadata": {
        "description": "Service Bus Rule Id for the Service Bus Namespace in which the Event Hub should be created or streamed to."
      }
    },
    "workspaceId": {
      "type": "string",
      "metadata": {
        "description": "Log Analytics workspace ID for the Log Analytics workspace to which logs will be sent."
      }
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Logic/workflows",
      "name": "[parameters('logicAppName')]",
      "apiVersion": "2016-06-01",
      "location": "[resourceGroup().location]",
      "properties": {
        "definition": {
          "$schema": "http://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
            "testURI": {
              "type": "string",
              "defaultValue": "[parameters('testUri')]"
            }
          },
          "triggers": {
            "recurrence": {
              "type": "recurrence",
              "recurrence": {
                "frequency": "Hour",
                "interval": 1
              }
            }
          },
          "actions": {
            "http": {
              "type": "Http",
              "inputs": {
                "method": "GET",
                "uri": "@parameters('testUri')"
              },
              "runAfter": {}
            }
          },
          "outputs": {}
        },
        "parameters": {}
      },
      "resources": [
        {
          "type": "providers/diagnosticSettings",
          "name": "Microsoft.Insights/service",
          "dependsOn": [
            "[resourceId('Microsoft.Logic/workflows', parameters('logicAppName'))]"
          ],
          "apiVersion": "2015-07-01",
          "properties": {
            "storageAccountId": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
            "serviceBusRuleId": "[parameters('serviceBusRuleId')]",
            "workspaceId": "[parameters('workspaceId')]",
            "logs": [
              {
                "category": "WorkflowRuntime",
                "enabled": true,
                "retentionPolicy": {
                  "days": 0,
                  "enabled": false
                }
              }
            ],
            "metrics": [
              {
                "timeGrain": "PT1M",
                "enabled": true,
                "retentionPolicy": {
                  "enabled": false,
                  "days": 0
                }
              }
            ]
          }
        }
      ],
      "dependsOn": []
    }
  ]
}

Modello per risorse di calcoloCompute resource template

Per abilitare la diagnostica su una risorsa di calcolo, ad esempio una macchina virtuale o un cluster di Service Fabric, seguire questa procedura:To enable diagnostics on a Compute resource, for example a Virtual Machine or Service Fabric cluster, you need to:

  1. Aggiungere l'estensione Diagnostica di Azure alla definizione della risorsa macchina virtuale.Add the Azure Diagnostics extension to the VM resource definition.
  2. Specificare un account di archiviazione e/o un hub eventi come parametro.Specify a storage account and/or event hub as a parameter.
  3. Aggiungere il contenuto del file XML WADCfg nella proprietà XMLCfg, usando le sequenze di escape corrette per i caratteri XML.Add the contents of your WADCfg XML file into the XMLCfg property, escaping all XML characters properly.

Avviso

Quest'ultimo passaggio può risultare difficile.This last step can be tricky to get right. vedere questo articolo .See this article for an example that splits the Diagnostics Configuration Schema into variables that are escaped and formatted correctly.

L'intero processo, esempi compresi, viene descritto in questo documento.The entire process, including samples, is described in this document.

Passaggi successiviNext Steps