Übung – Bereitstellen von Erweiterungsressourcen und Verwenden vorhandener Ressourcen

Abgeschlossen

Nachdem Sie die Datenbank für Ihr zu verwendende R&D-Team erstellt haben, müssen Sie sicherstellen, dass der Zugriff auf die Datenbank protokolliert wird. Sie verfügen über einen vorhandenen Log Analytics-Arbeitsbereich, an den diese Protokolle gesendet werden sollen. Außerdem müssen Sie die Protokolle aus dem Speicherkonto des R&D-Teams an denselben Log Analytics-Arbeitsbereich senden. In dieser Übung aktualisieren Sie Ihre Bicep-Datei, um diese Anforderungen zu erfüllen.

In dem Prozess gehen Sie wie folgt vor:

  • Erstellen Sie einen Log Analytics-Arbeitsbereich.
  • Aktualisieren Sie Ihre Bicep-Datei, um Ihrem Azure Cosmos DB-Konto Diagnoseeinstellungen hinzuzufügen.
  • Erstellen Sie ein Speicherkonto.
  • Aktualisieren Sie in Ihrer Bicep-Datei die Diagnoseeinstellungen für das Speicherkonto.
  • Stellen Sie Ihre Vorlage bereit, und überprüfen Sie das Ergebnis.

Erstellen eines Log Analytics-Arbeitsbereichs

Erstellen Sie einen Log Analytics-Arbeitsbereich, um zu simulieren, dass ein vorhandener Arbeitsbereich in Ihrer Organisation vorhanden ist. Verwenden Sie die Azure CLI anstelle von Bicep.

Führen Sie im Terminal den folgenden Azure CLI-Befehl aus:

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

Erstellen Sie einen Log Analytics-Arbeitsbereich, um zu simulieren, dass ein vorhandener Arbeitsbereich in Ihrer Organisation vorhanden ist. Verwenden Sie Azure PowerShell anstelle von Bicep.

Führen Sie im Terminal den folgenden Azure PowerShell-Befehl aus:

New-AzOperationalInsightsWorkspace `
  -Name ToyLogs `
  -Location eastus

Hinweis

In diesem Beispiel stellen Sie den Log Analytics-Arbeitsbereich in derselben Abonnement- und Ressourcengruppe wie Ihre anderen Ressourcen bereit. In vielen Fällen speichern Sie Log Analytics-Arbeitsbereiche in Ressourcengruppen, die nicht mit den Anwendungsressourcen übereinstimmen. Bicep kann dennoch darauf verweisen.

Hinzufügen von Diagnoseeinstellungen für Azure Cosmos DB

Ihr R&D-Team muss alle Anforderungen an das Azure Cosmos DB-Konto protokollieren. Sie entscheiden sich für die Verwendung der Azure Monitor-Integration für Azure Cosmos DB zum Sammeln des DataPlaneRequests-Protokolls , das Informationen zu Anforderungen an Azure Cosmos DB enthält.

Nachdem Sie ihren simulierten bereits vorhandenen Log Analytics-Arbeitsbereich erstellt haben, können Sie ihn aus Ihrer Bicep-Vorlage als vorhandene Ressource referenzieren. Sie können es als Ziel für die Azure Cosmos DB-Logdateien verwenden.

Führen Sie die folgenden Schritte aus, um Diagnoseeinstellungen hinzuzufügen:

  1. Öffnen Sie in Visual Studio Code die Datei "main.bicep " im Editor. Fügen Sie unterhalb der vorhandenen Variablendefinitionen den folgenden Code hinzu:

    var logAnalyticsWorkspaceName = 'ToyLogs'
    var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
    
  2. Fügen Sie unten in der Datei unter den Ressourcendefinitionen den folgenden Code hinzu:

    resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = {
      name: logAnalyticsWorkspaceName
    }
    

    Beachten Sie, dass diese Ressourcendefinition das existing Schlüsselwort verwendet und dass Sie absichtlich andere Eigenschaften weglassen, die Sie normalerweise angeben würden, wenn Sie den Log Analytics-Arbeitsbereich über diese Bicep-Vorlage bereitstellen.

  3. Fügen Sie unter dem soeben hinzugefügten Code den folgenden Code hinzu:

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

    Beachten Sie, dass dieser Code eine Erweiterungsressource bereitstellt. Es verwendet das scope Schlüsselwort, um Bicep darüber zu informieren, dass die Ressource an das Azure Cosmos DB-Konto angefügt werden soll. Der Code verwendet auch die id Eigenschaft der vorhandenen logAnalyticsWorkspace Ressource, damit Azure weiß, wo die Azure Cosmos DB-Protokolle gesendet werden sollen.

Erstellen eines Speicherkontos für Designdokumente für Toys

Erstellen Sie ein Azure-Speicherkonto, um ein Konto zu simulieren, das Ihr R&D-Team bereits in Ihrer Organisation erstellt hat. Verwenden Sie die Azure CLI anstelle von Bicep.

Führen Sie im Terminal den folgenden Azure CLI-Befehl aus. Ersetzen Sie {storageaccountname} durch einen Namen, der voraussichtlich einzigartig ist. Der Name muss alle Kleinbuchstaben sein, 24 oder weniger Zeichen enthalten und keine Leerzeichen oder Sonderzeichen enthalten. Notieren Sie sich den Namen. Sie benötigen die Information später.

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

Erstellen Sie ein Azure-Speicherkonto, um ein Konto zu simulieren, das Ihr R&D-Team bereits in Ihrer Organisation erstellt hat. Verwenden Sie Azure PowerShell anstelle von Bicep.

Führen Sie im Terminal den folgenden Azure PowerShell-Befehl aus. Ersetzen Sie {storageaccountname} durch einen Namen, der voraussichtlich einzigartig ist. Der Name muss alle Kleinbuchstaben sein, 24 oder weniger Zeichen enthalten und keine Leerzeichen oder Sonderzeichen enthalten.

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

Hinzufügen von Diagnoseeinstellungen für das Speicherkonto

Ihr R&D-Team möchte, dass Sie alle erfolgreichen Anforderungen an das erstellte Speicherkonto protokollieren. Sie entscheiden sich für die Verwendung der Azure Storage-Integration mit Azure Monitor-Protokollen, um dieses Ziel zu erreichen. Sie entscheiden sich, alle Leseaktivitäten, Schreibaktivitäten und Löschaktivitäten im Blob-Speicher im Speicherkonto des R&D-Teams zu protokollieren.

Sie müssen Ihre Bicep-Vorlage aktualisieren, um auf das Speicherkonto zu verweisen, das Sie im vorherigen Schritt erstellt haben.

  1. Fügen Sie am oberen Rand der Datei "main.bicep " unter den Parameterdefinitionen die folgende Parameterdefinition hinzu:

    param storageAccountName string
    
  2. Fügen Sie unter den Variablendefinitionen die folgende Variablendefinition hinzu:

    var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
    
  3. Fügen Sie unten in der Datei unter den Ressourcendefinitionen die folgende Definition hinzu:

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

    Beachten Sie, dass beide Ressourcen das existing Schlüsselwort verwenden.

  4. Fügen Sie unten in der Datei unter der Definition des Speicherkontos, die Sie im vorherigen Schritt hinzugefügt haben, den folgenden Code hinzu:

    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
          }
        ]
      }
    }
    

    Beachten Sie, dass der scope dieser Erweiterungsressource auf die geschachtelte vorhandene Ressource festgelegt ist. Bicep weiß, dass die Erweiterungsressource an die untergeordnete Ressource blobServices angefügt werden soll.

  5. Speichern Sie die Änderungen in der Datei.

Überprüfen Ihrer Bicep-Datei

Nachdem Sie die vorherigen Änderungen abgeschlossen haben, sollte die Datei "main.bicep " wie im folgenden Beispiel aussehen:

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
      }
    ]
  }
}

Wenn es nicht gleich aussieht, kopieren Sie entweder das Beispiel, oder passen Sie Die Vorlage an das Beispiel an.

Bereitstellen der Vorlage in Azure

Führen Sie im Terminal den folgenden Azure CLI-Befehl aus. Ersetzen Sie {storageaccountname} durch den Namen des Speicherkontos, das Sie zuvor in dieser Übung erstellt haben.

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

Führen Sie im Terminal den folgenden Azure PowerShell-Befehl aus. Ersetzen Sie {storageaccountname} durch den Namen des Speicherkontos, das Sie zuvor in dieser Übung erstellt haben.

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

Überprüfen Sie die Bereitstellung

  1. Navigieren Sie in Ihrem Browser zum Azure-Portal zurück. Wechseln Sie zu Ihrer Ressourcengruppe. Da die Bereitstellung denselben Namen wie die erste Bereitstellung verwendet hat, wird weiterhin eine erfolgreiche Bereitstellung angezeigt.

  2. Wählen Sie den Link „1 Erfolg“ aus.

  3. Wählen Sie die Bereitstellung mit dem Namen "Haupt" und dann "Bereitstellungsdetails " aus, um die Liste der bereitgestellten Ressourcen zu erweitern.

    Screenshot der Azure-Portalschnittstelle für die spezifische Bereitstellung. Es zeigt die Azure Cosmos DB-Ressourcen und zwei Ressourcen vom Typ

    Beachten Sie, dass zwei Ressourcen aufgelistet sind, die vom Typ Microsoft.Insights/diagnosticSettings sind. Diese Ressourcen sind die Erweiterungsressourcen, die Sie bereitgestellt haben. Eine der Ressourcen ist mit dem Speicherkonto verknüpft, und der andere wird mit dem Azure Cosmos DB-Konto verknüpft. Sie können jetzt überprüfen, ob die Azure Cosmos DB-Diagnoseeinstellungen ordnungsgemäß konfiguriert sind.

  4. Wählen Sie die Azure Cosmos DB-Kontoressource aus. Das Portal zeigt das Azure Cosmos DB-Konto an.

    Screenshot der Azure-Portalschnittstelle für die spezifische Bereitstellung, wobei das Azure Cosmos DB-Konto hervorgehoben ist.

  5. Geben Sie im Suchfeld oben links Diagnoseeinstellungen ein, und wählen Sie dann "Diagnoseeinstellungen" aus.

    Screenshot der Azure-Portalschnittstelle für das Azure Cosmos DB-Konto. Diagnoseeinstellungen sind im Menü hervorgehoben.

  6. Möglicherweise werden Sie vom Azure-Portal aufgefordert, die Unterstützung von Volltextabfragen für die Protokollierung zu aktivieren. Sie benötigen sie nicht für diese Übung. Wählen Sie daher "Jetzt nicht" aus.

    Screenshot der Eingabeaufforderung zum Aktivieren der Volltextabfrage.

  7. Beachten Sie, dass es eine Diagnoseeinstellung mit dem Namen route-logs-to-log-analytics gibt, die so konfiguriert ist, dass die Protokolle an den ToyLogs-Arbeitsbereich weitergeleitet werden.

    Screenshot der Diagnoseeinstellungen.

    Wenn Sie möchten, können Sie auch überprüfen, ob das Speicherkonto eine ähnliche Diagnoseeinstellung für blob-Speicher aktiviert hat.