Oefening: extensiebronnen implementeren en bestaande resources gebruiken

Voltooid

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:

  1. 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'
    
  2. 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.

  3. 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 de id eigenschap van de logAnalyticsWorkspace 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.

  1. Voeg boven aan het bestand main.bicep , onder de parameterdefinities, de volgende parameterdefinitie toe:

    param storageAccountName string
    
  2. Voeg onder de variabeledefinities de volgende variabeledefinitie toe:

    var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
    
  3. 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.

  4. 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 de blobServices 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
          }
        ]
      }
    }
    
  5. 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

  1. 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.

  2. Selecteer de koppeling 1 Geslaagd .

  3. Selecteer de implementatie met de naam Main en selecteer vervolgens Implementatiedetails om de lijst met geïmplementeerde resources uit te vouwen.

    Screenshot of the Azure portal interface for the specific deployment, with the Azure Cosmos DB resources as well as two resources with type Microsoft.Insights/diagnosticSettings.

    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.

  4. Selecteer de Azure Cosmos DB-accountresource. De portal wordt geopend voor het Azure Cosmos DB-account.

    Screenshot of the Azure portal interface for the specific deployment, with the Azure Cosmos DB account highlighted.

  5. Voer in het zoekvak linksboven diagnostische instellingen in en selecteer de menuopdracht Diagnostische instellingen.

    Screenshot of the Azure portal interface for the Azure Cosmos DB account, showing the search field with 'Diagnostic settings' entered and the 'Diagnostic settings' menu item highlighted.

  6. 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.

    Screenshot of the Azure portal interface for the Azure Cosmos DB account showing Diagnostic settings page with prompt to enable full-text query.

  7. 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 .

    Screenshot of the Azure portal interface for the Azure Cosmos DB account, showing the diagnostic settings.

    Als u wilt, kunt u ook controleren of voor het opslagaccount een vergelijkbare diagnostische instelling is ingeschakeld voor blobopslag.