Аналитика выпусков и рабочих элементов имеет решающее значение для оптимизации жизненного цикла разработки программного обеспечения. По мере развития приложений важно отслеживать каждый выпуск и его рабочие элементы. Эти аналитические сведения выделяют узкие места производительности и позволяют командам устранять проблемы с упреждающим образом, обеспечивая плавное развертывание и взаимодействие с пользователем. Они предоставляют разработчикам и заинтересованным лицам возможность принимать решения, настраивать процессы и предоставлять высококачественное программное обеспечение.
Azure Pipelines интегрируется с Application Insights, чтобы обеспечить непрерывный мониторинг конвейера выпуска Azure DevOps на протяжении всего жизненного цикла разработки программного обеспечения.
С помощью постоянного мониторинга можно внедрить данные мониторинга в конвейеры выпуска от Application Insights и других ресурсов Azure. Когда конвейер выпуска обнаруживает оповещение Application Insights, он может настроить или выполнить откат развернутой службы, пока не будет устранено оповещение. Когда все проверки будут успешно пройдены, автоматически возобновится весь процесс развертывания от тестирования до ввода в эксплуатацию без дополнительных вмешательств.
В Azure DevOps выберите организацию и проект.
В меню слева на странице проекта выберите Конвейеры>Выпуски.
Щелкните стрелку раскрывающегося списка рядом с "Создать " и выберите "Создать конвейер выпуска". Если у вас еще нет конвейера, на появившейся странице выберите Создать конвейер.
На панели Выбор шаблона найдите и выберите Развертывание Службы приложений Azure с непрерывным мониторингом, а затем нажмите кнопку Применить.
В поле Этап 1 выберите гиперссылку, чтобы просмотреть задачи этапа.
В области конфигурации этапа 1 заполните следующие поля:
Параметр |
Значение |
Имя этапа |
Укажите имя этапа или оставьте его на этапе 1. |
Подписка Azure |
Щелкните стрелку раскрывающегося списка и выберите связанную подписку Azure, которую вы хотите использовать. |
Тип приложения |
Щелкните стрелку раскрывающегося списка и выберите тип приложения. |
Имя службы приложений |
Укажите имя своей Службы приложений Azure. |
Имя группы ресурсов для Application Insights |
Щелкните стрелку раскрывающегося списка и выберите группу ресурсов, которую вы хотите использовать. |
Имя ресурса Application Insights |
Щелкните стрелку раскрывающегося списка и выберите ресурс Application Insights для выбранной группы ресурсов. |
Чтобы сохранить конвейер с параметрами правила генерации оповещений по умолчанию, выберите "Сохранить " в правом верхнем углу окна Azure DevOps. Введите описательный комментарий и нажмите кнопку "ОК".
Изменение правил генерации оповещений
Вне поля развертывание службы приложение Azure с шаблоном непрерывного мониторинга содержит четыре правила генерации оповещений: доступность, неудачные запросы, время отклика сервера и исключения сервера. Вы можете добавить дополнительные правила или изменить параметры правила в соответствии с потребностями уровня обслуживания.
Чтобы изменить параметры правила генерации оповещений, сделайте следующее:
В левой области страницы конвейера выпуска выберите Настройка оповещений Application Insights.
Четыре правила генерации оповещений по умолчанию создаются с помощью встроенного сценария:
$subscription = az account show --query "id";$subscription.Trim("`"");$resource="/subscriptions/$subscription/resourcegroups/"+"$(Parameters.AppInsightsResourceGroupName)"+"/providers/microsoft.insights/components/" + "$(Parameters.ApplicationInsightsResourceName)";
az monitor metrics alert create -n 'Availability_$(Release.DefinitionName)' -g $(Parameters.AppInsightsResourceGroupName) --scopes $resource --condition 'avg availabilityResults/availabilityPercentage < 99' --description "created from Azure DevOps";
az monitor metrics alert create -n 'FailedRequests_$(Release.DefinitionName)' -g $(Parameters.AppInsightsResourceGroupName) --scopes $resource --condition 'count requests/failed > 5' --description "created from Azure DevOps";
az monitor metrics alert create -n 'ServerResponseTime_$(Release.DefinitionName)' -g $(Parameters.AppInsightsResourceGroupName) --scopes $resource --condition 'avg requests/duration > 5' --description "created from Azure DevOps";
az monitor metrics alert create -n 'ServerExceptions_$(Release.DefinitionName)' -g $(Parameters.AppInsightsResourceGroupName) --scopes $resource --condition 'count exceptions/server > 5' --description "created from Azure DevOps";
Вы можете изменить скрипт и добавить дополнительные правила генерации оповещений. Вы также можете изменить условия оповещения. И вы можете удалить правила генерации оповещений, которые не соответствуют вашим целям развертывания.
Добавление условий развертывания
При добавлении шлюзов развернутой службы в конвейер выпусков оповещение, которое превышает установленные пороговые значения, предотвращает нежелательное повышение уровня выпуска. После устранения оповещения развертывание может продолжаться автоматически.
Чтобы добавить шлюзы развертывания, сделайте следующее:
На главной странице конвейера в разделе Этапы выберите Условия перед развертыванием или Условия после развертывания в зависимости от того, на каком этапе требуется непрерывный шлюз мониторинга.
На панели конфигурации Условия перед развертыванием задайте для параметра Шлюзы значение Включено.
Рядом с полем Шлюзы развертывания выберите Добавить.
В раскрывающемся меню выберите Запрос оповещений Azure Monitor. Этот параметр позволяет получить доступ к оповещениям Azure Monitor и Application Insights.
В разделе Параметры оценки введите нужные значения параметров, например Время между повторной оценкой шлюзов и Время ожидания, по истечении которого шлюзы завершают работу со сбоем.
Просмотр журналов выпуска
Поведение шлюза развернутой службы и другие шаги выпуска можно просмотреть в журналах выпусков. Чтобы открыть журналы, сделайте следующее:
В меню слева на странице конвейера выберите Выпуски.
Выберите любой выпуск.
В разделе Этапы выберите любой этап, чтобы просмотреть сводку по выпуску.
Чтобы просмотреть журналы, выберите Просмотреть журналы в сводке по выпуску, выберите гиперссылку Успех или Сбой на любом этапе или наведите указатель на любую стадию и выберите Журналы.
Заметки показывают, где развернута новая сборка или другие важные события. С их помощью легко увидеть, повлияли ли ваши изменения на производительность приложения. Заметки могут создаваться автоматически системой сборки Azure Pipelines. Вы также можете создавать заметки для флага любого нужного события, создав их из PowerShell.
Заметки к выпуску со сборкой Azure Pipelines
Заметки к выпуску — это функция облачной службы Azure Pipelines в службе Azure DevOps.
Если выполняются все указанные ниже условия, в рамках задачи развертывания автоматически создается заметка к выпуску:
Ресурс, к которому выполняется развертывание, связан с Application Insights с помощью APPINSIGHTS_INSTRUMENTATIONKEY
параметра приложения.
Ресурс Application Insights находится в той же подписке, что и ресурс, в который выполняется развертывание.
используется одна из приведенных ниже задач конвейера Azure DevOps.
Код задачи |
Имя задачи |
Версии |
AzureAppServiceSettings |
Параметры Службы приложений Azure |
Любое |
AzureRmWebAppDeployment |
Развертывание Службы приложений Azure |
Версия 3 и выше |
AzureFunctionApp |
Функции Azure |
Любое |
AzureFunctionAppContainer |
Функции Azure для контейнера |
Любое |
AzureWebAppContainer |
Веб-приложение Azure для контейнеров |
Любое |
AzureWebApp |
Веб-приложение Azure |
Любое |
Примечание.
Если вы по-прежнему используете задачу развертывания заметки Application Insights, удалите ее.
Если вы не можете использовать одну из задач развертывания в предыдущем разделе, необходимо добавить встроенную задачу скрипта в конвейер развертывания.
Перейдите к новому или существующему конвейеру и выберите задачу.
Добавьте новую задачу и выберите элемент Azure CLI.
Выберите соответствующую подписку Azure. Измените тип скрипта на PowerShell и расположение скрипта на inline.
Добавьте скрипт PowerShell из шага 2 в следующем разделе в область Встроенный скрипт.
Добавьте следующие аргументы. Замените заполнители с угловыми скобками значениями в аргументы скрипта. Свойство -releaseProperties
является необязательным.
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
В следующем примере показаны метаданные, которые можно задать в необязательном releaseProperties
аргументе с помощью переменных сборки и выпуска .
-releaseProperties @{
"BuildNumber"="$(Build.BuildNumber)";
"BuildRepositoryName"="$(Build.Repository.Name)";
"BuildRepositoryProvider"="$(Build.Repository.Provider)";
"ReleaseDefinitionName"="$(Build.DefinitionName)";
"ReleaseDescription"="Triggered by $(Build.DefinitionName) $(Build.BuildNumber)";
"ReleaseEnvironmentName"="$(Release.EnvironmentName)";
"ReleaseId"="$(Release.ReleaseId)";
"ReleaseName"="$(Release.ReleaseName)";
"ReleaseRequestedFor"="$(Release.RequestedFor)";
"ReleaseWebUrl"="$(Release.ReleaseWebUrl)";
"SourceBranch"="$(Build.SourceBranch)";
"TeamFoundationCollectionUri"="$(System.TeamFoundationCollectionUri)" }
Выберите Сохранить.
Создание заметок о выпуске с помощью Azure CLI
Скрипт PowerShell можно использовать для создания заметок из любого процесса, который требуется без CreateReleaseAnnotation
использования Azure DevOps.
Войдите в Azure CLI.
Создайте локальную копию следующего скрипта и вызовите ее CreateReleaseAnnotation.ps1
.
param(
[parameter(Mandatory = $true)][string]$aiResourceId,
[parameter(Mandatory = $true)][string]$releaseName,
[parameter(Mandatory = $false)]$releaseProperties = @()
)
# Function to ensure all Unicode characters in a JSON string are properly escaped
function Convert-UnicodeToEscapeHex {
param (
[parameter(Mandatory = $true)][string]$JsonString
)
$JsonObject = ConvertFrom-Json -InputObject $JsonString
foreach ($property in $JsonObject.PSObject.Properties) {
$name = $property.Name
$value = $property.Value
if ($value -is [string]) {
$value = [regex]::Unescape($value)
$OutputString = ""
foreach ($char in $value.ToCharArray()) {
$dec = [int]$char
if ($dec -gt 127) {
$hex = [convert]::ToString($dec, 16)
$hex = $hex.PadLeft(4, '0')
$OutputString += "\u$hex"
}
else {
$OutputString += $char
}
}
$JsonObject.$name = $OutputString
}
}
return ConvertTo-Json -InputObject $JsonObject -Compress
}
$annotation = @{
Id = [GUID]::NewGuid();
AnnotationName = $releaseName;
EventTime = (Get-Date).ToUniversalTime().GetDateTimeFormats("s")[0];
Category = "Deployment"; #Application Insights only displays annotations from the "Deployment" Category
Properties = ConvertTo-Json $releaseProperties -Compress
}
$annotation = ConvertTo-Json $annotation -Compress
$annotation = Convert-UnicodeToEscapeHex -JsonString $annotation
$accessToken = (az account get-access-token | ConvertFrom-Json).accessToken
$headers = @{
"Authorization" = "Bearer $accessToken"
"Accept" = "application/json"
"Content-Type" = "application/json"
}
$params = @{
Headers = $headers
Method = "Put"
Uri = "https://management.azure.com$($aiResourceId)/Annotations?api-version=2015-05-01"
Body = $annotation
}
Invoke-RestMethod @params
Примечание.
- Заметки должны иметь значение "Категория" для развертывания, чтобы появиться в портал Azure.
- Если появится сообщение об ошибке "Запрос содержит тело сущности, но не заголовок Content-Type", попробуйте удалить параметры замены в следующей строке.
$body = (ConvertTo-Json $annotation -Compress)
Вызовите скрипт PowerShell со следующим кодом. Замените заполнители с угловыми скобками своими значениями. Свойство -releaseProperties
является необязательным.
.\CreateReleaseAnnotation.ps1 `
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
Аргумент |
Определение |
Примечание. |
aiResourceId |
Идентификатор ресурса целевого ресурса Application Insights. |
Пример: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeee4e4e4e4e/resourceGroups/MyRGName/providers/microsoft.insights/components/MyResourceName |
releaseName |
Имя для созданной заметки к выпуску. |
|
releaseProperties |
Используется для присоединения пользовательских метаданных к заметке. |
Необязательно |
Просмотр заметок
Примечание.
Заметки о выпуске в настоящее время недоступны в области метрик Application Insights.
Каждый раз, когда вы используете шаблон выпуска для развертывания нового выпуска, заметка отправляется в Application Insights. Заметки можно просмотреть в следующих расположениях:
Чтобы включить заметки в книге, перейдите в меню Дополнительные параметры и выберите элемент Показать заметки.
Выберите любой маркер заметки, чтобы открыть подробные сведения о выпуске, включая запросившую сторону, ветвь системы управления версиями, конвейер выпуска и среду.
Выпуск заметок с помощью ключей API
Заметки к выпуску — это функция облачной службы Azure Pipelines в службе Azure DevOps.
Внимание
Не рекомендуется использовать аннотации с ключами API. Вместо этого рекомендуется использовать Azure CLI .
Установка расширения заметок (однократно)
Чтобы создать заметки о выпуске, установите одно из многих расширений Azure DevOps, доступных в Visual Studio Marketplace.
Войдите в проект Azure DevOps.
На странице расширения заметки о выпуске Visual Studio Marketplace выберите организацию Azure DevOps. Выберите " Установить ", чтобы добавить расширение в организацию Azure DevOps.
Это расширение требуется установить только один раз для организации Azure DevOps. Теперь вы можете настроить заметки к выпуску для любого проекта в организации.
Создайте отдельный ключ API для каждого из шаблонов выпуска Azure Pipelines.
Выполните вход на портал Azure и откройте ресурс Application Insights, который используется для мониторинга вашего приложения. Создайте новый ресурс Application Insights если у вас его еще нет.
Откройте вкладку Доступ через API и скопируйте ИД Application Insights.
В отдельном окне браузера откройте (или создайте) шаблон выпуска, который управляет развертываниями Azure Pipelines.
Выберите "Добавить задачу" и выберите задачу "Заметка о выпуске Application Insights" в меню.
Примечание.
В настоящее время задача "Заметка о выпуске" поддерживает только агенты на основе Windows. Он не будет работать в Linux, macOS или других типах агентов.
В поле ИД приложения вставьте идентификатор Application Insights, скопированный на вкладке Доступ через API.
Вернитесь в окно Application Insights Доступ через API и выберите Создать ключ API.
В окне "Создание ключа API" введите описание, выберите "Запись заметок", а затем нажмите кнопку "Создать ключ". Скопируйте новый ключ.
В окне шаблона выпуска на вкладке Переменные выберите Добавить, чтобы создать определение переменной для нового ключа API.
В разделе "Имя" введите ApiKey. В разделе "Значение" вставьте ключ API, скопированный на вкладке "Доступ к API".
Выберите Сохранить в главном окне шаблона выпуска, чтобы сохранить шаблон.
Переход к новой заметке о выпуске
Для использования новых заметок к выпуску:
- Удалите расширение заметок к выпуску.
- Удалите задачу заметок к выпуску Application Insights в развертывании Azure Pipelines.
- Создайте заметки о выпуске с помощью Azure Pipelines или Azure CLI.
Функция интеграции рабочих элементов позволяет легко создавать в GitHub или Azure DevOps рабочие элементы с внедренными в них соответствующими данными Application Insights.
Интеграция новых рабочих элементов предоставляет следующие возможности по сравнению с классическими:
- Дополнительные поля, такие как уполномоченные, проекты или вехи.
- Значки репозитория позволяют различать книги GitHub и Azure DevOps.
- Несколько конфигураций для любого количества репозиториев или рабочих элементов.
- Развертывание с помощью шаблонов Azure Resource Manager.
- Предварительно созданные и настраиваемые запросы на языке Keyword Query Language (KQL) для добавления данных Application Insights в рабочие элементы.
- Настраиваемые шаблоны книг.
Чтобы создать шаблон рабочего элемента, перейдите к ресурсу Application Insights и слева в разделе Настройка выберите Рабочие элементы, а затем в верхней части выберите Создать новый шаблон.
Кроме того, можно создать шаблон рабочего элемента на вкладке "Сведения о сквозных транзакциях", если в настоящее время не существует ни одного шаблона. Выберите событие, справа выберите Создать рабочий элемент, затем выберите Начать на основе шаблона книги.
После выбора элемента Создать новый шаблонвы можете выбрать системы отслеживания, присвоить имя книге, установить связь с выбранной системой отслеживания и выбрать регион для хранения шаблона (по умолчанию это регион, в котором находится ваш ресурс Application Insights). Параметры URL-адреса — это URL-адрес по умолчанию для вашего репозитория, например https://github.com/myusername/reponame
или https://dev.azure.com/{org}/{project}
.
Определенные свойства рабочих элементов можно задать непосредственно из самого шаблона. Это такие свойства, как уполномоченный, путь итерации, проекты и прочие свойства в зависимости от вашей системы управления версиями.
Примечание.
Для локальных сред Azure DevOps пример URL-адреса, например https://dev.azure.com/test/test можно использовать в качестве заполнителя ДЛЯ URL-адреса проекта Azure DevOps. После создания шаблона рабочего элемента можно изменить URL-адрес и его правило проверки в созданной книге Azure.
Создание рабочего элемента
Вы можете получить доступ к новому шаблону из любых разделов со сведениями о сквозных транзакциях, к которым можно получить доступ из вкладок "Производительность", "Сбои", "Доступность" и пр.
Чтобы создать рабочий элемент, перейдите в раздел сведений о сквозных транзакциях, выберите событие, выберите Создать рабочий элемент, затем выберите шаблон рабочего элемента.
В браузере откроется новая вкладка с выбранной системой отслеживания. В Azure DevOps можно сформировать ошибку или задачу, а в GitHub можно сформировать проблему в репозитории. Новый рабочий элемент автоматически создается с контекстными сведениями, предоставляемыми Application Insights.
Изменение шаблона
Чтобы изменить шаблон, перейдите на вкладку Рабочие элементы в разделе Настройка и щелкните значок карандаша рядом с книгой, которую необходимо изменить.
Выберите правку на верхней панели инструментов.
Вы можете создать несколько конфигураций рабочих элементов и иметь специальные книги для каждого из сценариев. Книги также можно развернуть с помощью Azure Resource Manager, чтобы обеспечить стандартные реализации во всех средах.
Интеграция классических рабочих элементов
В ресурсе Application Insights в разделе Настройка выберите Рабочие элементы.
Выберите Классический вид, заполните поля своими сведениями и выполните авторизацию.
Создайте рабочий элемент, перейдя в раздел сведений о сквозных транзакциях, выберите событие, затем — Create work item (Classic) (Создать рабочий элемент (классический)).
Миграция на интеграцию новых рабочих элементов
Чтобы выполнить миграцию, удалите конфигурацию классических рабочих элементов, а затем создайте и настройте шаблон рабочего элемента для повторного создания интеграции.
Для удаления перейдите в раздел ресурса Application Insights Настройка, выберите Рабочие элементы, а затем в верхней части — Включить классический вид и *Удалить.