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 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 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
Observação
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 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 do Azure Cosmos DB, para coletar o registo DataPlaneRequests, que contém informações sobre solicitações feitas ao Azure Cosmos DB.
Agora que tu criaste o teu espaço de trabalho pré-existente simulado do Log Analytics, podes referenciá-lo de dentro do teu 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 ficheiro 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 palavra-chave
existing
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 palavra-chave
scope
para informar ao Bicep que o recurso deve ser anexado à conta do Azure Cosmos DB. O código também usa a propriedadeid
dologAnalyticsWorkspace
recurso existente para que o 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 a sua equipa de&D já tenha criado uma na 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 a sua equipa de R&D já criou uma na 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 registrar todas as atividades de leitura, gravação e exclusão no armazenamento de blob na conta de armazenamento da equipe de R&D.
Você precisa atualizar seu modelo Bicep para fazer referência à conta de armazenamento criada 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 entende que deve associar o recurso de extensão ao recurso filhoblobServices
.Salve as alterações no arquivo.
Verifique seu arquivo Bicep
Depois de concluir todas as alterações anteriores, o seu arquivo principal main.bicep deve ficar como neste 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
}
]
}
}
Caso contrário, 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 criada 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 criada 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. 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 do tipo
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 da conta do Azure Cosmos DB. O portal é aberto para a conta do Azure Cosmos DB.
Na caixa de pesquisa 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 pedir que habilite o suporte a consultas de texto completo para o registo. Você não precisa disso 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 está 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.