Упражнение. Развертывание ресурсов расширения и использование существующих ресурсов

Завершено

После завершения создания базы данных для используемой команды R&D необходимо убедиться, что доступ к базе данных регистрируется. У вас есть рабочая область Log Analytics, в которую нужно отправить эти журналы. Кроме того, необходимо отправить журналы из учетной записи хранения группы R&D в ту же рабочую область Log Analytics. В этом упражнении вы обновите файл Bicep в соответствии с этими требованиями.

Во время процесса вы выполните следующие действия.

  • Создайте рабочую область Log Analytics.
  • Обновите файл Bicep, чтобы добавить параметры диагностики в учетную запись Cosmos DB.
  • Создайте учетную запись хранения.
  • В файле Bicep обновите параметры диагностики для учетной записи хранения.
  • Разверните шаблон и проверьте результат.

Создание рабочей области Log Analytics

Создайте рабочую область Log Analytics, чтобы создать впечатление, что она уже создана в вашей организации. Используйте Azure CLI вместо Bicep.

В терминале выполните следующую команду Azure CLI:

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

Создайте рабочую область Log Analytics, чтобы имитировать существующую в вашей организации. Используйте Azure PowerShell вместо Bicep.

В терминале выполните следующую команду Azure PowerShell:

New-AzOperationalInsightsWorkspace `
  -Name ToyLogs `
  -Location eastus

Заметка

В этом примере вы развертываете рабочую область Log Analytics в той же подписке и в той же группе ресурсов, что и остальные ваши ресурсы. Во многих ситуациях вы будете хранить рабочие области Log Analytics в группах ресурсов, которые не совпадают с ресурсами приложения. Bicep по-прежнему может ссылаться на них.

Добавление параметров диагностики для Azure Cosmos DB

Команда R&D должна записывать все запросы в учетную запись Azure Cosmos DB. Вы решили использовать интеграцию Azure Monitor для Azure Cosmos DB для сбора журнала DataPlaneRequests, содержащего сведения о запросах к Azure Cosmos DB.

Теперь, когда вы создали смоделированную ранее существовавшую рабочую область Log Analytics, вы можете ссылаться на нее из шаблона Bicep как на существующий ресурс. Его можно использовать в качестве назначения для журналов Azure Cosmos DB.

Чтобы добавить параметры диагностики, выполните следующие действия.

  1. В Visual Studio Code откройте файл main.bicep в редакторе, а затем под существующими определениями переменных добавьте следующий код:

    var logAnalyticsWorkspaceName = 'ToyLogs'
    var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
    
  2. В нижней части файла под определениями ресурсов добавьте следующий код:

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

    Обратите внимание, что это определение ресурса использует ключевое слово existing, и вы намеренно пропускаете другие свойства, которые обычно указываются при развертывании рабочей области Log Analytics с помощью этого шаблона Bicep.

  3. Под только что добавленным кодом добавьте следующий код:

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

    Обратите внимание, что этот код развертывает ресурс расширения. Он использует ключевое слово scope, чтобы сообщить Bicep, что ресурс должен быть присоединен к учетной записи Azure Cosmos DB. Код также использует свойство id существующего ресурса logAnalyticsWorkspace, чтобы Azure понимала, куда отправлять журналы Azure Cosmos DB.

Создайте учетную запись хранения для документов проектирования игрушек

Создайте учетную запись хранения Azure для имитации команды R&D, уже созданной в вашей организации. Используйте Azure CLI вместо Bicep.

В терминале выполните следующую команду Azure CLI. Замените {storageaccountname} именем, которое, скорее всего, будет уникальным. Имя должно быть всеми строчными буквами, содержать 24 или меньше символов и не иметь пробелов или специальных символов. Запишите имя для последующего использования.

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

Создайте учетную запись хранения Azure для имитации команды R&D, уже созданной в вашей организации. Используйте Azure PowerShell вместо Bicep.

В терминале выполните следующую команду Azure PowerShell. Замените {storageaccountname} именем, которое, скорее всего, будет уникальным. Имя должно быть всеми строчными буквами, содержать 24 или меньше символов и не иметь пробелов или специальных символов.

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

Добавление параметров диагностики для учетной записи хранения

Ваша команда R&D хочет, чтобы вы записывали все успешные запросы в созданную учетную запись хранения. Вы решили использовать интеграцию службы хранилища Azure с журналами Azure Monitor для достижения этой цели. Вы решили вести журнал всех операций чтения, записи и удаления в хранилище двоичных больших объектов (BLOB) на учетной записи хранения команды R&D.

Чтобы ссылаться на учетную запись хранения, созданную на предыдущем шаге, необходимо обновить шаблон Bicep.

  1. В верхней части файла main.bicep под определениями параметров добавьте следующее определение параметра:

    param storageAccountName string
    
  2. В определениях переменных добавьте следующее определение переменной:

    var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
    
  3. В нижней части файла в определениях ресурсов добавьте следующее определение:

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

    Обратите внимание, что оба этих ресурса используют ключевое слово existing.

  4. В нижней части файла под определением учетной записи хранения, добавленной на предыдущем шаге, добавьте следующий код:

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

    Обратите внимание, что в этом расширении scope установлен на вложенный существующий ресурс. Bicep понимает, что он должен присоединить ресурс расширения к дочернему ресурсу blobServices.

  5. Сохраните изменения в файле.

Проверьте файл Bicep

После завершения всех предыдущих изменений файл main.bicep должен выглядеть следующим образом:

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

Если это не так, скопируйте пример или измените шаблон в соответствии с примером.

Развертывание шаблона в Azure

В терминале выполните следующую команду Azure CLI. Замените {storageaccountname} именем учетной записи хранения, созданной ранее в этом упражнении.

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

В терминале выполните следующую команду Azure PowerShell. Замените {storageaccountname} именем учетной записи хранения, созданной ранее в этом упражнении.

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

Проверьте ваше развертывание

  1. В браузере вернитесь на портал Azure. Перейдите в группу ресурсов. Вы по-прежнему видите одно успешное развертывание, так как развертывание использовало то же имя, что и первое развертывание.

  2. Выберите ссылку 1 Успех.

  3. Выберите развертывание с именем основной, а затем выберите сведения о развертывании, чтобы развернуть список развернутых ресурсов.

    снимок экрана интерфейса портала Azure для конкретного развертывания с ресурсами Azure Cosmos DB, а также двумя ресурсами с типом Microsoft.Insights/diagnosticSettings.

    Обратите внимание, что в списке есть два ресурса с типом Microsoft.Insights/diagnosticSettings. Эти ресурсы — это ресурсы расширения, которые вы развернули. Один из ресурсов был присоединен к учетной записи хранения, а другой был присоединен к учетной записи Azure Cosmos DB. Теперь можно проверить правильность настройки параметров диагностики Azure Cosmos DB.

  4. Выберите ресурс учетной записи Azure Cosmos DB. Откроется портал для учетной записи Azure Cosmos DB.

    снимок экрана интерфейса портала Azure для конкретного развертывания с выделенной учетной записью Azure Cosmos DB.

  5. В поле поиска в левом верхнем углу введите параметры диагностикии выберите пункт меню параметры диагностики.

    снимок экрана интерфейса портала Azure для учетной записи Azure Cosmos DB, где отображается поле поиска с введенными параметрами диагностики и выделенным пунктом меню

  6. Портал Azure может предложить включить поддержку полнотекстового запроса для ведения журнала. Для этого упражнения не требуется, так что выберите Не сейчас.

    снимок экрана интерфейса портала Azure для учетной записи Azure Cosmos DB с страницей параметров диагностики с запросом на включение полнотекстового запроса.

  7. Обратите внимание, что есть параметр диагностики с именем route-logs-to-log-analytics, который настроен для маршрутизации журналов в рабочую область ToyLogs.

    снимок экрана интерфейса портала Azure для учетной записи Azure Cosmos DB с параметрами диагностики.

    Если вы хотите, вы можете также убедиться, что в аккаунте хранения включена аналогичная настройка диагностики для BLOB-хранилища.