Übung – Bereitstellen von Erweiterungsressourcen und Verwenden vorhandener Ressourcen
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:
Ö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'
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.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 dieid
Eigenschaft der vorhandenenlogAnalyticsWorkspace
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.
Fügen Sie am oberen Rand der Datei "main.bicep " unter den 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 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.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 RessourceblobServices
angefügt werden soll.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
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.
Wählen Sie den Link „1 Erfolg“ aus.
Wählen Sie die Bereitstellung mit dem Namen "Haupt" und dann "Bereitstellungsdetails " aus, um die Liste der bereitgestellten Ressourcen zu erweitern.
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.Wählen Sie die Azure Cosmos DB-Kontoressource aus. Das Portal zeigt das Azure Cosmos DB-Konto an.
Geben Sie im Suchfeld oben links Diagnoseeinstellungen ein, und wählen Sie dann "Diagnoseeinstellungen" aus.
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.
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.
Wenn Sie möchten, können Sie auch überprüfen, ob das Speicherkonto eine ähnliche Diagnoseeinstellung für blob-Speicher aktiviert hat.