Exercício – Implantar recursos de extensão e usar recursos existentes
Agora que você terminou de criar o banco de dados para a sua equipe de Pesquisa e Desenvolvimento usar, você precisa garantir que o acesso ao banco de dados seja registrado em log. Você tem um workspace do Log Analytics existente 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 workspace do Log Analytics. Neste exercício, você atualizará o arquivo Bicep para atender a esses requisitos.
Durante o processo, você vai:
- Criar um espaço de trabalho do Log Analytics.
- Atualize o arquivo Bicep para adicionar configurações de diagnóstico à sua conta Cosmos DB.
- Criar uma conta de armazenamento.
- No arquivo Bicep, atualize as configurações de diagnóstico da conta de armazenamento.
- Implante o modelo e verifique o resultado.
Criar um workspace do Log Analytics
Crie um workspace do Log Analytics para simular a existência de um já criado em 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 workspace do Log Analytics para simular a existência de um já criado em 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
Observação
Neste exemplo, você está implantando o workspace do Log Analytics na mesma assinatura e grupo de recursos que seus outros recursos. Em muitas situações, você armazenará o workspace do Log Analytics em grupos de recursos que não são iguais aos seus recursos de aplicativo. O Bicep ainda pode fazer referência a eles.
Adicionar configurações de diagnóstico ao 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 a fim de coletar o log DataPlaneRequests, que contém informações sobre solicitações ao Azure Cosmos DB.
Agora que você criou seu workspace simulado pré-existente do Log Analytics, você pode referenciá-lo de dentro do modelo Bicep como um recurso existente. Você pode usá-lo como o 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, abaixo das definições de variável 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 recursos, 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 palavra-chave
existing
e que você está omitindo propositalmente outras propriedades que normalmente especificaria se estivesse implantando o workspace do Log Analytics por meio desse modelo Bicep.Abaixo do código que você acabou de incluir, 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 palavra-chave
scope
para indicar ao Bicep que o recurso deve ser anexado à conta do Azure Cosmos DB. O código também usa a propriedadeid
do recurso existentelogAnalyticsWorkspace
de modo que o Azure saiba 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 será exclusivo. O nome deve estar em letras minúsculas, conter 24 caracteres ou menos e não ter espaços ou caracteres especiais. Anote esse nome para usá-lo novamente mais tarde.
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 será exclusivo. O nome deve estar em letras minúsculas, conter 24 caracteres ou menos e não ter espaços ou caracteres especiais.
New-AzStorageAccount `
-Name {storageaccountname} `
-Location eastus `
-SkuName Standard_LRS
Adicionar configurações de diagnóstico à conta de armazenamento
Sua equipe de Pesquisa e Desenvolvimento deseja que você registre todas as solicitações bem-sucedidas na conta de armazenamento criada por ela. Você decide usar a integração do Armazenamento do Microsoft 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 blobs na conta de armazenamento da equipe de P&D.
Você precisa atualizar seu modelo Bicep para fazer referência à conta de armazenamento que você criou 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ável, adicione a seguinte definição de variável:
var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
Na parte inferior do arquivo, nas 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 esses dois recursos usam a palavra-chave
existing
.Na parte inferior do arquivo, abaixo da definição da 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 conjunto
scope
definido como o recurso existente aninhado. O Bicep entende que ele deve anexar o recurso de extensão ao recurso filhoblobServices
.Depois de terminar, seu modelo Bicep completo deve ser semelhante ao seguinte:
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-11-15' = { name: cosmosDBAccountName location: location properties: { databaseAccountOfferType: 'Standard' locations: [ { locationName: location } ] } } resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2024-11-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 } ] } }
Salve as alterações no arquivo.
Implantar o modelo no Azure
No terminal, execute o seguinte comando da CLI do Azure. Substitua {storageaccountname}
pelo nome da conta de armazenamento que você criou 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 que você criou anteriormente neste exercício.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
Verifique sua implantação
No navegador, retorne ao portal do Azure. Vá para o grupo de recursos. Você ainda vê uma implantação bem-sucedida, pois a implantação usou o mesmo nome da primeira implantação.
Selecione o link 1 com êxito.
Selecione a implantação chamada principal e escolha Detalhes da implantação para expandir a lista de recursos implantados.
Há dois recursos listados com um tipo de
Microsoft.Insights/diagnosticSettings
. Esses recursos são os recursos de extensão implantados. Um deles 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 corretas.Selecione a conta de recurso do Azure Cosmos DB. O portal é aberto para a conta do Azure Cosmos DB.
Na caixa de Pesquisa na parte superior esquerda, digite Configurações de diagnóstico e clique no item de menu Configurações de diagnóstico.
O portal do Azure pode solicitar que você habilite o suporte de consulta de texto completo para log. Você não precisa dele para este exercício, então selecione Agora não.
Observe que há uma configuração de diagnóstico chamada route-logs-to-log-analytics, que está configurada para rotear os logs para o workspace do ToyLogs.
Se quiser, você também poderá verificar se a conta de armazenamento tem uma configuração de diagnóstico semelhante habilitada para o armazenamento de blobs.