Esta guia descreve como integrar à Galeria do PowerShell e baixar o módulo ApplicationMonitor.
Estão incluídos os parâmetros mais comuns que você precisa para começar.
Também fornecemos instruções de download manual caso você não tenha acesso à internet.
Obter uma cadeia de conexão
Para começar, você precisa de uma cadeia de conexão. Para obter mais informações, consulte Cadeias de conexão.
Nota
A 31 de março de 2025, o suporte da ingestão de chaves de instrumentação terminará. A ingestão de chaves de instrumentação continuará a funcionar, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar os novos recursos.
Executar o PowerShell como Administrador com uma política de execução elevada
Executar como administrador
O PowerShell precisa de permissões de nível de administrador para fazer alterações no seu computador.
Política de execução
- Descrição: Por padrão, a execução de scripts do PowerShell está desabilitada. Recomendamos permitir scripts RemoteSigned apenas para o escopo Atual.
- Referência: Sobre políticas de execução e Set-ExecutionPolicy.
- Comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.
- Parâmetro opcional:
-Force
. Ignora o prompt de confirmação.
Exemplos de erros
Install-Module : The 'Install-Module' command was found in the module 'PowerShellGet', but the module could not be
loaded. For more information, run 'Import-Module PowerShellGet'.
Import-Module : File C:\Program Files\WindowsPowerShell\Modules\PackageManagement\1.3.1\PackageManagement.psm1 cannot
be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
Pré-requisitos para o PowerShell
Audite sua instância do PowerShell executando o $PSVersionTable
comando.
Este comando produz a seguinte saída:
Name Value
---- -----
PSVersion 5.1.17763.316
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.316
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Estas instruções foram escritas e testadas num computador com o Windows 10 e as versões seguintes.
Pré-requisitos para a Galeria do PowerShell
Estas etapas preparam seu servidor para baixar módulos da Galeria do PowerShell.
Nota
A Galeria do PowerShell é suportada no Windows 10, Windows Server 2016 e PowerShell 6+.
Para obter informações sobre versões anteriores, consulte Instalando o PowerShellGet.
Execute o PowerShell como Administrador com uma política de execução elevada.
Instale o provedor de pacotes NuGet.
- Descrição: você precisa desse provedor para interagir com repositórios baseados em NuGet, como a Galeria do PowerShell.
- Referência: Install-PackageProvider.
- Comando:
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201
.
- Parâmetros opcionais:
-Proxy
. Especifica um servidor proxy para a solicitação.
-Force
. Ignora o prompt de confirmação.
Você receberá esta solicitação se o NuGet não estiver configurado:
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories.
The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\t\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running
'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import
the NuGet provider now?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
Configure a Galeria do PowerShell como um repositório confiável.
- Descrição: Por padrão, a Galeria do PowerShell é um repositório não confiável.
- Referência: Set-PSRepository.
- Comando:
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
.
- Parâmetro opcional:
-Proxy
. Especifica um servidor proxy para a solicitação.
Você receberá esse prompt se a Galeria do PowerShell não for confiável:
Untrusted repository
You are installing the modules from an untrusted repository.
If you trust this repository, change its InstallationPolicy value
by running the Set-PSRepository cmdlet. Are you sure you want to
install the modules from 'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):
Você pode confirmar essa alteração e auditar tudo PSRepositories
executando o Get-PSRepository
comando.
Instale a versão mais recente do PowerShellGet.
- Descrição: Este módulo contém as ferramentas usadas para obter outros módulos da Galeria do PowerShell. A versão 1.0.0.1 é fornecida com o Windows 10 e o Windows Server. É necessária a versão 1.6.0 ou superior. Para determinar qual versão está instalada, execute o
Get-Command -Module PowerShellGet
comando.
- Referência: Instalando o PowerShellGet.
- Comando:
Install-Module -Name PowerShellGet
.
- Parâmetros opcionais:
-Proxy
. Especifica um servidor proxy para a solicitação.
-Force
. Ignora o aviso "já instalado" e instala a versão mais recente.
Você recebe esse erro se não estiver usando a versão mais recente do PowerShellGet:
Install-Module : A parameter cannot be found that matches parameter name 'AllowPrerelease'.
At line:1 char:20
Install-Module abc -AllowPrerelease
~~~~~~~~~~~~~~~~
CategoryInfo : InvalidArgument: (:) [Install-Module], ParameterBindingException
FullyQualifiedErrorId : NamedParameterNotFound,Install-Module
Reinicie o PowerShell. Não é possível carregar a nova versão na sessão atual. Novas sessões do PowerShell carregam a versão mais recente do PowerShellGet.
Baixe e instale o módulo por meio da Galeria do PowerShell
Estas etapas baixam o módulo Az.ApplicationMonitor da Galeria do PowerShell.
- Certifique-se de que todos os pré-requisitos para a Galeria do PowerShell sejam atendidos.
- Execute o PowerShell como Administrador com uma política de execução elevada.
- Instale o módulo Az.ApplicationMonitor.
- Referência: Install-Module.
- Comando:
Install-Module -Name Az.ApplicationMonitor
.
- Parâmetros opcionais:
-Proxy
. Especifica um servidor proxy para a solicitação.
-AllowPrerelease
. Permite a instalação de versões alfa e beta.
-AcceptLicense
. Ignora o prompt "Aceitar licença"
-Force
. Ignora o aviso "Repositório não confiável".
Baixe e instale o módulo manualmente (opção offline)
Se, por qualquer motivo, você não puder se conectar ao módulo PowerShell, poderá baixar e instalar manualmente o módulo Az.ApplicationMonitor.
Baixe manualmente o arquivo nupkg mais recente
- Aceda a https://www.powershellgallery.com/packages/Az.ApplicationMonitor.
- Selecione a versão mais recente do arquivo na tabela Histórico de versões.
- Em Opções de Instalação, selecione Download Manual.
Opção 1: Instalar em um diretório de módulos do PowerShell
Instale o módulo do PowerShell baixado manualmente em um diretório do PowerShell para que ele possa ser descoberto por sessões do PowerShell.
Para obter mais informações, consulte Instalando um módulo do PowerShell.
Descompacte nupkg como um arquivo zip usando Expand-Archive (v1.0.1.0)
Descrição: A versão base do Microsoft.PowerShell.Archive (v1.0.1.0) não pode descompactar arquivos nupkg. Renomeie o arquivo com a extensão .zip.
Referência: Expand-Archive.
Comando:
$pathToNupkg = "C:\az.applicationmonitor.0.3.0-alpha.nupkg"
$pathToZip = ([io.path]::ChangeExtension($pathToNupkg, "zip"))
$pathToNupkg | rename-item -newname $pathToZip
$pathInstalledModule = "$Env:ProgramFiles\WindowsPowerShell\Modules\az.applicationmonitor"
Expand-Archive -LiteralPath $pathToZip -DestinationPath $pathInstalledModule
Descompacte nupkg usando Expand-Archive (v1.1.0.0)
Descrição: Use uma versão atual do Expand-Archive para descompactar arquivos nupkg sem alterar a extensão.
Referência: Expand-Archive e Microsoft.PowerShell.Archive.
Comando:
$pathToNupkg = "C:\az.applicationmonitor.0.2.1-alpha.nupkg"
$pathInstalledModule = "$Env:ProgramFiles\WindowsPowerShell\Modules\az.applicationmonitor"
Expand-Archive -LiteralPath $pathToNupkg -DestinationPath $pathInstalledModule
Opção 2: Descompacte e importe nupkg manualmente
Instale o módulo do PowerShell baixado manualmente em um diretório do PowerShell para que ele possa ser descoberto por sessões do PowerShell.
Para obter mais informações, consulte Instalando um módulo do PowerShell.
Se você estiver instalando o módulo em qualquer outro diretório, importe manualmente o módulo usando Import-Module.
Importante
As DLLs serão instaladas através de caminhos relativos.
Armazene o conteúdo do pacote no diretório de tempo de execução pretendido e confirme se as permissões de acesso permitem leitura, mas não gravação.
- Altere a extensão para ".zip" e extraia o conteúdo do pacote para o diretório de instalação pretendido.
- Encontre o caminho do arquivo Az.ApplicationMonitor.psd1.
- Execute o PowerShell como Administrador com uma política de execução elevada.
- Carregue o módulo usando o
Import-Module Az.ApplicationMonitor.psd1
comando.
Encaminhar o tráfego através de um proxy
Quando você monitora um computador em sua intranet privada, você precisa rotear o tráfego HTTP através de um proxy.
Os comandos do PowerShell para baixar e instalar o Az.ApplicationMonitor da Galeria do PowerShell oferecem suporte a um -Proxy
parâmetro.
Reveja as instruções anteriores quando escrever os scripts de instalação.
O SDK do Application Insights precisa enviar a telemetria do seu aplicativo para a Microsoft. Recomendamos que você defina as configurações de proxy para seu aplicativo em seu arquivo web.config. Para obter mais informações, consulte Como faço para obter passagem de proxy?.
Ativar monitorização
Use o comando para habilitar o Enable-ApplicationInsightsMonitoring
monitoramento.
Consulte a referência da API para obter uma descrição detalhada de como usar esse cmdlet.
Esta guia descreve os seguintes cmdlets, que são membros do módulo Az.ApplicationMonitor PowerShell:
Nota
- Para começar, você precisa de uma cadeia de conexão. Para obter mais informações, consulte Criar um recurso.
- Este cmdlet requer que você revise e aceite nossa licença e declaração de privacidade.
Nota
A 31 de março de 2025, o suporte da ingestão de chaves de instrumentação terminará. A ingestão de chaves de instrumentação continuará a funcionar, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar os novos recursos.
Importante
Este cmdlet requer uma sessão do PowerShell com permissões de administrador e uma política de execução elevada. Para obter mais informações, consulte Executar o PowerShell como administrador com uma política de execução elevada.
- Este cmdlet requer que você revise e aceite nossa licença e declaração de privacidade.
- O mecanismo de instrumentação adiciona sobrecarga adicional e está desligado por padrão.
Enable-InstrumentationEngine
Habilita o mecanismo de instrumentação definindo algumas chaves do Registro.
Reinicie o IIS para que as alterações entrem em vigor.
O mecanismo de instrumentação pode complementar os dados coletados pelos SDKs do .NET.
Ele coleta eventos e mensagens que descrevem a execução de um processo gerenciado. Esses eventos e mensagens incluem códigos de resultado de dependência, verbos HTTP e texto de comando SQL.
Ative o mecanismo de instrumentação se:
- Você já habilitou o monitoramento com o cmdlet Enable mas não habilitou o mecanismo de instrumentação.
- Você instrumentou manualmente seu aplicativo com os SDKs do .NET e deseja coletar telemetria extra.
Exemplos
Enable-InstrumentationEngine
Parâmetros
-AcceptLicense
Opcional. Use esta opção para aceitar a licença e a declaração de privacidade em instalações sem cabeça.
-Verbose
Parâmetro comum. Use essa opção para gerar logs detalhados.
Saída
Exemplo de saída da ativação bem-sucedida do mecanismo de instrumentação
Configuring IIS Environment for instrumentation engine...
Configuring registry for instrumentation engine...
Enable-ApplicationInsightsMonitoring
Permite o monitoramento de anexação sem código de aplicativos do IIS em um computador de destino.
Este cmdlet modifica o applicationHost.config do IIS e define algumas chaves do Registro.
Ele cria um arquivo applicationinsights.ikey.config, que define a chave de instrumentação usada por cada aplicativo.
O IIS carrega o RedfieldModule na inicialização, que injeta o SDK do Application Insights em aplicativos à medida que os aplicativos são iniciados.
Reinicie o IIS para que as alterações entrem em vigor.
Depois de ativar o monitoramento, recomendamos que você use o Live Metrics para verificar rapidamente se seu aplicativo está nos enviando telemetria.
Exemplos
Exemplo com uma única cadeia de conexão
Neste exemplo, todos os aplicativos no computador atual recebem uma única cadeia de conexão.
Enable-ApplicationInsightsMonitoring -ConnectionString 'InstrumentationKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/'
Exemplo com uma única chave de instrumentação
Neste exemplo, todos os aplicativos no computador atual recebem uma única chave de instrumentação.
Enable-ApplicationInsightsMonitoring -InstrumentationKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Exemplo com um mapa de teclas de instrumentação
Neste exemplo:
MachineFilter
corresponde ao computador atual usando o curinga '.*'
.
AppFilter='WebAppExclude'
fornece uma null
chave de instrumentação. O aplicativo especificado não é instrumentado.
AppFilter='WebAppOne'
atribui ao aplicativo especificado uma chave de instrumentação exclusiva.
AppFilter='WebAppTwo'
atribui ao aplicativo especificado uma chave de instrumentação exclusiva.
AppFilter
usa o curinga '.*'
para corresponder a quaisquer aplicativos Web que ainda não correspondam e atribui uma chave de instrumentação padrão.
- São adicionados espaços para facilitar a leitura.
Enable-ApplicationInsightsMonitoring -InstrumentationKeyMap `
` @(@{MachineFilter='.*';AppFilter='WebAppExclude'},
` @{MachineFilter='.*';AppFilter='WebAppOne';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx1'}},
` @{MachineFilter='.*';AppFilter='WebAppTwo';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2'}},
` @{MachineFilter='.*';AppFilter='.*';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxdefault'}})
Nota
A nomenclatura do AppFilter neste contexto pode ser confusa, AppFilter
define o filtro regex do nome do aplicativo (HostingEnvironment.SiteName no caso do .NET no IIS). VirtualPathFilter
define o filtro regex do caminho virtual (HostingEnvironment.ApplicationVirtualPath no caso do .NET no IIS). Para instrumentar um único aplicativo, você usaria o VirtualPathFilter da seguinte maneira: Enable-ApplicationInsightsMonitoring -InstrumentationKeyMap @(@{VirtualPathFilter="^/MyAppName$"; InstrumentationSettings=@{InstrumentationKey='<your ikey>'}})
Parâmetros
-ConnectionString
Obrigatório. Use esse parâmetro para fornecer uma única cadeia de conexão para uso por todos os aplicativos no computador de destino.
-InstrumentaçãoKey
Obrigatório. Use esse parâmetro para fornecer uma única chave de instrumentação para uso por todos os aplicativos no computador de destino.
-InstrumentationKeyMap
Obrigatório. Use esse parâmetro para fornecer várias chaves de instrumentação e um mapeamento das chaves de instrumentação usadas por cada aplicativo.
Você pode criar um único script de instalação para vários computadores definindo MachineFilter
.
Importante
Os aplicativos correspondem às regras na ordem em que as regras são fornecidas. Portanto, você deve especificar as regras mais específicas primeiro e as regras mais genéricas por último.
Esquema
@(@{MachineFilter='.*';AppFilter='.*';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'}})
- MachineFilter é um regex C# necessário do nome do computador ou da VM.
- '.*' corresponde a todos
- 'ComputerName' corresponde apenas a computadores com o nome exato especificado.
- AppFilter é um regex C# necessário do Nome do Site do IIS. Você pode obter uma lista de sites em seu servidor executando o comando get-iissite.
- '.*' corresponde a todos
- 'SiteName' corresponde apenas ao Site do IIS com o nome exato especificado.
- InstrumentationKey é necessário para habilitar o monitoramento de aplicativos que correspondem aos dois filtros anteriores.
- Deixe esse valor nulo se quiser definir regras para excluir o monitoramento.
-EnableInstrumentationEngine
Opcional. Use essa opção para permitir que o mecanismo de instrumentação colete eventos e mensagens sobre o que está acontecendo durante a execução de um processo gerenciado. Esses eventos e mensagens incluem códigos de resultado de dependência, verbos HTTP e texto de comando SQL.
O mecanismo de instrumentação adiciona sobrecarga e está desligado por padrão.
-AcceptLicense
Opcional. Use esta opção para aceitar a licença e a declaração de privacidade em instalações sem cabeça.
-IgnoreSharedConfig
Quando você tem um cluster de servidores Web, você pode estar usando uma configuração compartilhada.
O HttpModule não pode ser injetado nesta configuração compartilhada.
Esse script falha com a mensagem de que etapas de instalação adicionais são necessárias.
Use essa opção para ignorar essa verificação e continuar instalando os pré-requisitos.
Para obter mais informações, consulte conflito conhecido com iis-shared-configuration
-Verbose
Parâmetro comum. Use essa opção para exibir logs detalhados.
-E Se
Parâmetro comum. Use essa opção para testar e validar seus parâmetros de entrada sem realmente habilitar o monitoramento.
Saída
Exemplo de saída de uma ativação bem-sucedida
Initiating Disable Process
Applying transformation to 'C:\Windows\System32\inetsrv\config\applicationHost.config'
'C:\Windows\System32\inetsrv\config\applicationHost.config' backed up to 'C:\Windows\System32\inetsrv\config\applicationHost.config.backup-2019-03-26_08-59-52z'
in :1,237
No element in the source document matches '/configuration/location[@path='']/system.webServer/modules/add[@name='ManagedHttpModuleHelper']'
Not executing RemoveAll (transform line 1, 546)
Transformation to 'C:\Windows\System32\inetsrv\config\applicationHost.config' was successfully applied. Operation: 'disable'
GAC Module will not be removed, since this operation might cause IIS instabilities
Configuring IIS Environment for codeless attach...
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN[Environment]
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC[Environment]
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS[Environment]
Configuring IIS Environment for instrumentation engine...
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN[Environment]
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC[Environment]
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS[Environment]
Configuring registry for instrumentation engine...
Successfully disabled Application Insights Agent
Installing GAC module 'C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\0.2.0\content\Runtime\Microsoft.AppInsights.IIS.ManagedHttpModuleHelper.dll'
Applying transformation to 'C:\Windows\System32\inetsrv\config\applicationHost.config'
Found GAC module Microsoft.AppInsights.IIS.ManagedHttpModuleHelper.ManagedHttpModuleHelper, Microsoft.AppInsights.IIS.ManagedHttpModuleHelper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
'C:\Windows\System32\inetsrv\config\applicationHost.config' backed up to 'C:\Windows\System32\inetsrv\config\applicationHost.config.backup-2019-03-26_08-59-52z_1'
Transformation to 'C:\Windows\System32\inetsrv\config\applicationHost.config' was successfully applied. Operation: 'enable'
Configuring IIS Environment for codeless attach...
Configuring IIS Environment for instrumentation engine...
Configuring registry for instrumentation engine...
Updating app pool permissions...
Successfully enabled Application Insights Agent
Disable-InstrumentationEngine
Desativa o mecanismo de instrumentação removendo algumas chaves do Registro.
Reinicie o IIS para que as alterações entrem em vigor.
Exemplos
Disable-InstrumentationEngine
Parâmetros
-Verbose
Parâmetro comum. Use essa opção para gerar logs detalhados.
Saída
Exemplo de saída da desativação bem-sucedida do mecanismo de instrumentação
Configuring IIS Environment for instrumentation engine...
Registry: removing 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN[Environment]'
Registry: removing 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC[Environment]'
Registry: removing 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS[Environment]'
Configuring registry for instrumentation engine...
Disable-ApplicationInsightsMonitoring
Desabilita o monitoramento no computador de destino.
Este cmdlet remove edições no applicationHost.config do IIS e remove chaves do Registro.
Exemplos
Disable-ApplicationInsightsMonitoring
Parâmetros
-Verbose
Parâmetro comum. Use essa opção para exibir logs detalhados.
Saída
Exemplo de saída da desativação bem-sucedida do monitoramento
Initiating Disable Process
Applying transformation to 'C:\Windows\System32\inetsrv\config\applicationHost.config'
'C:\Windows\System32\inetsrv\config\applicationHost.config' backed up to 'C:\Windows\System32\inetsrv\config\applicationHost.config.backup-2019-03-26_08-59-00z'
in :1,237
No element in the source document matches '/configuration/location[@path='']/system.webServer/modules/add[@name='ManagedHttpModuleHelper']'
Not executing RemoveAll (transform line 1, 546)
Transformation to 'C:\Windows\System32\inetsrv\config\applicationHost.config' was successfully applied. Operation: 'disable'
GAC Module will not be removed, since this operation might cause IIS instabilities
Configuring IIS Environment for codeless attach...
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN[Environment]
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC[Environment]
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS[Environment]
Configuring IIS Environment for instrumentation engine...
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN[Environment]
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC[Environment]
Registry: skipping non-existent 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS[Environment]
Configuring registry for instrumentation engine...
Successfully disabled Application Insights Agent
Get-ApplicationInsightsMonitoringConfig
Obtém o arquivo de configuração e imprime os valores no console.
Exemplos
Get-ApplicationInsightsMonitoringConfig
Parâmetros
Nenhum parâmetro necessário.
Saída
Exemplo de saída da leitura do arquivo de configuração
RedfieldConfiguration:
Filters:
0)InstrumentationKey: AppFilter: WebAppExclude MachineFilter: .*
1)InstrumentationKey: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2 AppFilter: WebAppTwo MachineFilter: .*
2)InstrumentationKey: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxdefault AppFilter: .* MachineFilter: .*
Get-ApplicationInsightsMonitoringStatus
Este cmdlet fornece informações de solução de problemas sobre o Application Insights Agent.
Use este cmdlet para investigar o status de monitoramento, a versão do Módulo PowerShell e inspecionar o processo em execução.
Este cmdlet relata informações de versão e informações sobre os principais arquivos necessários para o monitoramento.
Exemplos
Exemplo: Estado da candidatura
Execute o comando Get-ApplicationInsightsMonitoringStatus
para exibir o status de monitoramento de sites.
Get-ApplicationInsightsMonitoringStatus
IIS Websites:
SiteName : Default Web Site
ApplicationPoolName : DefaultAppPool
SiteId : 1
SiteState : Stopped
SiteName : DemoWebApp111
ApplicationPoolName : DemoWebApp111
SiteId : 2
SiteState : Started
ProcessId : not found
SiteName : DemoWebApp222
ApplicationPoolName : DemoWebApp222
SiteId : 3
SiteState : Started
ProcessId : 2024
Instrumented : true
InstrumentationKey : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx123
SiteName : DemoWebApp333
ApplicationPoolName : DemoWebApp333
SiteId : 4
SiteState : Started
ProcessId : 5184
AppAlreadyInstrumented : true
Neste exemplo;
O Identificador de Máquina é um ID anónimo utilizado para identificar exclusivamente o seu servidor. Se você criar uma solicitação de suporte, precisamos dessa ID para encontrar logs para o seu servidor.
Site padrão é interrompido no IIS
O DemoWebApp111 foi iniciado no IIS, mas não recebeu nenhuma solicitação. Este relatório mostra que não há nenhum processo em execução (ProcessId: não encontrado).
DemoWebApp222 está em execução e está sendo monitorado (Instrumentado: true). Com base na configuração do usuário, a Chave de Instrumentação xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx123 foi correspondida para este site.
O DemoWebApp333 foi instrumentado manualmente usando o SDK do Application Insights. O Application Insights Agent detetou o SDK e não monitora este site.
A presença de significa que o agente do Application Insights identificou uma dll conflitante carregada no aplicativo Web, assumiu que o aplicativo Web é instrumentado AppAlreadyInstrumented : true
manualmente e que o agente recuou e não está instrumentando esse processo.
Instrumented : true
indica que o agente do Application Insights instrumentou com êxito o aplicativo Web em execução no processo de w3wp.exe especificado.
Execute o comando Get-ApplicationInsightsMonitoringStatus -PowerShellModule
para exibir informações sobre o módulo atual:
Get-ApplicationInsightsMonitoringStatus -PowerShellModule
PowerShell Module version:
0.4.0-alpha
Application Insights SDK version:
2.9.0.3872
Executing PowerShell Module Assembly:
Microsoft.ApplicationInsights.Redfield.Configurator.PowerShell, Version=2.8.14.11432, Culture=neutral, PublicKeyToken=31bf3856ad364e35
PowerShell Module Directory:
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\0.2.2\content\PowerShell
Runtime Paths:
ParentDirectory (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content
ConfigurationPath (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\applicationInsights.ikey.config
ManagedHttpModuleHelperPath (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.AppInsights.IIS.ManagedHttpModuleHelper.dll
RedfieldIISModulePath (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.RedfieldIISModule.dll
InstrumentationEngine86Path (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation32\MicrosoftInstrumentationEngine_x86.dll
InstrumentationEngine64Path (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\MicrosoftInstrumentationEngine_x64.dll
InstrumentationEngineExtensionHost86Path (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation32\Microsoft.ApplicationInsights.ExtensionsHost_x86.dll
InstrumentationEngineExtensionHost64Path (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\Microsoft.ApplicationInsights.ExtensionsHost_x64.dll
InstrumentationEngineExtensionConfig86Path (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation32\Microsoft.InstrumentationEngine.Extensions.config
InstrumentationEngineExtensionConfig64Path (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\Microsoft.InstrumentationEngine.Extensions.config
ApplicationInsightsSdkPath (Exists: True)
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.dll
Exemplo: Status do tempo de execução
Você pode inspecionar o processo no computador instrumentado para ver se todas as DLLs estão carregadas. Se o monitoramento estiver funcionando, pelo menos 12 DLLs devem ser carregadas.
Execute o comando Get-ApplicationInsightsMonitoringStatus -InspectProcess
:
Get-ApplicationInsightsMonitoringStatus -InspectProcess
iisreset.exe /status
Status for IIS Admin Service ( IISADMIN ) : Running
Status for Windows Process Activation Service ( WAS ) : Running
Status for Net.Msmq Listener Adapter ( NetMsmqActivator ) : Running
Status for Net.Pipe Listener Adapter ( NetPipeActivator ) : Running
Status for Net.Tcp Listener Adapter ( NetTcpActivator ) : Running
Status for World Wide Web Publishing Service ( W3SVC ) : Running
handle64.exe -accepteula -p w3wp
BF0: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.AI.ServerTelemetryChannel.dll
C58: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.AI.AzureAppServices.dll
C68: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.AI.DependencyCollector.dll
C78: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.AI.WindowsServer.dll
C98: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.AI.Web.dll
CBC: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.AI.PerfCounterCollector.dll
DB0: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.AI.Agent.Intercept.dll
B98: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.RedfieldIISModule.dll
BB4: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.RedfieldIISModule.Contracts.dll
BCC: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.Redfield.Lightup.dll
BE0: File (R-D) C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.dll
listdlls64.exe -accepteula w3wp
0x0000000019ac0000 0x127000 C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\MicrosoftInstrumentationEngine_x64.dll
0x00000000198b0000 0x4f000 C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\Microsoft.ApplicationInsights.ExtensionsHost_x64.dll
0x000000000c460000 0xb2000 C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Instrumentation64\Microsoft.ApplicationInsights.Extensions.Base_x64.dll
0x000000000ad60000 0x108000 C:\Windows\TEMP\2.4.0.0.Microsoft.ApplicationInsights.Extensions.Intercept_x64.dll
Parâmetros
(Sem parâmetros)
Por padrão, esse cmdlet relata o status de monitoramento de aplicativos Web.
Use esta opção para verificar se seu aplicativo foi instrumentado com êxito.
Você também pode analisar qual Chave de Instrumentação foi correspondida ao seu site.
-PowerShellModule
Opcional. Use essa opção para relatar os números de versão e os caminhos das DLLs necessárias para monitoramento.
Use essa opção se precisar identificar a versão de qualquer DLL, incluindo o SDK do Application Insights.
-Inspecionar o processo
Opcional. Use essa opção para relatar se o IIS está em execução.
Ele baixa ferramentas externas para determinar se as DLLs necessárias são carregadas no tempo de execução do IIS.
Se esse processo falhar por qualquer motivo, você pode executar estes comandos manualmente:
- iisreset.exe /status
- handle64.exe -p w3wp | findstr /I "InstrumentationEngine AI. ApplicationInsights"
- listdlls64.exe w3wp | findstr /I "InstrumentationEngine AI ApplicationInsights"
-Force
Opcional. Usado somente com InspectProcess. Use essa opção para ignorar o prompt do usuário que aparece antes que mais ferramentas sejam baixadas.
Set-ApplicationInsightsMonitoringConfig
Define o arquivo de configuração sem fazer uma reinstalação completa.
Reinicie o IIS para que as alterações entrem em vigor.
Importante
Este cmdlet requer uma sessão do PowerShell com permissões de administrador.
Exemplos
Exemplo com uma única chave de instrumentação
Neste exemplo, todos os aplicativos no computador atual recebem uma única chave de instrumentação.
Enable-ApplicationInsightsMonitoring -InstrumentationKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Exemplo com um mapa de teclas de instrumentação
Neste exemplo:
MachineFilter
corresponde ao computador atual usando o curinga '.*'
.
AppFilter='WebAppExclude'
fornece uma null
chave de instrumentação. O aplicativo especificado não é instrumentado.
AppFilter='WebAppOne'
atribui ao aplicativo especificado uma chave de instrumentação exclusiva.
AppFilter='WebAppTwo'
atribui ao aplicativo especificado uma chave de instrumentação exclusiva.
AppFilter
usa o curinga '.*'
para corresponder a aplicativos Web que ainda não correspondem e atribui uma chave de instrumentação padrão.
- São adicionados espaços para facilitar a leitura.
Enable-ApplicationInsightsMonitoring -InstrumentationKeyMap `
` @(@{MachineFilter='.*';AppFilter='WebAppExclude'},
` @{MachineFilter='.*';AppFilter='WebAppOne';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx1'}},
` @{MachineFilter='.*';AppFilter='WebAppTwo';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2'}},
` @{MachineFilter='.*';AppFilter='.*';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxdefault'}})
Parâmetros
-InstrumentaçãoKey
Obrigatório. Use esse parâmetro para fornecer uma única chave de instrumentação para uso por todos os aplicativos no computador de destino.
-InstrumentationKeyMap
Obrigatório. Use esse parâmetro para fornecer várias chaves de instrumentação e um mapeamento das chaves de instrumentação usadas por cada aplicativo.
Você pode criar um único script de instalação para vários computadores definindo MachineFilter
.
Importante
Os aplicativos correspondem às regras na ordem em que as regras são fornecidas. Portanto, você deve especificar as regras mais específicas primeiro e as regras mais genéricas por último.
Esquema
@(@{MachineFilter='.*';AppFilter='.*';InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'})
- MachineFilter é um regex C# necessário do nome do computador ou da VM.
- '.*' corresponde a todos
- 'ComputerName' corresponde apenas a computadores com o nome especificado.
- AppFilter é um regex C# necessário do nome do computador ou da VM.
- '.*' corresponde a todos
- 'ApplicationName' corresponde apenas a aplicativos do IIS com o nome especificado.
- InstrumentationKey é necessário para habilitar o monitoramento dos aplicativos que correspondem aos dois filtros anteriores.
- Deixe esse valor nulo se quiser definir regras para excluir o monitoramento.
-Verbose
Parâmetro comum. Use essa opção para exibir logs detalhados.
Saída
Por padrão, nenhuma saída.
Exemplo de saída detalhada da configuração do arquivo de configuração via -InstrumentationKey
VERBOSE: Operation: InstallWithIkey
VERBOSE: InstrumentationKeyMap parsed:
Filters:
0)InstrumentationKey: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx AppFilter: .* MachineFilter: .*
VERBOSE: set config file
VERBOSE: Config File Path:
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\applicationInsights.ikey.config
Exemplo de saída detalhada da configuração do arquivo de configuração via -InstrumentationKeyMap
VERBOSE: Operation: InstallWithIkeyMap
VERBOSE: InstrumentationKeyMap parsed:
Filters:
0)InstrumentationKey: AppFilter: WebAppExclude MachineFilter: .*
1)InstrumentationKey: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2 AppFilter: WebAppTwo MachineFilter: .*
2)InstrumentationKey: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxdefault AppFilter: .* MachineFilter: .*
VERBOSE: set config file
VERBOSE: Config File Path:
C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\applicationInsights.ikey.config
Start-ApplicationInsightsMonitoramentoTrace
Coleta eventos ETW do tempo de execução de anexação sem código.
Este cmdlet é uma alternativa à execução do PerfView.
Os eventos são coletados, impressos no console em tempo real e salvos em um arquivo ETL. Você pode abrir o arquivo ETL de saída com PerfView para investigação adicional.
Esse cmdlet é executado até atingir a duração do tempo limite (padrão 5 minutos) ou ser interrompido manualmente (Ctrl + C
).
Exemplos
Como recolher eventos
Normalmente, pedimos que você colete eventos para investigar por que seu aplicativo não está sendo instrumentado.
O tempo de execução da anexação sem código emite eventos ETW quando o IIS é iniciado e quando o aplicativo é iniciado.
Para recolher estes eventos:
- Em um console cmd com privilégios de administrador, execute
iisreset /stop
para parar o IIS e todos os aplicativos Web.
- Execute este cmdlet
- Em um console cmd com privilégios de administrador, execute
iisreset /start
para iniciar o IIS.
- Tente navegar até seu aplicativo.
- Depois que o aplicativo terminar de carregar, você poderá pará-lo manualmente (
Ctrl + C
) ou aguardar o tempo limite.
Que eventos recolher
Você tem três opções ao coletar eventos:
- Use a opção
-CollectSdkEvents
para coletar eventos emitidos pelo SDK do Application Insights.
- Use o switch
-CollectRedfieldEvents
para coletar eventos emitidos pelo Application Insights Agent e pelo Redfield Runtime. Esses logs são úteis ao diagnosticar o IIS e a inicialização do aplicativo.
- Use ambas as opções para coletar ambos os tipos de evento.
- Por padrão, se nenhuma opção for especificada, ambos os tipos de evento serão coletados.
Parâmetros
-MaxDurationInMinutes
Opcional. Use esse parâmetro para definir por quanto tempo esse script deve coletar eventos. A predefinição é 5 minutos.
-LogDirectory
Opcional. Use essa opção para definir o diretório de saída do arquivo ETL.
Por padrão, esse arquivo é criado no diretório Módulos do PowerShell.
O caminho completo é exibido durante a execução do script.
-CollectSdkEvents
Opcional. Use essa opção para coletar eventos do SDK do Application Insights.
-CollectRedfieldEvents
Opcional. Use essa opção para coletar eventos do Application Insights Agent e do tempo de execução do Redfield.
-Verbose
Parâmetro comum. Use essa opção para gerar logs detalhados.
Saída
Exemplo de logs de inicialização do aplicativo
Start-ApplicationInsightsMonitoringTrace -CollectRedfieldEvents
Starting...
Log File: C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\logs\20190627_144217_ApplicationInsights_ETW_Trace.etl
Tracing enabled, waiting for events.
Tracing will timeout in 5 minutes. Press CTRL+C to cancel.
2:42:31 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace Resolved variables to: MicrosoftAppInsights_ManagedHttpModulePath='C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.RedfieldIISModule.dll', MicrosoftAppInsights_ManagedHttpModuleType='Microsoft.ApplicationInsights.RedfieldIISModule.RedfieldIISModule'
2:42:31 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace Resolved variables to: MicrosoftDiagnosticServices_ManagedHttpModulePath2='', MicrosoftDiagnosticServices_ManagedHttpModuleType2=''
2:42:31 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace Environment variable 'MicrosoftDiagnosticServices_ManagedHttpModulePath2' or 'MicrosoftDiagnosticServices_ManagedHttpModuleType2' is null, skipping managed dll loading
2:42:31 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace MulticastHttpModule.constructor, success, 70 ms
2:42:31 PM EVENT: Microsoft-ApplicationInsights-RedfieldIISModule Trace Current assembly 'Microsoft.ApplicationInsights.RedfieldIISModule, Version=2.8.18.27202, Culture=neutral, PublicKeyToken=f23a46de0be5d6f3' location 'C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.RedfieldIISModule.dll'
2:42:31 PM EVENT: Microsoft-ApplicationInsights-RedfieldIISModule Trace Matched filter '.*'~'STATUSMONITORTE', '.*'~'DemoWithSql'
2:42:31 PM EVENT: Microsoft-ApplicationInsights-RedfieldIISModule Trace Lightup assembly calculated path: 'C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.Redfield.Lightup.dll'
2:42:31 PM EVENT: Microsoft-ApplicationInsights-FrameworkLightup Trace Loaded applicationInsights.config from assembly's resource Microsoft.ApplicationInsights.Redfield.Lightup, Version=2.8.18.27202, Culture=neutral, PublicKeyToken=f23a46de0be5d6f3/Microsoft.ApplicationInsights.Redfield.Lightup.ApplicationInsights-recommended.config
2:42:34 PM EVENT: Microsoft-ApplicationInsights-FrameworkLightup Trace Successfully attached ApplicationInsights SDK
2:42:34 PM EVENT: Microsoft-ApplicationInsights-RedfieldIISModule Trace RedfieldIISModule.LoadLightupAssemblyAndGetLightupHttpModuleClass, success, 2687 ms
2:42:34 PM EVENT: Microsoft-ApplicationInsights-RedfieldIISModule Trace RedfieldIISModule.CreateAndInitializeApplicationInsightsHttpModules(lightupHttpModuleClass), success
2:42:34 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace ManagedHttpModuleHelper, multicastHttpModule.Init() success, 3288 ms
2:42:35 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace Resolved variables to: MicrosoftAppInsights_ManagedHttpModulePath='C:\Program Files\WindowsPowerShell\Modules\Az.ApplicationMonitor\content\Runtime\Microsoft.ApplicationInsights.RedfieldIISModule.dll', MicrosoftAppInsights_ManagedHttpModuleType='Microsoft.ApplicationInsights.RedfieldIISModule.RedfieldIISModule'
2:42:35 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace Resolved variables to: MicrosoftDiagnosticServices_ManagedHttpModulePath2='', MicrosoftDiagnosticServices_ManagedHttpModuleType2=''
2:42:35 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace Environment variable 'MicrosoftDiagnosticServices_ManagedHttpModulePath2' or 'MicrosoftDiagnosticServices_ManagedHttpModuleType2' is null, skipping managed dll loading
2:42:35 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace MulticastHttpModule.constructor, success, 0 ms
2:42:35 PM EVENT: Microsoft-ApplicationInsights-RedfieldIISModule Trace RedfieldIISModule.CreateAndInitializeApplicationInsightsHttpModules(lightupHttpModuleClass), success
2:42:35 PM EVENT: Microsoft-ApplicationInsights-IIS-ManagedHttpModuleHelper Trace ManagedHttpModuleHelper, multicastHttpModule.Init() success, 0 ms
Timeout Reached. Stopping...