从应用程序服务计划中删除appinsights分析器

时间:2019-02-13 11:18:17

标签: powershell azure-application-insights azure-web-app-service kudu azure-application-insights-profiler

我目前正在尝试使用新的beta asp.net核心应用洞察分析器。

但是我看到错误消息:

  

2019-02-11T11:36:22 PID [6036]信息02-11 11:36:22错误:   代理主进程中发生意外的异常。细节:   Microsoft.ServiceProfiler.Utilities.AppIdNotFoundException:无法执行   找到iKey的AppId

在诊断日志中。

在github https://github.com/Microsoft/ApplicationInsights-Profiler-AspNetCore/issues/36上询问问题时,我被告知,这很可能是由于旧的探查器处于活动状态并给出了如何禁用它的提示。

不幸的是,将APPINSIGHTS_PROFILERFEATURE_VERSION设置为禁用对我不起作用(尽管可能是由于我特定的ARM模板设置)。

相反,通过Kudu禁用是帮助我的(因为我需要将其作为发布管道的一部分):

2 个答案:

答案 0 :(得分:1)

ApplicationInsightsProfiler2 Webjob由旧的Application Insights网站扩展安装。要正确删除它,您需要从App Service页面内的“扩展”刀片中删除ApplicationInsights扩展。

如果这不起作用(您看不到ApplicationInsights扩展名),则可能是静默卸载失败,但是位仍然存在,因此您必须按照步骤here手动将其删除。

GitHub comment是指新的启用流程(来自“应用程序服务”页面内的“应用程序见解”刀片),该流程安装了名为“ ApplicationInsightsProfiler3”的Web作业。如果只有此Web作业,则可以从Application Insights UI中将其关闭-您无需手动设置“应用程序设置”。

答案 1 :(得分:0)

在深入研究kudu Wiki并用较新的技术替换了一些元素之后,我使用了以下Powershell。

它使用从网站获取的发布凭据组成一个“ http基本身份验证”字符串,然后使用它向kudu api发出DELETE请求。

值得注意的是,如果您使用的是Powershell 6,则不需要编写基本身份验证字符串,因为powershell 6的Invoke-RestMethod可以为您完成此操作。

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