Övning – Distribuera tilläggsresurser och använda befintliga resurser

Slutförd

Nu när du har skapat databasen som ditt R&D-team ska använda måste du se till att åtkomsten till databasen loggas. Du har en befintlig Log Analytics-arbetsyta som du vill att loggarna ska skickas till. Du måste också skicka loggarna från R&D-teamets lagringskonto till samma Log Analytics-arbetsyta. I den här övningen uppdaterar du Bicep-filen för att uppfylla dessa krav.

Under processen gör du följande:

  • Skapa en Log Analytics-arbetsyta.
  • Uppdatera Bicep-filen för att lägga till diagnostikinställningar i ditt Cosmos DB-konto.
  • Skapa ett lagringskonto.
  • Uppdatera diagnostikinställningarna för lagringskontot i Bicep-filen.
  • Distribuera mallen och verifiera resultatet.

Skapa en Log Analytics-arbetsyta

Skapa en Log Analytics-arbetsyta för att simulera att en redan har skapats i din organisation. Använd Azure CLI i stället för Bicep.

Kör följande Azure CLI-kommando i terminalen:

az monitor log-analytics workspace create \
  --workspace-name ToyLogs \
  --location eastus

Skapa en Log Analytics-arbetsyta för att simulera att en redan har skapats i din organisation. Använd Azure PowerShell i stället för Bicep.

Kör följande Azure PowerShell-kommando i terminalen:

New-AzOperationalInsightsWorkspace `
  -Name ToyLogs `
  -Location eastus

Kommentar

I det här exemplet distribuerar du Log Analytics-arbetsytan till samma prenumeration och resursgrupp som dina andra resurser. I många situationer lagrar du Log Analytics-arbetsytor i resursgrupper som inte är samma som dina programresurser. Bicep kan fortfarande referera till dem.

Lägga till diagnostikinställningar för Azure Cosmos DB

Ditt R&D-team måste logga alla begäranden till Azure Cosmos DB-kontot. Du bestämmer dig för att använda Azure Monitor-integreringen för Azure Cosmos DB för att samla in DataPlaneRequests-loggen, som innehåller information om begäranden till Azure Cosmos DB.

Nu när du har skapat din simulerade befintliga Log Analytics-arbetsyta kan du referera till den från din Bicep-mall som en befintlig resurs. Du kan använda den som mål för Azure Cosmos DB-loggarna.

Använd följande steg för att lägga till diagnostikinställningar:

  1. I Visual Studio Code öppnar du filen main.bicep i redigeraren och lägger sedan till följande kod under de befintliga variabeldefinitionerna:

    var logAnalyticsWorkspaceName = 'ToyLogs'
    var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
    
  2. Lägg till följande kod längst ned i filen under resursdefinitionerna:

    resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-03-01-preview' existing = {
      name: logAnalyticsWorkspaceName
    }
    

    Observera att den här resursdefinitionen använder nyckelordet existing och att du avsiktligt utelämnar andra egenskaper som du normalt skulle ange om du distribuerade Log Analytics-arbetsytan via den här Bicep-mallen.

  3. Lägg till följande kod under den kod som du nyss lade till:

    resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2017-05-01-preview' = {
      scope: cosmosDBAccount
      name: cosmosDBAccountDiagnosticSettingsName
      properties: {
        workspaceId: logAnalyticsWorkspace.id
        logs: [
          {
            category: 'DataPlaneRequests'
            enabled: true
          }
        ]
      }
    }
    

    Observera att den här koden distribuerar en tilläggsresurs. Det använder nyckelordet scope för att tala om för Bicep att resursen ska kopplas till Azure Cosmos DB-kontot. Koden använder id också egenskapen för den befintliga resursen logAnalyticsWorkspace så att Azure förstår var azure Cosmos DB-loggarna ska skickas.

Skapa ett lagringskonto för dokument för leksaksdesign

Skapa ett Azure Storage-konto för att simulera att ditt R&D-team redan har skapat ett i din organisation. Använd Azure CLI i stället för Bicep.

Kör följande Azure CLI-kommando i terminalen. Ersätt {storageaccountname} med ett namn som sannolikt är unikt. Namnet måste vara gemener, innehålla 24 eller färre tecken och har inga blanksteg eller specialtecken. Anteckna namnet för senare användning.

az storage account create \
  --name {storageaccountname} \
  --location eastus

Skapa ett Azure Storage-konto för att simulera att ditt R&D-team redan har skapat ett i din organisation. Använd Azure PowerShell i stället för Bicep.

Kör följande Azure PowerShell-kommando i terminalen. Ersätt {storageaccountname} med ett namn som sannolikt är unikt. Namnet måste vara gemener, innehålla 24 eller färre tecken och har inga blanksteg eller specialtecken.

New-AzStorageAccount `
  -Name {storageaccountname} `
  -Location eastus `
  -SkuName Standard_LRS

Lägga till diagnostikinställningar för lagringskonto

Ditt R&D-team vill att du loggar alla lyckade begäranden till det lagringskonto som de skapade. Du bestämmer dig för att använda Azure Storage-integreringen med Azure Monitor-loggar för att uppnå det här målet. Du bestämmer dig för att logga alla läs-, skriv- och borttagningsaktiviteter i Blob Storage på R&D-teamets lagringskonto.

Du måste uppdatera Bicep-mallen för att referera till lagringskontot som du skapade i föregående steg.

  1. Lägg till följande parameterdefinitioner längst upp i filen main.bicep under parameterdefinitionerna:

    param storageAccountName string
    
  2. Under variabeldefinitionerna lägger du till följande variabeldefinition:

    var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
    
  3. Lägg till följande definition under resursdefinitionerna längst ned i filen:

    resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' existing = {
      name: storageAccountName
    
      resource blobService 'blobServices' existing = {
        name: 'default'
      }
    }
    

    Observera att båda dessa resurser använder nyckelordet existing .

  4. Lägg till följande kod längst ned i filen under definitionen av lagringskontot som du lade till i föregående steg:

    resource storageAccountBlobDiagnostics 'Microsoft.Insights/diagnosticSettings@2017-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
          }
        ]
      }
    }
    

    Observera att den här tilläggsresursen har angetts scope till den kapslade befintliga resursen. Bicep förstår att den ska koppla tilläggsresursen till den underordnade resursen blobServices .

    När du är klar bör din fullständiga Bicep-mall se ut så här:

    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@2020-04-01' = {
      name: cosmosDBAccountName
      location: location
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
      }
    }
    
    resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2020-04-01' = {
      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@2020-03-01-preview' existing = {
      name: logAnalyticsWorkspaceName
    }
    
    resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2017-05-01-preview' = {
      scope: cosmosDBAccount
      name: cosmosDBAccountDiagnosticSettingsName
      properties: {
        workspaceId: logAnalyticsWorkspace.id
        logs: [
          {
            category: 'DataPlaneRequests'
            enabled: true
          }
        ]
      }
    }
    
    resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' existing = {
      name: storageAccountName
    
      resource blobService 'blobServices' existing = {
        name: 'default'
      }
    }
    
    resource storageAccountBlobDiagnostics 'Microsoft.Insights/diagnosticSettings@2017-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. Spara ändringarna i filen.

Distribuera mallen till Azure

Kör följande Azure CLI-kommando i terminalen. Ersätt {storageaccountname} med namnet på lagringskontot som du skapade tidigare i den här övningen.

az deployment group create \
  --template-file main.bicep \
  --parameters storageAccountName={storageaccountname}

Kör följande Azure PowerShell-kommando i terminalen. Ersätt {storageaccountname} med namnet på lagringskontot som du skapade tidigare i den här övningen.

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -storageAccountName {storageaccountname}

Kontrollera distributionen

  1. Gå tillbaka till Azure-portalen i webbläsaren. Gå till resursgruppen. Du ser fortfarande en lyckad distribution eftersom distributionen använde samma namn som den första distributionen.

  2. Välj länken 1 Lyckades .

  3. Välj den distribution som kallas main och välj sedan Distributionsinformation för att expandera listan över distribuerade resurser.

    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.

    Observera att det finns två resurser i listan med en typ av Microsoft.Insights/diagnosticSettings. Dessa resurser är de tilläggsresurser som du har distribuerat. En av resurserna kopplades till lagringskontot och den andra kopplades till Azure Cosmos DB-kontot. Nu kan du kontrollera att diagnostikinställningarna för Azure Cosmos DB är korrekt konfigurerade.

  4. Välj Azure Cosmos DB-kontoresursen. Portalen öppnas för Azure Cosmos DB-kontot.

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

  5. I rutan Sök längst upp till vänster anger du Diagnostikinställningar och väljer menyalternativet Diagnostikinställningar .

    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. Azure-portalen kan uppmana dig att aktivera fulltextfrågestöd för loggning. Du behöver det inte för den här övningen, så välj Inte nu.

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

  7. Observera att det finns en diagnostikinställning med namnet route-logs-to-log-analytics, som är konfigurerad för att dirigera loggarna till ToyLogs-arbetsytan .

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

    Om du vill kan du också kontrollera att lagringskontot har en liknande diagnostikinställning aktiverad för bloblagring.