Übung: Bereitstellen von Erweiterungsressourcen und Verwenden vorhandener Ressourcen
Nachdem Sie die Erstellung der Datenbank für Ihr Forschungs- und Entwicklungsteam nun abgeschlossen 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. Sie müssen die Protokolle außerdem aus dem Speicherkonto des Forschungs- und Entwicklungsteams 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 Cosmos DB-Konto Diagnoseeinstellungen hinzuzufügen.
- Erstellen Sie ein Speicherkonto.
- Aktualisieren Sie in Ihrer Bicep-Datei die Diagnoseeinstellungen für das Speicherkonto.
- Stellen Sie die Vorlage bereit, und überprüfen Sie das Ergebnis.
Erstellen eines Log Analytics-Arbeitsbereichs
Erstellen Sie einen Log Analytics-Arbeitsbereich, um zu simulieren, dass in Ihrer Organisation bereits ein Arbeitsbereich erstellt wurde. Verwenden der 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 in Ihrer Organisation bereits ein Arbeitsbereich erstellt wurde. Verwenden von 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 im selben Abonnement und in derselben Ressourcengruppe wie Ihre anderen Ressourcen bereit. In vielen Situationen speichern Sie Log Analytics-Arbeitsbereiche in Ressourcengruppen, die nicht mit denen Ihrer Anwendungsressourcen identisch sind. Bicep kann dennoch darauf verweisen.
Hinzufügen von Diagnoseeinstellungen für Azure Cosmos DB
Ihr Forschungs- und Entwicklungsteam 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, um das DataPlaneRequests-Protokoll zu erfassen, das Informationen zu Anforderungen an Azure Cosmos DB enthält.
Nachdem Sie nun Ihren simuliert bereits vorhandenen Log Analytics-Arbeitsbereich erstellt haben, können Sie in Ihrer Bicep-Vorlage auf ihn als vorhandene Ressource verweisen. Sie können ihn als Ziel für die Azure Cosmos DB-Protokolle verwenden.
Führen Sie die folgenden Schritte aus, um Diagnoseeinstellungen hinzuzufügen:
Öffnen Sie in Visual Studio Code die Datei main.bicep im Editor, und fügen Sie dann unterhalb der vorhandenen Variablendefinitionen den folgenden Code hinzu:
var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
Fügen Sie am Ende der Datei unterhalb der Ressourcendefinitionen folgenden Code hinzu:
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName }
Beachten Sie, dass diese Ressourcendefinition das Schlüsselwort
existing
verwendet und dass Sie absichtlich andere Eigenschaften auslassen, die Sie normalerweise angeben würden, wenn Sie den Log Analytics-Arbeitsbereich über diese Bicep-Vorlage bereitstellten.Fügen Sie unter dem Code, den Sie gerade hinzugefügt haben, 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 mit diesem Code eine Erweiterungsressource bereitgestellt wird. Er verwendet das Schlüsselwort
scope
, um Bicep anzuweisen, dass die Ressource an das Azure Cosmos DB-Konto angefügt werden soll. Der Code verwendet auch dieid
-Eigenschaft der vorhandenenlogAnalyticsWorkspace
-Ressource, sodass Azure erkennt, wohin die Azure Cosmos DB-Protokolle zu senden sind.
Erstellen eines Speicherkontos für Spielzeugdesigndokumente
Erstellen Sie ein Azure-Speicherkonto, um zu simulieren, dass Ihr Forschungs- und Entwicklungsteam bereits eins in Ihrer Organisation erstellt hat. Verwenden der Azure CLI anstelle von Bicep.
Führen Sie im Terminal den folgenden Azure CLI-Befehl aus. Ersetzen Sie {storageaccountname}
durch einen Namen, der wahrscheinlich eindeutig ist. Der Name muss vollständig aus Kleinbuchstaben bestehen, maximal 24 Zeichen lang sein und darf keine Leerzeichen oder Sonderzeichen enthalten. Notieren Sie sich den Namen zur späteren Verwendung.
az storage account create \
--name {storageaccountname} \
--location eastus
Erstellen Sie ein Azure-Speicherkonto, um zu simulieren, dass Ihr Forschungs- und Entwicklungsteam bereits eins in Ihrer Organisation erstellt hat. Verwenden von Azure PowerShell anstelle von Bicep.
Führen Sie im Terminal den folgenden Azure PowerShell-Befehl aus. Ersetzen Sie {storageaccountname}
durch einen Namen, der wahrscheinlich eindeutig ist. Der Name muss vollständig aus Kleinbuchstaben bestehen, maximal 24 Zeichen lang sein und darf keine Leerzeichen oder Sonderzeichen enthalten.
New-AzStorageAccount `
-Name {storageaccountname} `
-Location eastus `
-SkuName Standard_LRS
Hinzufügen von Diagnoseeinstellungen für das Speicherkonto
Ihr Forschungs- und Entwicklungsteam möchte, dass Sie alle erfolgreichen Anforderungen in dem von ihm erstellten 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 Lese-, Schreib- und Löschaktivitäten im Blobspeicher im Speicherkonto des Forschungs- und Entwicklungsteams zu protokollieren.
Sie müssen Ihre Bicep-Vorlage aktualisieren, um auf das Speicherkonto zu verweisen, das Sie im vorherigen Schritt erstellt haben.
Fügen Sie am Anfang der Datei main.bicep unterhalb der Parameterdefinitionen die folgende Parameterdefinition hinzu:
param storageAccountName string
Fügen Sie unter den Variablendefinitionen die folgende Variablendefinition hinzu:
var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
Fügen Sie am Ende der Datei unter den Ressourcendefinitionen 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 Schlüsselwort
existing
verwenden.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 erkennt, dass die Erweiterungsressource an die untergeordnete RessourceblobServices
angefügt werden soll.Wenn Sie fertig sind, sollte Ihre vollständige Bicep-Vorlage wie folgt 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-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 } ] } }
Speichern Sie die Änderungen in der Datei.
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 früher in dieser Übung erstellt haben.
az deployment group create \
--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 früher in dieser Übung erstellt haben.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
Überprüfen Ihrer Bereitstellung
Navigieren Sie in Ihrem Browser zum Azure-Portal zurück. Wechseln Sie zu Ihrer Ressourcengruppe. Es wird noch immer eine erfolgreiche Bereitstellung angezeigt, da diese denselben Namen wie die erste Bereitstellung verwendet hat.
Wählen Sie den Link 1 Succeeded (1 erfolgreich) aus.
Wählen Sie die Bereitstellung mit dem Namen main aus, und wählen Sie dann Bereitstellungsdetails aus, um die Liste der bereitgestellten Ressourcen zu erweitern.
Beachten Sie, dass zwei Ressourcen mit dem Typ
Microsoft.Insights/diagnosticSettings
aufgelistet sind. Diese Ressourcen sind die Erweiterungsressourcen, die Sie bereitgestellt haben. Eine der Ressourcen wurde an das Speicherkonto und die andere an das Azure Cosmos DB-Konto angefügt. Nun können Sie überprüfen, ob die Azure Cosmos DB-Diagnoseeinstellungen ordnungsgemäß konfiguriert sind.Wählen Sie die Azure Cosmos DB-Kontoressource aus. Das Portal wird mit dem Azure Cosmos DB-Konto geöffnet.
Geben Sie im Suchfeld links oben Diagnoseeinstellungen ein, und wählen Sie das Menüelement Diagnoseeinstellungen aus.
Möglicherweise werden Sie im Azure-Portal aufgefordert, die Unterstützung von Volltextabfragen für die Protokollierung zu aktivieren. Sie benötigen sie für diese Übung nicht und können daher Nicht jetzt auswählen.
Beachten Sie, dass es eine Diagnoseeinstellung namens route-logs-to-log-analytics gibt, die so konfiguriert ist, dass die Protokolle an den ToyLogs-Arbeitsbereich weitergeleitet werden.
Wenn Sie möchten, können Sie auch überprüfen, ob für das Speicherkonto eine ähnliche Diagnoseeinstellung für Blob Storage aktiviert ist.