Exercício - Implantar recursos de extensão e usar recursos existentes
Agora que terminaste de criar o banco de dados para a tua equipa de&D usar, precisas garantir que o acesso ao banco de dados seja monitorado. 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 R&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ê:
- Crie um espaço de trabalho do Log Analytics.
- Atualize seu arquivo Bicep para adicionar configurações de diagnóstico à sua conta do Azure Cosmos DB.
- Crie 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 um espaço de trabalho do Log Analytics
Crie um espaço de trabalho do Log Analytics para simular ter um existente 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 existente 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
Observação
Neste exemplo, você implanta 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 os mesmos daqueles em que os recursos do aplicativo estão. O Bíceps ainda pode fazer referência a eles.
Adicionar configurações de diagnóstico para o Azure Cosmos DB
Sua equipe de R&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 preexistente 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. 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 palavra-chave
existing
e que você está omitindo intencionalmente 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 palavra-chave
scope
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 existentelogAnalyticsWorkspace
para 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 uma que sua equipe de P&D já criou 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. Você precisará dele mais tarde.
az storage account create \
--name {storageaccountname} \
--location eastus
Crie uma conta de armazenamento do Azure para simular uma que sua equipe de P&D já criou 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 R&D 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 registar todas as atividades de leitura, escrita e eliminação no armazenamento de blobs na conta de armazenamento da equipa de P&D.
Você precisa atualizar seu modelo Bicep para fazer referência à conta de armazenamento que você criou na etapa anterior.
Perto do topo do arquivo main.bicep , abaixo das definições de parâmetros, 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 palavra-chave
existing
.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
definido para o recurso existente aninhado. Bicep sabe que deve anexar o recurso de extensão ao recurso filhoblobServices
.Salve as alterações no arquivo.
Verifique seu arquivo Bicep
Depois de concluir as alterações anteriores, o arquivo main.bicep deve se parecer com este exemplo:
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
}
]
}
}
Se não tiver a mesma aparência, copie o exemplo ou ajuste o modelo para corresponder ao exemplo.
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 \
--name main \
--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 `
-Name main `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
Verifique a sua implementação
No navegador, volte para o portal do Azure. Vá para o seu grupo de recursos. Como a implantação usou o mesmo nome da primeira implantação, você ainda verá uma implantação bem-sucedida.
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 que têm um tipo de
Microsoft.Insights/diagnosticSettings
. Esses recursos são os recursos de extensão que você implantou. Um dos recursos é anexado à conta de armazenamento e o outro é 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 da conta do Azure Cosmos DB. O portal exibe a conta do Azure Cosmos DB.
Na caixa Pesquisar no canto superior esquerdo, digite Configurações de diagnóstico e selecione Configurações de diagnóstico.
O portal do Azure pode pedir que habilite o suporte a consultas de texto completo para o registo. 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 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.