Criar um espaço de nomes com o hub de eventos e ativar a captura utilizando um modelo

Este artigo mostra como utiliza um modelo do Azure Resource Manager que cria um espaço de nomes de Hubs de Eventos com uma instância de hubs de eventos e também ativa a funcionalidade Captura no hub de eventos. O artigo descreve como definir quais os recursos que são implementados e como definir os parâmetros que são especificados quando a implementação é executada. Pode utilizar este modelo para as suas próprias implementações ou personalizá-lo para satisfazer as suas necessidades.

Este artigo mostra também como especificar que eventos são capturados nos Azure Storage Blobs ou num Azure Data Lake Store, com base no destino que escolher.

Para obter mais informações sobre a criação de modelos, consulte Authoring Azure Resource Manager templates (Criar modelos do Azure Resource Manager). Para obter a sintaxe JSON e as propriedades a serem usadas em um modelo, consulte Tipos de recursos Microsoft.EventHub.

Para obter mais informações sobre padrões e práticas das convenções de nomenclatura de Recursos do Azure, veja Azure Resources naming conventions (Convenções de nomenclatura de Recursos do Azure).

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

Nota

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

Importante

O Azure Data Lake Storage Gen1 foi desativado, portanto, não o use para capturar dados de eventos. Para obter mais informações, veja 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 Armazenamento do Azure Data Lake.

O que irá implementar?

Com esTe modelo, implementa um espaço de nomes de Hubs de Eventos com o hub de um evento e também ativa a Captura de Hubs de Eventos. A Captura de Hubs de Eventos permite a transmissão automática de dados nos Hubs de Eventos para um armazenamento de Blobs ou do Azure do Azure Data Lake Store, dentro de um tempo ou intervalo de tamanho especificado. Selecione o botão a seguir para habilitar a Captura de Hubs de Eventos no Armazenamento do Azure:

Implementar no Azure

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

Implementar no Azure

Parâmetros

Com o Azure Resource Manager, define parâmetros para os valores que pretende especificar quando o modelo é implementado. O modelo inclui uma secção denominada Parameters que contém todos os valores de parâmetro. Você deve definir um parâmetro para esses valores que variam com base no projeto que você está implantando ou com base no ambiente em que você está implantando. Não defina parâmetros para valores que permanecem sempre os mesmos. Cada valor de parâmetro é utilizado no modelo para definir os recursos que são implementados.

O modelo define os seguintes parâmetros.

eventHubNamespaceName

O nome do espaço de nomes dos Hubs de Eventos que serão criados.

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

eventHubName

O nome do hub de eventos no espaço de nomes dos 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 criar no hub de eventos.

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

captureEnabled

Ative 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 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 dos 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 utilizado pela Captura de Hubs de Eventos para escrever os ficheiros Avro. O formato de nome de captura deve conter {Namespace}, {EventHub}, , {Year}{PartitionId}, {Month}, {Day}, {Hour}, {Minute}e {Second} campos. Estes 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"
    }
 }

Utilize os seguintes parâmetros se escolher o Armazenamento do Azure como destino.

destinationStorageAccountResourceId

A Captura exige um ID de recurso da conta de Armazenamento do Azure para ativar a captura na conta de Armazenamento que pretender.

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

blobContainerName

O contentor de blobs onde pretende capturar os dados do seu evento.

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

subscriptionId

ID de subscrição para o espaço de nomes do Hub de Eventos e o Azure Data Lake Store. Ambos estes recursos tem de estar sob o mesmo ID de subscrição.

"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 Repositório Data Lake para a qual os eventos são enviados por push durante a operação de captura. Para definir permissões nesta pasta, veja Use Azure Data Lake Store to capture data from Event Hubs (Utilizar o Azure Data Lake Store para capturar dados dos Hubs de Eventos).

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

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

Cria um namespace do tipo Microsoft.EventHub/Namespaces, com um hub de eventos e também habilita a Captura para Armazenamento de Blobs do Azure ou o 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 implementação

Para implementar os recursos no Azure, deve ter a sessão iniciada na sua conta do Azure e deve utilizar o módulo do Azure Resource Manager. Para saber mais sobre como utilizar o Azure Resource Manager com o Azure PowerShell ou com a CLI do Azure, veja:

Os exemplos seguintes partem do princípio em como já tem um grupo de recursos na sua conta com o nome especificado.

PowerShell

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Implemente o modelo para ativar 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

Implemente o modelo para ativar 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 Blob 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óximos passos

Também pode configurar a Captura de Hubs de Eventos através do portal do Azure. Para mais informações, consulte Enable Event Hubs Capture using the Azure portal (Ativar Captura de Hubs de Eventos no portal do Azure).

Pode saber mais sobre os Hubs de Eventos ao aceder às seguintes ligações: