Criar um namespace com o hub de eventos e habilitar a Captura usando um modelo

Este artigo mostra como usar um modelo do Azure Resource Manager que cria um namespace de Hubs de Eventos, com uma instância de hub de eventos e também habilita o recurso Captura no hub de eventos. O artigo descreve como definir quais recursos são implantados e como definir os parâmetros que são especificados quando a implantação é executada. Você pode usar este modelo para suas próprias implantações ou personalizá-lo para atender às suas necessidades.

Este artigo também mostra como especificar que os eventos sejam capturados em Blobs de Armazenamento do Azure ou em um Azure Data Lake Store com base no destino escolhido.

Para saber mais sobre a criação de modelos, consulte Criação de modelos do Azure Resource Manager. Para que as propriedades e a sintaxe JSON sejam usadas no modelo, consulte Tipos de recursos Microsoft.EventHub.

Para saber mais sobre as práticas e os padrões de convenções de nomenclatura de Recursos do Azure, confira Convenções de nomenclatura de funcionalidade do Azure.

Para obter os modelos completos, selecione os seguintes links do GitHub:

Observação

Para verificar os modelos mais recentes, visite a galeria Modelos de Início Rápido do Azure e procure por Hubs de Eventos.

Importante

O Azure Data Lake Storage Gen1 foi descontinuado, por isso não o utilize para capturar dados de eventos. Para saber mais, confira o anúncio oficial. Se você estiver usando o Azure Data Lake Storage Gen1, migre para o Azure Data Lake Storage Gen2. Para obter mais informações, consulte Diretrizes e padrões de migração do Azure Data Lake Storage.

O que você implantará?

Com esse modelo, você implanta um namespace de Hub de Eventos com um hub de eventos e também habilita a Captura dos Hubs de Eventos. A Captura dos Hubs de Eventos permite que você forneça automaticamente os dados de streaming em Hubs de Eventos para o Armazenamento de Blobs do Azure ou Azure Data Lake Store, dentro de um período especificado ou do intervalo de tamanho de sua preferência. Selecione o botão abaixo para habilitar a Captura de Hubs de Eventos no Armazenamento do Azure:

Implantar no Azure

Selecione o botão abaixo para habilitar a Captura de Hubs de Eventos no Azure Data Lake Storage:

Implantar no Azure

Parâmetros

Com o Gerenciador de Recursos do Azure, você define parâmetros para os valores que deseja especificar quando o modelo é implantado. O modelo inclui uma seção chamada Parameters , que contém todos os valores de parâmetro. Você deve definir um parâmetro para os valores que variam de acordo com o projeto que você está implantando ou com o ambiente em que a implantação é realizada. Não defina parâmetros para valores que permanecem sempre os mesmos. Cada valor de parâmetro é usado no modelo para definir os recursos que são implantados.

O modelo define os parâmetros a seguir.

eventHubNamespaceName

O nome do namespace Hubs de Evento a criar.

"eventHubNamespaceName":{
     "type":"string",
     "metadata":{
         "description":"Name of the EventHub namespace"
      }
}

eventHubName

O nome do hub de eventos criado no namespace Hubs de Eventos.

"eventHubName":{
    "type":"string",
    "metadata":{
        "description":"Name of the event hub"
    }
}

messageRetentionInDays

O número de dias para manter as mensagens no hub de eventos.

"messageRetentionInDays":{
    "type":"int",
    "defaultValue": 1,
    "minValue":"1",
    "maxValue":"7",
    "metadata":{
       "description":"How long to retain the data in event hub"
     }
 }

partitionCount

O número de partições a serem criadas no hub de eventos.

"partitionCount":{
    "type":"int",
    "defaultValue":2,
    "minValue":2,
    "maxValue":32,
    "metadata":{
        "description":"Number of partitions chosen"
    }
 }

captureEnabled

Habilite a Captura no hub de eventos.

"captureEnabled":{
    "type":"string",
    "defaultValue":"true",
    "allowedValues": [
    "false",
    "true"],
    "metadata":{
        "description":"Enable or disable the Capture for your event hub"
    }
 }

captureEncodingFormat

O formato de codificação que você especifica para serializar os dados do evento.

"captureEncodingFormat":{
    "type":"string",
    "defaultValue":"Avro",
    "allowedValues":[
    "Avro"],
    "metadata":{
        "description":"The encoding format in which Capture serializes the EventData"
    }
}

captureTime

O intervalo de tempo no qual a Captura de Hubs de Eventos inicia a captura de dados.

"captureTime":{
    "type":"int",
    "defaultValue":300,
    "minValue":60,
    "maxValue":900,
    "metadata":{
         "description":"The time window in seconds for the capture"
    }
}

captureSize

O intervalo de tamanho no qual a Captura inicia a captura de dados.

"captureSize":{
    "type":"int",
    "defaultValue":314572800,
    "minValue":10485760,
    "maxValue":524288000,
    "metadata":{
        "description":"The size window in bytes for capture"
    }
}

captureNameFormat

O formato de nome usado pela Captura de Hubs de Eventos para gravar os arquivos Avro. O formato do nome de captura deve conter os campos {Namespace}, {EventHub}, {PartitionId}, {Year}, {Month}, {Day}, {Hour}, {Minute}, e {Second}. Esses campos podem ser organizados em qualquer ordem, com ou sem delimitadores.

"captureNameFormat": {
      "type": "string",
      "defaultValue": "{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}",
      "metadata": {
        "description": "A Capture Name Format must contain {Namespace}, {EventHub}, {PartitionId}, {Year}, {Month}, {Day}, {Hour}, {Minute} and {Second} fields. These can be arranged in any order with or without delimeters. E.g.  Prod_{EventHub}/{Namespace}\\{PartitionId}_{Year}_{Month}/{Day}/{Hour}/{Minute}/{Second}"
      }
    }

apiVersion

A versão da API do modelo.

 "apiVersion":{
    "type":"string",
    "defaultValue":"2017-04-01",
    "metadata":{
        "description":"ApiVersion used by the template"
    }
 }

Use os parâmetros a seguir se você escolher o Armazenamento do Azure como destino.

destinationStorageAccountResourceId

A Captura exige uma ID de recurso da conta de Armazenamento do Azure para habilitar a captura na sua conta de armazenamento desejada.

 "destinationStorageAccountResourceId":{
    "type":"string",
    "metadata":{
        "description":"Your existing Storage account resource ID where you want the blobs be captured"
    }
 }

blobContainerName

O contêiner de blob no qual deseja capturar os dados de evento.

 "blobContainerName":{
    "type":"string",
    "metadata":{
        "description":"Your existing storage container in which you want the blobs captured"
    }
}

subscriptionId

ID de assinatura para o namespace de Hubs de Eventos e o Azure Data Lake Store. Os dois recursos devem estar na mesma ID de assinatura.

"subscriptionId": {
    "type": "string",
    "metadata": {
        "description": "Subscription ID of both Azure Data Lake Store and Event Hubs namespace"
     }
 }

dataLakeAccountName

O nome do Azure Data Lake Store para os eventos capturados.

"dataLakeAccountName": {
    "type": "string",
    "metadata": {
        "description": "Azure Data Lake Store name"
    }
}

dataLakeFolderPath

O caminho da pasta de destino para os eventos capturados. Esse caminho é a pasta no Data Lake Store para a qual os eventos são enviados durante a operação de captura. Para definir permissões nessa pasta, consulte Usar o Azure Data Lake Store para capturar dados de Hubs de Eventos.

"dataLakeFolderPath": {
    "type": "string",
    "metadata": {
        "description": "Destination capture folder path"
    }
}

O Armazenamento do Azure ou o Azure Data Lake Storage Gen 2 como destino

Cria um namespace do tipo Microsoft.EventHub/Namespaces, com um hub de eventos, e também permite a Captura no Armazenamento de Blobs do Azure ou no Azure Data Lake Storage Gen2.

"resources":[
      {
         "apiVersion":"[variables('ehVersion')]",
         "name":"[parameters('eventHubNamespaceName')]",
         "type":"Microsoft.EventHub/Namespaces",
         "location":"[variables('location')]",
         "sku":{
            "name":"Standard",
            "tier":"Standard"
         },
         "resources": [
    {
      "apiVersion": "2017-04-01",
      "name": "[parameters('eventHubNamespaceName')]",
      "type": "Microsoft.EventHub/Namespaces",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard"
      },
      "properties": {
        "isAutoInflateEnabled": "true",
        "maximumThroughputUnits": "7"
      },
      "resources": [
        {
          "apiVersion": "2017-04-01",
          "name": "[parameters('eventHubName')]",
          "type": "EventHubs",
          "dependsOn": [
            "[concat('Microsoft.EventHub/namespaces/', parameters('eventHubNamespaceName'))]"
          ],
          "properties": {
            "messageRetentionInDays": "[parameters('messageRetentionInDays')]",
            "partitionCount": "[parameters('partitionCount')]",
            "captureDescription": {
              "enabled": "true",
              "skipEmptyArchives": false,
              "encoding": "[parameters('captureEncodingFormat')]",
              "intervalInSeconds": "[parameters('captureTime')]",
              "sizeLimitInBytes": "[parameters('captureSize')]",
              "destination": {
                "name": "EventHubArchive.AzureBlockBlob",
                "properties": {
                  "storageAccountResourceId": "[parameters('destinationStorageAccountResourceId')]",
                  "blobContainer": "[parameters('blobContainerName')]",
                  "archiveNameFormat": "[parameters('captureNameFormat')]"
                }
              }
            }
          }

        }
      ]
    }
  ]

Comandos para executar a implantação

Para implantar os recursos no Azure, você deve estar conectado à sua conta do Azure e usar o módulo do Gerenciador de Recursos do Azure. Para obter informações sobre como usar o Gerenciador de Recursos do Azure com o Azure PowerShell ou CLI do Azure, consulte:

Os exemplos a seguir pressupõem que você já tem um grupo de recursos em sua conta com o nome especificado.

PowerShell

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Implante o modelo para habilitar a captura de Hubs de Eventos no Armazenamento do Azure:

New-AzResourceGroupDeployment -ResourceGroupName \<resource-group-name\> -TemplateFile https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.json

Implante o modelo para habilitar a captura de Hubs de Eventos no Azure Data Lake Store:

New-AzResourceGroupDeployment -ResourceGroupName \<resource-group-name\> -TemplateFile https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.json

CLI do Azure

Armazenamento de Blobs do Azure como destino:

az deployment group create \<my-resource-group\> \<my-deployment-name\> --template-uri [https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.json][]

Azure Data Lake Store como destino:

az deployment group create \<my-resource-group\> \<my-deployment-name\> --template-uri [https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.json][]

Próximas etapas

Você também pode configurar a Captura de Hubs de Eventos por meio do portal do Azure. Para saber mais, confira Habilitar a Captura de Hubs de Eventos usando o portal do Azure.

Você pode saber mais sobre Hubs de Eventos visitando os links abaixo: