Ćwiczenie — wdrażanie zasobów rozszerzenia i używanie istniejących zasobów

Ukończone

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:

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

  3. 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ści id istniejącego zasobu logAnalyticsWorkspace, 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.

  1. W górnej części pliku main.bicep poniżej definicji parametrów dodaj następującą definicję parametru:

    param storageAccountName string
    
  2. W obszarze definicji zmiennych dodaj następującą definicję zmiennej:

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

  4. 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ędnego blobServices.

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

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

  2. Wybierz link 1 Powiodło się.

  3. Wybierz wdrożenie o nazwie main, a następnie wybierz pozycję Szczegóły wdrożenia, aby rozwinąć listę wdrożonych zasobów.

    Zrzut ekranu przedstawiający interfejs witryny Azure Portal dla określonego wdrożenia z zasobami usługi Azure Cosmos DB, a także dwoma zasobami z typem Microsoft.Insights/diagnosticSettings.

    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.

  4. Wybierz zasób konta usługi Azure Cosmos DB. Portal zostanie otwarty na koncie usługi Azure Cosmos DB.

    Zrzut ekranu przedstawiający interfejs witryny Azure Portal dla określonego wdrożenia z wyróżnionym kontem usługi Azure Cosmos DB.

  5. W lewym górnym rogu w polu wyszukiwania wprowadź Ustawienia diagnostycznei wybierz pozycję menu Ustawienia diagnostyczne.

    Zrzut ekranu przedstawiający interfejs witryny Azure Portal dla konta usługi Azure Cosmos DB z wyświetlonym polem wyszukiwania z wprowadzonymi ustawieniami diagnostycznymi i wyróżnionym elementem menu

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

    Zrzut ekranu przedstawiający interfejs Portalu Azure dla konta usługi Azure Cosmos DB pokazujący stronę Ustawienia diagnostyczne z powiadomieniem o włączenie zapytania pełnotekstowego.

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

    Zrzut ekranu przedstawiający interfejs witryny Azure Portal dla konta usługi Azure Cosmos DB przedstawiający ustawienia diagnostyczne.

    Jeśli chcesz, możesz również sprawdzić, czy konto magazynu ma włączoną podobną konfigurację diagnostyczną dla magazynu obiektów blob.