Ćwiczenie — wdrażanie zasobów rozszerzenia i używanie istniejących zasobów
Po zakończeniu tworzenia bazy danych dla zespołu języka R&D do użycia należy upewnić się, że dostęp do bazy danych jest rejestrowany. Masz istniejący obszar roboczy usługi Log Analytics, do którego mają być wysyłane te dzienniki. Należy również wysłać dzienniki z konta magazynu zespołu usługi R&D do tego samego obszaru roboczego usługi Log Analytics. W tym ćwiczeniu zaktualizujesz plik Bicep, aby spełnić te wymagania.
Podczas tego procesu wykonasz następujące czynności:
- Utwórz obszar roboczy usługi Log Analytics.
- Zaktualizuj plik Bicep, aby dodać ustawienia diagnostyczne do konta usługi Cosmos DB.
- Utwórz konto magazynowe.
- W pliku Bicep zaktualizuj ustawienia diagnostyczne dla twojego konta pamięci masowej.
- Wdróż szablon i sprawdź wynik.
Tworzenie obszaru roboczego usługi Log Analytics
Utwórz obszar roboczy usługi Log Analytics, aby symulować utworzenie go już w organizacji. Użyj interfejsu wiersza polecenia platformy Azure zamiast Bicep.
W terminalu uruchom następujące polecenie Azure CLI:
az monitor log-analytics workspace create \
--workspace-name ToyLogs \
--location eastus
Utwórz obszar roboczy usługi Log Analytics, aby symulować utworzenie go już w organizacji. Użyj programu Azure PowerShell zamiast Bicep.
W terminalu uruchom następujące polecenie programu Azure PowerShell:
New-AzOperationalInsightsWorkspace `
-Name ToyLogs `
-Location eastus
Notatka
W tym przykładzie wdrażasz obszar roboczy usługi Log Analytics w tej samej subskrypcji i grupie zasobów co inne zasoby. W wielu sytuacjach obszary robocze usługi Log Analytics będą przechowywane w grupach zasobów, które nie są takie same jak zasoby aplikacji. Bicep nadal może się do nich odwoływać.
Dodawanie ustawień diagnostycznych dla usługi Azure Cosmos DB
Zespół języka R&D musi rejestrować wszystkie żądania na koncie usługi Azure Cosmos DB. Postanawiasz użyć integracji Azure Monitor dla usługi Azure Cosmos DB do zbierania dziennika DataPlaneRequests, który zawiera informacje o żądaniach do usługi Azure Cosmos DB.
Po utworzeniu symulowanego wstępnie istniejącego obszaru roboczego usługi Log Analytics możesz odwoływać się do niego z poziomu szablonu Bicep jako istniejącego zasobu. Można go użyć jako miejsca docelowego dzienników usługi Azure Cosmos DB.
Aby dodać ustawienia diagnostyki, wykonaj następujące kroki:
W programie Visual Studio Code otwórz plik main.bicep w edytorze, a następnie poniżej istniejących definicji zmiennych dodaj następujący kod:
var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
W dolnej części pliku poniżej definicji zasobów dodaj następujący kod:
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName }
Zwróć uwagę, że ta definicja zasobu używa słowa kluczowego
existing
i że celowo pomijasz inne właściwości, które zwykle należy określić, jeśli wdrażasz obszar roboczy usługi Log Analytics za pomocą tego szablonu Bicep.Poniżej właśnie dodanego kodu dodaj następujący kod:
resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } }
Zwróć uwagę, że ten kod wdraża zasób rozszerzenia. Używa słowa kluczowego
scope
, aby poinformować Bicep, że zasób powinien być dołączony do konta usługi Azure Cosmos DB. Kod używa również właściwościid
istniejącego zasobulogAnalyticsWorkspace
, aby platforma Azure zrozumiała, gdzie wysyłać dzienniki usługi Azure Cosmos DB.
Utwórz konto magazynowe dla dokumentów projektów zabawek
Utwórz konto usługi Azure Storage, aby zasymulować już utworzone konto zespołu języka R&D w organizacji. Użyj interfejsu wiersza polecenia platformy Azure zamiast Bicep.
W terminalu uruchom następujące polecenie Azure CLI. Zastąp {storageaccountname}
nazwą, która prawdopodobnie będzie unikatowa. Nazwa musi zawierać tylko małe litery, zawierać 24 lub mniej znaków i nie ma spacji ani znaków specjalnych. Zanotuj nazwę do późniejszego użycia.
az storage account create \
--name {storageaccountname} \
--location eastus
Utwórz konto usługi Azure Storage, aby zasymulować już utworzone konto zespołu języka R&D w organizacji. Użyj programu Azure PowerShell zamiast Bicep.
W terminalu uruchom następujące polecenie programu Azure PowerShell. Zastąp {storageaccountname}
nazwą, która prawdopodobnie będzie unikatowa. Nazwa musi zawierać tylko małe litery, zawierać 24 lub mniej znaków i nie ma spacji ani znaków specjalnych.
New-AzStorageAccount `
-Name {storageaccountname} `
-Location eastus `
-SkuName Standard_LRS
Dodaj ustawienia diagnostyczne dla konta przechowywania
Twój zespół badawczo-rozwojowy&D chce, abyś logował wszystkie pomyślne żądania na koncie magazynu, które utworzyli. Postanawiasz użyć integracji usługi Azure Storage z dziennikami usługi Azure Monitor, aby osiągnąć ten cel. Decydujesz się rejestrować wszystkie działania odczytu, zapisu i usuwania w magazynie obiektów blob na koncie magazynu zespołu usługi R&D.
Musisz zaktualizować szablon Bicep, aby odwoływać się do konta magazynu utworzonego w poprzednim kroku.
W górnej części pliku main.bicep poniżej definicji parametrów dodaj następującą definicję parametru:
param storageAccountName string
W obszarze definicji zmiennych dodaj następującą definicję zmiennej:
var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
W dolnej części pliku w obszarze definicji zasobów dodaj następującą definicję:
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } }
Zwróć uwagę, że oba te zasoby używają słowa kluczowego
existing
.W dolnej części pliku, poniżej definicji konta przechowywania, którą dodałeś w poprzednim kroku, dodaj następujący kod:
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 } ] } }
Zwróć uwagę, że zasób tego rozszerzenia ma ustawiony swój
scope
na istniejący zagnieżdżony zasób. Bicep wie, że powinien dołączyć zasób rozszerzenia do zasobu podrzędnegoblobServices
.Zapisz zmiany w pliku.
Zweryfikuj plik Bicep
Po zakończeniu wszystkich powyższych zmian plik main.bicep powinien wyglądać następująco:
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
}
]
}
}
Jeśli tak nie jest, skopiuj przykład lub dostosuj szablon tak, aby był zgodny z przykładem.
Wdrażanie szablonu na platformie Azure
W wierszu poleceń uruchom następujące polecenie Azure CLI. Zastąp {storageaccountname}
nazwą konta storage utworzonego wcześniej w tym ćwiczeniu.
az deployment group create \
--name main \
--template-file main.bicep \
--parameters storageAccountName={storageaccountname}
W terminalu uruchom następujące polecenie programu Azure PowerShell. Zastąp {storageaccountname}
nazwą konta magazynowego utworzonego wcześniej w tym ćwiczeniu.
New-AzResourceGroupDeployment `
-Name main `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
Sprawdź swoje wdrożenie
W przeglądarce wróć do witryny Azure Portal. Przejdź do grupy zasobów. Nadal widzisz jedno pomyślne wdrożenie, ponieważ wdrożenie używało tej samej nazwy co pierwsze wdrożenie.
Wybierz link 1 Powiodło się.
Wybierz wdrożenie o nazwie main, a następnie wybierz pozycję Szczegóły wdrożenia, aby rozwinąć listę wdrożonych zasobów.
Zwróć uwagę, że istnieją dwa zasoby wymienione z typem
Microsoft.Insights/diagnosticSettings
. Te zasoby to zasoby rozszerzeniowe, które wdrożyłeś. Jeden z zasobów został powiązany z kontem magazynowym, a drugi został powiązany z kontem usługi Azure Cosmos DB. Teraz możesz sprawdzić, czy ustawienia diagnostyczne usługi Azure Cosmos DB są poprawnie skonfigurowane.Wybierz zasób konta usługi Azure Cosmos DB. Portal zostanie otwarty na koncie usługi Azure Cosmos DB.
W lewym górnym rogu w polu wyszukiwania wprowadź Ustawienia diagnostycznei wybierz pozycję menu Ustawienia diagnostyczne.
Witryna Azure Portal może monitować o włączenie obsługi zapytań pełnotekstowych na potrzeby rejestrowania. Nie potrzebujesz tego w tym ćwiczeniu, więc wybierz opcję Nie teraz.
Zwróć uwagę, że istnieje ustawienie diagnostyczne o nazwie route-logs-to-log-analytics, które jest skonfigurowane do kierowania dzienników do obszaru roboczego ToyLogs.
Jeśli chcesz, możesz również sprawdzić, czy konto magazynu ma włączoną podobną konfigurację diagnostyczną dla magazynu obiektów blob.