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

Завершено

После завершения создания базы данных для используемой команды R&D необходимо убедиться, что доступ к базе данных регистрируется. У вас есть рабочая область Log Analytics, куда должны отправляться эти журналы. Кроме того, в ту же рабочую область 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

Ваша команда исследований и разработки должна вести журнал всех запросов к учетной записи 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, чтобы смоделировать созданную в организации учетную запись для команды исследований и разработки. Используйте Azure CLI вместо Bicep.

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

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

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

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

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

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

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

Необходимо обновить шаблон 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.

    По завершении полный шаблон 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-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
          }
        ]
      }
    }
    
  5. Сохраните изменения в файле.

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

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

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

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

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

Проверка развертывания

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

  2. Выберите ссылку 1 Выполнено.

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

    Screenshot of the Azure portal interface for the specific deployment, with the Azure Cosmos DB resources as well as two resources with type Microsoft.Insights/diagnosticSettings.

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

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

    Screenshot of the Azure portal interface for the specific deployment, with the Azure Cosmos DB account highlighted.

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

    Screenshot of the Azure portal interface for the Azure Cosmos DB account, showing the search field with 'Diagnostic settings' entered and the 'Diagnostic settings' menu item highlighted.

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

    Screenshot of the Azure portal interface for the Azure Cosmos DB account showing Diagnostic settings page with prompt to enable full-text query.

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

    Screenshot of the Azure portal interface for the Azure Cosmos DB account, showing the diagnostic settings.

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