Exercício - Implantar recursos de extensão e usar recursos existentes
Agora que você terminou de criar o banco de dados para sua equipe de pesquisa e desenvolvimento usar, você precisa garantir que o acesso ao banco de dados seja registrado. Você tem um espaço de trabalho existente do Log Analytics para o qual deseja que esses logs sejam enviados. Você também precisa enviar os logs da conta de armazenamento da equipe de P&D para o mesmo espaço de trabalho do Log Analytics. Neste exercício, você atualiza seu arquivo Bicep para atender a esses requisitos.
Durante o processo, você:
- Criar uma área de trabalho do Log Analytics.
- Atualize seu arquivo Bicep para adicionar configurações de diagnóstico à sua conta do Cosmos DB.
- Criar uma conta de armazenamento.
- No arquivo Bicep, atualize as configurações de diagnóstico para a conta de armazenamento.
- Implante seu modelo e verifique o resultado.
Criar uma área de trabalho do Log Analytics
Crie um espaço de trabalho do Log Analytics para simular ter um já criado na sua organização. Use a CLI do Azure em vez do Bicep.
No terminal, execute o seguinte comando da CLI do Azure:
az monitor log-analytics workspace create \
--workspace-name ToyLogs \
--location eastus
Crie um espaço de trabalho do Log Analytics para simular ter um já criado na sua organização. Use o Azure PowerShell em vez do Bicep.
No terminal, execute o seguinte comando do Azure PowerShell:
New-AzOperationalInsightsWorkspace `
-Name ToyLogs `
-Location eastus
Nota
Neste exemplo, você está implantando o espaço de trabalho do Log Analytics no mesmo grupo de assinaturas e recursos que seus outros recursos. Em muitas situações, você armazenará espaços de trabalho do Log Analytics em grupos de recursos que não são iguais aos recursos do aplicativo. O Bíceps ainda pode fazer referência a eles.
Adicionar configurações de diagnóstico para o Azure Cosmos DB
Sua equipe de P&D precisa registrar todas as solicitações na conta do Azure Cosmos DB. Você decide usar a integração do Azure Monitor para o Azure Cosmos DB para coletar o log DataPlaneRequests, que contém informações sobre solicitações ao Azure Cosmos DB.
Agora que você criou seu espaço de trabalho simulado pré-existente do Log Analytics, pode fazer referência a ele de dentro do seu modelo Bicep como um recurso existente. Você pode usá-lo como destino para os logs do Azure Cosmos DB.
Para adicionar configurações de diagnóstico, use as seguintes etapas:
No Visual Studio Code, abra o arquivo main.bicep no editor e, em seguida, abaixo das definições de variáveis existentes, adicione o seguinte código:
var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
Na parte inferior do arquivo, abaixo das definições de recurso, adicione o seguinte código:
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName }
Observe que essa definição de recurso usa a
existing
palavra-chave e que você está omitindo propositalmente outras propriedades que normalmente especificaria se estivesse implantando o espaço de trabalho do Log Analytics por meio desse modelo Bicep.Abaixo do código que você acabou de adicionar, adicione o seguinte código:
resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } }
Observe que esse código implanta um recurso de extensão. Ele usa a
scope
palavra-chave para informar ao Bicep que o recurso deve ser anexado à conta do Azure Cosmos DB. O código também usa aid
propriedade do recurso existente para que ologAnalyticsWorkspace
Azure entenda para onde enviar os logs do Azure Cosmos DB.
Criar uma conta de armazenamento para documentos de design de brinquedos
Crie uma conta de armazenamento do Azure para simular que sua equipe de P&D já criou uma em sua organização. Use a CLI do Azure em vez do Bicep.
No terminal, execute o seguinte comando da CLI do Azure. Substitua {storageaccountname}
por um nome que provavelmente seja exclusivo. O nome deve ser todo minúsculo, conter 24 ou menos caracteres e não ter espaços ou caracteres especiais. Anote o nome para uso posterior.
az storage account create \
--name {storageaccountname} \
--location eastus
Crie uma conta de armazenamento do Azure para simular que sua equipe de P&D já criou uma em sua organização. Use o Azure PowerShell em vez do Bicep.
No terminal, execute o seguinte comando do Azure PowerShell. Substitua {storageaccountname}
por um nome que provavelmente seja exclusivo. O nome deve ser todo minúsculo, conter 24 ou menos caracteres e não ter espaços ou caracteres especiais.
New-AzStorageAccount `
-Name {storageaccountname} `
-Location eastus `
-SkuName Standard_LRS
Adicionar configurações de diagnóstico para a conta de armazenamento
Sua equipe de pesquisa e desenvolvimento deseja que você registre todas as solicitações bem-sucedidas na conta de armazenamento que eles criaram. Você decide usar a integração do Armazenamento do Azure com os logs do Azure Monitor para atingir essa meta. Você decide registrar todas as atividades de leitura, gravação e exclusão no armazenamento de blob na conta de armazenamento da equipe de P&D.
Você precisa atualizar seu modelo Bicep para fazer referência à conta de armazenamento criada na etapa anterior.
Perto da parte superior do arquivo main.bicep , abaixo das definições de parâmetro, adicione a seguinte definição de parâmetro:
param storageAccountName string
Nas definições de variáveis, adicione a seguinte definição de variável:
var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
Na parte inferior do arquivo, sob as definições de recurso, adicione a seguinte definição:
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } }
Observe que ambos os recursos usam a
existing
palavra-chave.Na parte inferior do arquivo, abaixo da definição de conta de armazenamento que você adicionou na etapa anterior, adicione o seguinte código:
resource storageAccountBlobDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: storageAccount::blobService name: storageAccountBlobDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'StorageRead' enabled: true } { category: 'StorageWrite' enabled: true } { category: 'StorageDelete' enabled: true } ] } }
Observe que esse recurso de extensão tem seu
scope
conjunto para o recurso existente aninhado. O Bicep entende que deve anexar o recurso de extensão aoblobServices
recurso filho.Depois de terminar, o modelo completo do Bicep deve ter esta aparência:
param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}' param cosmosDBDatabaseThroughput int = 400 param location string = resourceGroup().location param storageAccountName string var cosmosDBDatabaseName = 'FlightTests' var cosmosDBContainerName = 'FlightTests' var cosmosDBContainerPartitionKey = '/droneId' var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics' var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics' resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = { name: cosmosDBAccountName location: location properties: { databaseAccountOfferType: 'Standard' locations: [ { locationName: location } ] } } resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2024-05-15' = { parent: cosmosDBAccount name: cosmosDBDatabaseName properties: { resource: { id: cosmosDBDatabaseName } options: { throughput: cosmosDBDatabaseThroughput } } resource container 'containers' = { name: cosmosDBContainerName properties: { resource: { id: cosmosDBContainerName partitionKey: { kind: 'Hash' paths: [ cosmosDBContainerPartitionKey ] } } options: {} } } } resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName } resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } } resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } } resource storageAccountBlobDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: storageAccount::blobService name: storageAccountBlobDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'StorageRead' enabled: true } { category: 'StorageWrite' enabled: true } { category: 'StorageDelete' enabled: true } ] } }
Guarde as alterações ao ficheiro.
Implementar o modelo no Azure
No terminal, execute o seguinte comando da CLI do Azure. Substitua {storageaccountname}
pelo nome da conta de armazenamento criada anteriormente neste exercício.
az deployment group create \
--template-file main.bicep \
--parameters storageAccountName={storageaccountname}
No terminal, execute o seguinte comando do Azure PowerShell. Substitua {storageaccountname}
pelo nome da conta de armazenamento criada anteriormente neste exercício.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
Verificar a implementação
No navegador, volte para o portal do Azure. Vá para o seu grupo de recursos. Você ainda vê uma implantação bem-sucedida, porque a implantação usou o mesmo nome da primeira implantação.
Selecione o link 1 Êxito .
Selecione a implantação chamada principal e, em seguida, selecione Detalhes da implantação para expandir a lista de recursos implantados.
Observe que há dois recursos listados com um tipo de
Microsoft.Insights/diagnosticSettings
. Esses recursos são os recursos de extensão que você implantou. Um dos recursos foi anexado à conta de armazenamento e o outro foi anexado à conta do Azure Cosmos DB. Agora você pode verificar se as configurações de diagnóstico do Azure Cosmos DB estão configuradas corretamente.Selecione o recurso de conta do Azure Cosmos DB. O portal é aberto para a conta do Azure Cosmos DB.
Na caixa Pesquisar no canto superior esquerdo, digite Configurações de diagnóstico e selecione o item de menu Configurações de diagnóstico.
O portal do Azure pode solicitar que você habilite o suporte a consultas de texto completo para log. Você não precisa dele para este exercício, então selecione Não agora.
Observe que há uma configuração de diagnóstico chamada route-logs-to-log-analytics, que é configurada para rotear os logs para o espaço de trabalho ToyLogs .
Se desejar, você também pode verificar se a conta de armazenamento tem uma configuração de diagnóstico semelhante habilitada para armazenamento de blob.