Удаление профилировщика appinsights из плана обслуживания приложения
В настоящее время я экспериментирую с новым профилировщиком Insight.
Однако я вижу сообщение об ошибке:
2019-02-11T11: 36: 22 PID [6036] Информация 02-11 11:36:22 Ошибка: непредвиденное исключение в основном процессе агента. Сведения: Microsoft.ServiceProfiler.Utilities.AppIdNotFoundException: невозможно найти идентификатор приложения для iKey.
В журналах диагностики.
Задавая вопрос на github https://github.com/Microsoft/ApplicationInsights-Profiler-AspNetCore/issues/36, я был любезно проинформирован о том, что это возможно из-за того, что старый профилировщик стал активным, и дал несколько советов о том, как его отключить.
Установка APPINSIGHTS_PROFILERFEATURE_VERSION в отключенное состояние, к сожалению, не работает для меня (хотя это может быть связано с моей конкретной настройкой шаблона ARM).
Вместо этого мне помогло отключение через Kudu (так как я должен сделать это как часть конвейера релиза):
2 ответа
ApplicationInsightsProfiler2 webjob устанавливается старым расширением сайта Application Insights. Чтобы правильно удалить его, необходимо удалить расширение ApplicationInsights с блейда "Extensions" на странице службы приложений.
Если это не сработает (вы не видите расширение ApplicationInsights), возможно, удаление завершилось неудачно, но биты остались, поэтому вам придется удалить его вручную, выполнив следующие действия.
Комментарий GitHub ссылается на новый поток активации (из колонки "Application Insights" на странице службы приложений), который устанавливает веб-задание под названием "ApplicationInsightsProfiler3". Если у вас есть только это веб-задание, отключите его из пользовательского интерфейса Application Insights - вам не нужно вручную устанавливать параметры приложения.
Я использовал следующий PowerShell, после того, как покопался в вуду куду и заменил несколько элементов новыми техниками.
Он формирует строку "http basic authentication" с использованием учетных данных публикации, полученных с сайта, а затем использует ее для отправки запроса DELETE в API kudu.
В частности, если бы вы использовали Powershell 6, вам не нужно было бы составлять базовую строку аутентификации, поскольку Invoke-RestMethod в PowerShell 6 может сделать это за вас.
function Get-KuduSiteBasicAuthString
{
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
$ResourceGroupName,
[Parameter(Mandatory = $true)]
$Name
)
$response = Get-AzureRmWebAppPublishingProfile -ResourceGroupName $ResourceGroupName -Name $Name
$publishingCredentials = [xml]$response
$username = $publishingCredentials.publishData.publishProfile[0].userName
$password = $publishingCredentials.publishData.publishProfile[0].userPWD
$credentialsString = "{0}:{1}" -f $username, $password
$credentialsAsByteArray = [Text.Encoding]::ASCII.GetBytes($credentialsString)
"Basic {0}" -f [Convert]::ToBase64String($credentialsAsByteArray)
}
$ResourceGroupName = "your resource group name"
$ApplicationName = "your app name"
$kuduAuthString = Get-KuduSiteBasicAuthString -ResourceGroupName $ResourceGroupName -Name $ApplicationName
$apiUrl = "https://" + $ApplicationName + ".scm.azurewebsites.net/api/continuouswebjobs/ApplicationInsightsProfiler2"
Invoke-RestMethod -Uri $apiUrl -Headers @{ 'Authorization' = $kuduAuthString } -Method Delete -Verbose