Oefening: extensiebronnen implementeren en bestaande resources gebruiken
Nu u klaar bent met het maken van de database voor uw R&D-team, moet u ervoor zorgen dat de toegang tot de database wordt vastgelegd. U hebt een bestaande Log Analytics-werkruimte waarnaar u deze logboeken wilt verzenden. U moet de logboeken ook verzenden vanuit het opslagaccount van het R&D-team naar dezelfde Log Analytics-werkruimte. In deze oefening werkt u uw Bicep-bestand bij om aan deze vereisten te voldoen.
Tijdens het proces gaat u het volgende doen:
- Maak een Log Analytics-werkruimte.
- Werk uw Bicep-bestand bij om diagnostische instellingen toe te voegen aan uw Cosmos DB-account.
- Een opslagaccount maken.
- Werk in uw Bicep-bestand de diagnostische instellingen voor het opslagaccount bij.
- Implementeer uw sjabloon en controleer het resultaat.
Een Log Analytics-werkruimte maken
Maak een Log Analytics-werkruimte om te simuleren dat er al een is gemaakt in uw organisatie. Gebruik de Azure CLI in plaats van Bicep.
Voer in de terminal de volgende Azure CLI-opdracht uit:
az monitor log-analytics workspace create \
--workspace-name ToyLogs \
--location eastus
Maak een Log Analytics-werkruimte om te simuleren dat er al een is gemaakt in uw organisatie. Gebruik Azure PowerShell in plaats van Bicep.
Voer in de terminal de volgende Azure PowerShell-opdracht uit:
New-AzOperationalInsightsWorkspace `
-Name ToyLogs `
-Location eastus
Notitie
In dit voorbeeld implementeert u de Log Analytics-werkruimte in hetzelfde abonnement en dezelfde resourcegroep als uw andere resources. In veel situaties slaat u Log Analytics-werkruimten op in resourcegroepen die niet hetzelfde zijn als uw toepassingsresources. Bicep kan er nog steeds naar verwijzen.
Diagnostische instellingen toevoegen voor Azure Cosmos DB
Uw R&D-team moet alle aanvragen registreren bij het Azure Cosmos DB-account. U besluit de Integratie van Azure Monitor voor Azure Cosmos DB te gebruiken om het DataPlaneRequests-logboek te verzamelen, dat informatie bevat over aanvragen voor Azure Cosmos DB.
Nu u uw gesimuleerde vooraf bestaande Log Analytics-werkruimte hebt gemaakt, kunt u ernaar verwijzen vanuit uw Bicep-sjabloon als een bestaande resource. U kunt deze gebruiken als de bestemming voor de Azure Cosmos DB-logboeken.
Gebruik de volgende stappen om diagnostische instellingen toe te voegen:
Open in Visual Studio Code het bestand main.bicep in de editor en voeg onder de bestaande variabeledefinities de volgende code toe:
var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
Voeg onder aan het bestand, onder de resourcedefinities, de volgende code toe:
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName }
U ziet dat deze resourcedefinitie gebruikmaakt van het
existing
trefwoord en dat u andere eigenschappen weglaat die u normaal gesproken zou opgeven als u de Log Analytics-werkruimte via deze Bicep-sjabloon implementeert.Voeg onder de code die u zojuist hebt toegevoegd de volgende code toe:
resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } }
U ziet dat met deze code een extensieresource wordt geïmplementeerd. Er wordt gebruikgemaakt van het
scope
trefwoord om Bicep te laten weten dat de resource moet worden gekoppeld aan het Azure Cosmos DB-account. De code maakt ook gebruik van deid
eigenschap van delogAnalyticsWorkspace
bestaande resource, zodat Azure begrijpt waar de Azure Cosmos DB-logboeken moeten worden verzonden.
Een opslagaccount maken voor speelgoedontwerpdocumenten
Maak een Azure-opslagaccount om te simuleren dat uw R&D-team er al een heeft gemaakt in uw organisatie. Gebruik de Azure CLI in plaats van Bicep.
Voer in de terminal de volgende Azure CLI-opdracht uit. Vervang door {storageaccountname}
een naam die waarschijnlijk uniek is. De naam moet allemaal kleine letters bevatten, 24 of minder tekens bevatten en geen spaties of speciale tekens hebben. Noteer de naam voor later gebruik.
az storage account create \
--name {storageaccountname} \
--location eastus
Maak een Azure-opslagaccount om te simuleren dat uw R&D-team er al een heeft gemaakt in uw organisatie. Gebruik Azure PowerShell in plaats van Bicep.
Voer in de terminal de volgende Azure PowerShell-opdracht uit. Vervang door {storageaccountname}
een naam die waarschijnlijk uniek is. De naam moet allemaal kleine letters bevatten, 24 of minder tekens bevatten en geen spaties of speciale tekens hebben.
New-AzStorageAccount `
-Name {storageaccountname} `
-Location eastus `
-SkuName Standard_LRS
Diagnostische instellingen voor opslagaccount toevoegen
Uw R&D-team wil dat u alle geslaagde aanvragen kunt registreren bij het opslagaccount dat ze hebben gemaakt. U besluit de Azure Storage-integratie met Azure Monitor-logboeken te gebruiken om dit doel te bereiken. U besluit alle activiteiten voor lezen, schrijven en verwijderen in blobopslag in het R&D-team te registreren.
U moet uw Bicep-sjabloon bijwerken om te verwijzen naar het opslagaccount dat u in de vorige stap hebt gemaakt.
Voeg boven aan het bestand main.bicep , onder de parameterdefinities, de volgende parameterdefinitie toe:
param storageAccountName string
Voeg onder de variabeledefinities de volgende variabeledefinitie toe:
var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
Voeg onder aan het bestand, onder de resourcedefinities, de volgende definitie toe:
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } }
U ziet dat beide resources gebruikmaken van het
existing
trefwoord.Voeg onder aan het bestand, onder de definitie van het opslagaccount dat u in de vorige stap hebt toegevoegd, de volgende code toe:
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 } ] } }
U ziet dat deze extensieresource is
scope
ingesteld op de geneste bestaande resource. Bicep begrijpt dat de extensieresource moet worden gekoppeld aan deblobServices
onderliggende resource.Nadat u klaar bent, ziet de volledige Bicep-sjabloon er als volgt uit:
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 } ] } }
Sla de wijzigingen in het bestand op.
De sjabloon implementeren in Azure
Voer in de terminal de volgende Azure CLI-opdracht uit. Vervang {storageaccountname}
door de naam van het opslagaccount dat u eerder in deze oefening hebt gemaakt.
az deployment group create \
--template-file main.bicep \
--parameters storageAccountName={storageaccountname}
Voer in de terminal de volgende Azure PowerShell-opdracht uit. Vervang {storageaccountname}
door de naam van het opslagaccount dat u eerder in deze oefening hebt gemaakt.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
Uw implementatie controleren
Ga in uw browser terug naar Azure Portal. Ga naar uw resourcegroep. U ziet nog steeds één geslaagde implementatie, omdat de implementatie dezelfde naam heeft gebruikt als de eerste implementatie.
Selecteer de koppeling 1 Geslaagd .
Selecteer de implementatie met de naam Main en selecteer vervolgens Implementatiedetails om de lijst met geïmplementeerde resources uit te vouwen.
U ziet dat er twee resources worden vermeld met een type
Microsoft.Insights/diagnosticSettings
. Deze resources zijn de extensiebronnen die u hebt geïmplementeerd. Een van de resources is gekoppeld aan het opslagaccount en de andere is gekoppeld aan het Azure Cosmos DB-account. U kunt nu controleren of de diagnostische instellingen van Azure Cosmos DB correct zijn geconfigureerd.Selecteer de Azure Cosmos DB-accountresource. De portal wordt geopend voor het Azure Cosmos DB-account.
Voer in het zoekvak linksboven diagnostische instellingen in en selecteer de menuopdracht Diagnostische instellingen.
In Azure Portal wordt u mogelijk gevraagd om ondersteuning voor volledige tekstquery's in te schakelen voor logboekregistratie. U hebt deze niet nodig voor deze oefening, dus selecteer Nu niet.
U ziet dat er een diagnostische instelling met de naam route-logs-to-log-analytics is, die is geconfigureerd voor het routeren van de logboeken naar de werkruimte ToyLogs .
Als u wilt, kunt u ook controleren of voor het opslagaccount een vergelijkbare diagnostische instelling is ingeschakeld voor blobopslag.