Esta pestaña describe cómo incorporarse a la Galería de PowerShell y descargar el módulo ApplicationMonitor.
Se incluyen los parámetros más comunes que necesitará para empezar.
También proporcionamos instrucciones de descarga manual en caso de que no tenga acceso a Internet.
Conseguir una cadena de conexión
Para empezar, necesita una cadena de conexión. Para obtener más información, consulte Cadenas de conexión.
Nota:
El 31 de marzo de 2025 finalizará la compatibilidad con la ingesta de claves de instrumentación. La ingesta de claves de instrumentación seguirá funcionando, pero la característica ya no recibirá actualizaciones ni soporte técnico. Transición a las cadenas de conexión para aprovechar las nuevas funcionalidades.
Ejecución de PowerShell como administrador con una directiva de ejecución con privilegios elevados
Ejecutar como administrador
PowerShell necesita permisos de nivel de administrador para hacer cambios en el equipo.
Directiva de ejecución
- Descripción: De forma predeterminada, la ejecución de scripts de PowerShell está deshabilitada. Le recomendamos que permita los scripts de RemoteSigned solo para el ámbito actual.
- Referencia: Información sobre las directivas de ejecución y Set-ExecutionPolicy.
- Comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.
- Parámetro opcional:
-Force
. Se omite el mensaje de confirmación.
Ejemplos de errores
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.
Requisitos previos para PowerShell
Ejecute el comando $PSVersionTable
para auditar la instancia de PowerShell.
Este comando genera el siguiente resultado:
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 instrucciones se han escrito y probado en un equipo que ejecuta Windows 10 y las versiones mencionadas.
Requisitos previos de la Galería de PowerShell
Con estos pasos, se prepara al servidor para descargar módulos de la Galería de PowerShell.
Nota:
La Galería de PowerShell es compatible con Windows 10, con Windows Server 2016 y con PowerShell 6 y versiones posteriores.
Para obtener información sobre las versiones anteriores, consulte Instalación de PowerShellGet.
Ejecute PowerShell como administrador con una directiva de ejecución con privilegios elevados.
Instale el proveedor de paquetes NuGet.
- Descripción: Necesita este proveedor para interactuar con repositorios basados en NuGet, como la Galería de PowerShell.
- Referencia: Install-PackageProvider.
- Comando:
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201
.
- Parámetros opcionales:
-Proxy
. Especifica un servidor proxy para la solicitud.
-Force
. Se omite el mensaje de confirmación.
Recibirá este mensaje si NuGet no se ha 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 la Galería de PowerShell como un repositorio de confianza.
- Descripción: De forma predeterminada, la Galería de PowerShell no es un repositorio de confianza.
- Referencia: Set-PSRepository.
- Comando:
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
.
- Parámetro opcional:
-Proxy
. Especifica un servidor proxy para la solicitud.
Recibirá este mensaje si la Galería de PowerShell no es de confianza:
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"):
Puede confirmar este cambio y auditar todos los PSRepositories
si ejecuta el comando Get-PSRepository
.
Instale la versión más reciente de PowerShellGet.
- Descripción: Este módulo contiene las herramientas que se usan para obtener otros módulos de la Galería de PowerShell. La versión 1.0.0.1 se distribuye con Windows 10 y Windows Server. Se requiere la versión 1.6.0 o posterior. Para determinar qué versión está instalada, ejecute el comando
Get-Command -Module PowerShellGet
.
- Referencia: Instalación de PowerShellGet.
- Comando:
Install-Module -Name PowerShellGet
.
- Parámetros opcionales:
-Proxy
. Especifica un servidor proxy para la solicitud.
-Force
. Omite la advertencia de que ya está instalado e instala la versión más reciente.
Recibe este error si no usa la versión más reciente de 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 PowerShell. No puede cargar la nueva versión en la sesión actual. Las nuevas sesiones de PowerShell cargan la última versión de PowerShellGet.
Descarga e instalación del módulo a través de la Galería de PowerShell
Con estos pasos, descargará el módulo Az.ApplicationMonitor desde la Galería de PowerShell.
- Asegúrese de que se cumplen todos los requisitos previos de la Galería de PowerShell.
- Ejecute PowerShell como administrador con una directiva de ejecución con privilegios elevados.
- Instale el módulo Az.ApplicationMonitor.
- Referencia: Install-Module.
- Comando:
Install-Module -Name Az.ApplicationMonitor
.
- Parámetros opcionales:
-Proxy
. Especifica un servidor proxy para la solicitud.
-AllowPrerelease
. Permite la instalación de las versiones alfa y beta.
-AcceptLicense
. Omite el mensaje para aceptar la licencia.
-Force
. Omite la advertencia de repositorio de confianza.
Descarga e instalación manual del módulo (opción sin conexión)
Si por algún motivo no puede conectarse al módulo de PowerShell, puede descargar e instalar el módulo Az.ApplicationMonitor de forma manual.
Descarga manual del archivo nupkg más reciente
- Ir a https://www.powershellgallery.com/packages/Az.ApplicationMonitor.
- Seleccione la versión más reciente del archivo en la tabla Historial de versiones.
- En Opciones de instalación, seleccione Descarga manual.
Opción 1: Instalación en un directorio de módulos de PowerShell
Instale el módulo de PowerShell descargado manualmente en un directorio de PowerShell para que se pueda detectar en las sesiones de PowerShell.
Para obtener más información, consulte Instalación de un módulo de PowerShell.
Descompresión de nupkg como un archivo ZIP mediante Expand-Archive (v1.0.1.0)
Descripción: La versión base de Microsoft.PowerShell.Archive (v1.0.1.0) no puede descomprimir los archivos nupkg. Cambie el nombre del archivo con la extensión .zip.
Referencia: 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
Descompresión de nupkg mediante Expand-Archive (v1.1.0.0)
Descripción: Use una versión actual de Expand-Archive para descomprimir los archivos nupkg sin cambiar la extensión.
Referencia: Expand-Archive y 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
Opción 2: Descompresión e importación manual de nupkg
Instale el módulo de PowerShell descargado manualmente en un directorio de PowerShell para que se pueda detectar en las sesiones de PowerShell.
Para obtener más información, consulte Instalación de un módulo de PowerShell.
Si va a instalar el módulo en cualquier otro directorio, importe manualmente el módulo mediante Import-Module.
Importante
Los archivos DLL se instalarán mediante las rutas de acceso relativas.
Almacene el contenido del paquete en el directorio del entorno de ejecución previsto y confirme que los permisos de acceso permiten la lectura pero no la escritura.
- Cambie la extensión por ".zip" y extraiga el contenido del paquete en el directorio de instalación que quiera.
- Busque la ruta de acceso del archivo Az.ApplicationMonitor.psd1.
- Ejecute PowerShell como administrador con una directiva de ejecución con privilegios elevados.
- Cargue el módulo con el comando
Import-Module Az.ApplicationMonitor.psd1
.
Enrutamiento del tráfico a través de un proxy
Al supervisar un ordenador en su intranet privada, necesita enrutar el tráfico HTTP a través de un proxy.
Los comandos de PowerShell para descargar e instalar Az.ApplicationMonitor desde la Galería de PowerShell admiten un parámetro -Proxy
.
Consulte las instrucciones anteriores cuando escriba los scripts de instalación.
El SDK de Application Insights necesita enviar la telemetría de su aplicación a Microsoft. Le recomendamos que configure las opciones de configuración de proxy de la aplicación en el archivo web.config. Para obtener más información, consulte Cómo lograr el acceso directo de proxy.
Habilitar supervisión
Use el comando Enable-ApplicationInsightsMonitoring
para habilitar la supervisión.
Consulte la referencia de la API para obtener una descripción detallada de cómo usar este cmdlet.
Esta pestaña describe los siguientes cmdlets, que son miembros del módulo de PowerShell Az.ApplicationMonitor:
Nota:
- Para empezar, necesita una cadena de conexión. Para más información, consulte Crear un recurso.
- Este cmdlet requiere que revise y acepte la licencia, y la declaración de privacidad.
Nota
El 31 de marzo de 2025 finalizará la compatibilidad con la ingesta de claves de instrumentación. La ingesta de claves de instrumentación seguirá funcionando, pero la característica ya no recibirá actualizaciones ni soporte técnico. Transición a las cadenas de conexión para aprovechar las nuevas funcionalidades.
Enable-InstrumentationEngine
Habilita el motor de instrumentación mediante la definición de algunas claves del Registro.
Reinicie IIS para aplicar los cambios.
El motor de instrumentación puede complementar los datos recopilados por los SDK de .NET.
Recopila los eventos y mensajes que describen la ejecución de un proceso administrado. Estos eventos y mensajes incluyen códigos de resultado de la dependencia, verbos HTTP y texto de comando SQL.
Habilite el motor de instrumentación si:
- Ya ha habilitado la supervisión con el cmdlet Enable pero no ha habilitado el motor de instrumentación.
- Ha instrumentado manualmente su aplicación con los SDK .NET y quiere recopilar más telemetría.
Ejemplos
Enable-InstrumentationEngine
Parámetros
-AcceptLicense
Opcional. Use este modificador para aceptar la licencia y la declaración de privacidad en las instalaciones sin periféricos.
-Verbose
Parámetro común. Use este modificador para generar registros detallados.
Output
Salida de ejemplo al habilitar correctamente el motor de instrumentación
Configuring IIS Environment for instrumentation engine...
Configuring registry for instrumentation engine...
Enable-ApplicationInsightsMonitoring.
Permite adjuntar sin código la supervisión de aplicaciones IIS en un equipo de destino.
Este cmdlet modifica el applicationHost.config de IIS y establece algunas claves del registro.
También crea un archivo applicationinsights.ikey.config, que define la clave de instrumentación que usa cada aplicación.
IIS carga RedfieldModule en el inicio, que inyecta el SDK de Application Insights en las aplicaciones cuando éstas se inician.
Reinicie IIS para que los cambios surtan efecto.
Después de habilitar la supervisión, se recomienda que use Live Metrics para comprobar rápidamente si la aplicación enviaba telemetría.
Ejemplos
Ejemplo con una sola cadena de conexión
En este ejemplo, a todas las aplicaciones del equipo actual se les asigna una única cadena de conexión.
Enable-ApplicationInsightsMonitoring -ConnectionString 'InstrumentationKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/'
Ejemplo con una única clave de instrumentación
En este ejemplo, a todas las aplicaciones en el equipo actual se les asigna una única clave de instrumentación.
Enable-ApplicationInsightsMonitoring -InstrumentationKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Ejemplo con un mapa de claves de instrumentación
En este ejemplo:
MachineFilter
busca la correspondencia con el equipo actual usando el comodín '.*'
.
AppFilter='WebAppExclude'
proporciona una clave de instrumentación null
. La aplicación especificada no está instrumentada.
AppFilter='WebAppOne'
asigna una clave de instrumentación única a la aplicación especificada.
AppFilter='WebAppTwo'
asigna una clave de instrumentación única a la aplicación especificada.
AppFilter
usa el comodín '.*'
para buscar coincidencia con las aplicaciones web con las que aún no coincide y asigna una clave de instrumentación predeterminada.
- Se agregan espacios para mejorar la legibilidad.
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:
La denominación de AppFilter en este contexto puede ser confusa; AppFilter
establece el filtro regex del nombre de la aplicación (HostingEnvironment.SiteName en el caso de .NET en IIS). VirtualPathFilter
establece el filtro regex de la ruta de acceso virtual (HostingEnvironment.ApplicationVirtualPath en el caso de .NET en IIS). Para instrumentar una sola aplicación, debe usar VirtualPathFilter de la siguiente manera: Enable-ApplicationInsightsMonitoring -InstrumentationKeyMap @(@{VirtualPathFilter="^/MyAppName$"; InstrumentationSettings=@{InstrumentationKey='<your ikey>'}})
.
Parámetros
-ConnectionString
Necesario. Use este parámetro para proporcionar una única clave de conexión para que la usen todas las aplicaciones del equipo de destino.
-InstrumentationKey
Necesario. Use este parámetro para proporcionar una única clave de instrumentación para que la usen todas las aplicaciones en el equipo de destino.
-InstrumentationKeyMap
Necesario. Use este parámetro para proporcionar varias claves de instrumentación y una asignación de las claves de instrumentación utilizadas por cada aplicación.
Puede crear un solo script de instalación para varios equipos si establece MachineFilter
.
Importante
Las aplicaciones coinciden con las reglas en el orden en que estas se proporcionan. Por tanto, debe especificar las reglas más específicas en primer lugar y las más genéricas las últimas.
Schema
@(@{MachineFilter='.*';AppFilter='.*';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'}})
- MachineFilter es una expresión regular de C# requerida del nombre de la máquina virtual o del equipo.
- ".*" busca coincidencias con todo
- "ComputerName" busca coincidencias solo con equipos que tienen el nombre exacto especificado.
- AppFilter es una expresión regular de C# requerida del nombre del sitio de IIS. Para obtener una lista de sitios en el servidor, ejecute el comando get-iissite.
- ".*" busca coincidencias con todo
- "SiteName" busca coincidencias solo con el sitio de IIS que tiene el nombre exacto especificado.
- InstrumentationKey se requiere para habilitar la supervisión de las aplicaciones que coincidan con los dos filtros anteriores.
- Deje este valor como null si desea definir reglas para excluir la supervisión.
-EnableInstrumentationEngine
Opcional. Utilice este modificador para habilitar el motor de instrumentación y recopilar eventos y mensajes sobre lo que sucede durante la ejecución de un proceso administrado. Estos eventos y mensajes incluyen códigos de resultado de la dependencia, verbos HTTP y texto de comando SQL.
El motor de instrumentación se sobrecarga y está desactivado de forma predeterminada.
-AcceptLicense
Opcional. Use este modificador para aceptar la licencia y la declaración de privacidad en las instalaciones sin periféricos.
-IgnoreSharedConfig
Si tiene un clúster de servidores web, puede que esté usando una configuración compartida.
HttpModule no pueden insertarse en esta configuración compartida.
Este script da error con el mensaje de que se requieren pasos adicionales de instalación.
Use este modificador para ignorar esta comprobación y seguir instalando requisitos previos.
Para obtener más información, consulte Conflicto con la configuración compartida de IIS.
-Verbose
Parámetro común. Utilice este modificador para mostrar registros detallados.
-WhatIf
Parámetro común. Utilice este modificador para probar y validar los parámetros de entrada sin habilitar realmente la supervisión.
Output
Ejemplo de salida de una activación correcta
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
Deshabilita el motor de instrumentación mediante la eliminación de algunas claves del Registro.
Reinicie IIS para aplicar los cambios.
Ejemplos
Disable-InstrumentationEngine
Parámetros
-Verbose
Parámetro común. Use este modificador para generar registros detallados.
Output
Salida de ejemplo al deshabilitar correctamente el motor de instrumentación
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
Deshabilita la supervisión en el equipo de destino.
Este cmdlet elimina ediciones de applicationHost.config de IIS y quita las claves del registro.
Ejemplos
Disable-ApplicationInsightsMonitoring
Parámetros
-Verbose
Parámetro común. Utilice este modificador para mostrar registros detallados.
Output
Salida de ejemplo al deshabilitar correctamente la supervisión
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
Obtiene el archivo de configuración e imprime los valores en la consola.
Ejemplos
Get-ApplicationInsightsMonitoringConfig
Parámetros
No se requiere ningún parámetro.
Output
Salida de ejemplo al leer el archivo de configuración
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 proporciona información de solución de problemas sobre el agente de Application Insights.
Use este cmdlet para investigar el estado de supervisión, la versión del módulo de PowerShell y para inspeccionar el proceso en ejecución.
Este cmdlet proporciona información sobre la versión e información sobre los archivos clave necesarios para la supervisión.
Ejemplos
Ejemplo: Estado de la aplicación
Ejecute el comando Get-ApplicationInsightsMonitoringStatus
para que aparezca el estado de supervisión de los sitios web.
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
En este ejemplo,
Machine Identifier (Identificador de la máquina) es un identificador anónimo utilizado para identificar de forma exclusiva el servidor. Si crea una solicitud de soporte, necesitaremos este ID para encontrar los registros de su servidor.
Default Web Site (Sitio web predeterminado) está detenido en IIS
DemoWebApp111 se ha iniciado en IIS, pero no ha recibido ninguna solicitud. Este informe muestra que no hay ningún proceso en ejecución (ProcessId: not found).
DemoWebApp222 se está ejecutando y se está supervisando (Instrumented: true). Según la configuración del usuario, la clave de instrumentación xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx123 coincidió para este sitio.
DemoWebApp333 se ha instrumentado manualmente mediante el SDK de Application Insights. El agente de Application Insights detectó el SDK y no supervisará este sitio.
La presencia de AppAlreadyInstrumented : true
indica que el agente de Application Insights identificó un archivo DLL en conflicto cargado en la aplicación web, presupuso que la aplicación web se instrumenta manualmente y que el agente ha respaldado este proceso y no está instrumentalizándolo.
Instrumented : true
indica que el agente de Application Insights instrumentalizó correctamente la aplicación web que se ejecuta en el proceso de w3wp.exe especificado.
Ejecute el comando Get-ApplicationInsightsMonitoringStatus -PowerShellModule
para mostrar información sobre el módulo actual:
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
Ejemplo: Estado en tiempo de ejecución
Puede inspeccionar el proceso en el equipo instrumentado para determinar si todos los archivos DLL se cargan. Si funciona la supervisión, deben cargarse al menos 12 DLL.
Ejecute el 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
(Sin parámetros)
De forma predeterminada, este cmdlet informa del estado de supervisión de las aplicaciones web.
Use esta opción para revisar si la aplicación se ha instrumentado correctamente.
También puede revisar qué clave de instrumentación coincidió con su sitio.
-PowerShellModule
Opcional. Utilice este modificador para informar de los números de versión y rutas de acceso de los archivos DLL necesarios para la supervisión.
Use esta opción si tiene que identificar la versión de cualquier archivo DLL, incluido el SDK de Application Insights.
-InspectProcess
Opcional. Utilice este modificador para informar de si se está ejecutando IIS.
Descarga herramientas externas para determinar si las DLL necesarias están cargadas en el entorno de ejecución de IIS.
Si se produce un error en este proceso por cualquier motivo, puede ejecutar estos comandos manualmente:
- iisreset.exe /status
- handle64.exe -p w3wp | findstr /I "InstrumentationEngine AI. ApplicationInsights"
- listdlls64.exe w3wp | findstr /I "InstrumentationEngine AI ApplicationInsights"
-Force
Opcional. Se utiliza solo con InspectProcess. Use este parámetro para omitir el aviso al usuario que aparece antes de que se descarguen más herramientas.
Set-ApplicationInsightsMonitoringConfig
Establece el archivo de configuración sin tener que realizar una reinstalación completa.
Reinicie IIS para que los cambios surtan efecto.
Importante
Este cmdlet requiere una sesión de PowerShell con permisos de administrador.
Ejemplos
Ejemplo con una única clave de instrumentación
En este ejemplo, a todas las aplicaciones en el equipo actual se les asigna una única clave de instrumentación.
Enable-ApplicationInsightsMonitoring -InstrumentationKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Ejemplo con un mapa de claves de instrumentación
En este ejemplo:
MachineFilter
busca la correspondencia con el equipo actual usando el comodín '.*'
.
AppFilter='WebAppExclude'
proporciona una clave de instrumentación null
. La aplicación especificada no está instrumentada.
AppFilter='WebAppOne'
asigna una clave de instrumentación única a la aplicación especificada.
AppFilter='WebAppTwo'
asigna una clave de instrumentación única a la aplicación especificada.
AppFilter
usa el comodín '.*'
para buscar coincidencia con las aplicaciones web con las que aún no coincide y asigna una clave de instrumentación predeterminada.
- Se agregan espacios para mejorar la legibilidad.
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
-InstrumentationKey
Necesario. Use este parámetro para proporcionar una única clave de instrumentación para que la usen todas las aplicaciones en el equipo de destino.
-InstrumentationKeyMap
Necesario. Use este parámetro para proporcionar varias claves de instrumentación y una asignación de las claves de instrumentación utilizadas por cada aplicación.
Puede crear un solo script de instalación para varios equipos si establece MachineFilter
.
Importante
Las aplicaciones coinciden con las reglas en el orden en que estas se proporcionan. Por tanto, debe especificar las reglas más específicas en primer lugar y las más genéricas las últimas.
Schema
@(@{MachineFilter='.*';AppFilter='.*';InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'})
- MachineFilter es una expresión regular de C# requerida del nombre de la máquina virtual o del equipo.
- ".*" busca coincidencias con todo
- "ComputerName" busca coincidencias solo con los equipos que tienen el nombre especificado.
- AppFilter es una expresión regular de C# requerida del nombre de la máquina virtual o del equipo.
- ".*" busca coincidencias con todo
- "ApplicationName" busca coincidencias solo con las aplicaciones de IIS que tienen el nombre especificado.
- InstrumentationKey se requiere para habilitar la supervisión de las aplicaciones que coincidan con los dos filtros anteriores.
- Deje este valor como null si desea definir reglas para excluir la supervisión.
-Verbose
Parámetro común. Utilice este modificador para mostrar registros detallados.
Output
De forma predeterminada, no se produce ninguna salida.
Ejemplo de salida detallada de la configuración en el archivo de configuración a través de -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
Ejemplo de salida detallada de la configuración en el archivo de configuración a través de -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-ApplicationInsightsMonitoringTrace
Recopila eventos de ETW desde el runtime para adjuntar sin código.
Este cmdlet es una alternativa a la ejecución de PerfView.
Los eventos se recopilan, se imprimen en la consola en tiempo real y se guardan en un archivo ETL. Puede abrir el archivo ETL de salida con PerfView para investigarlo más a fondo.
Este cmdlet se ejecuta hasta que llega a la duración del tiempo de espera (con un valor predeterminado de 5 minutos) o hasta que se detiene manualmente (Ctrl + C
).
Ejemplos
Recopilación de eventos
Por lo general, le pediríamos que recopile eventos para investigar por qué no se está instrumentando la aplicación.
El tiempo de ejecución sin código de adjuntar emite eventos ETW cuando se inicia IIS y cuando se inicia su aplicación.
Para recopilar estos eventos:
- En una consola cmd con privilegio de administración, ejecute
iisreset /stop
para detener IIS y todas las aplicaciones web.
- Ejecute este cmdlet.
- En una consola cmd con privilegios de administración, ejecute
iisreset /start
para iniciar IIS.
- Intente ir a la aplicación.
- Cuando la aplicación termina de cargarse, puede detenerla de manera manual (
Ctrl + C
) o esperar a que se agote el tiempo de espera.
Qué eventos se recopilan
Existen tres opciones al recopilar los eventos:
- Use el modificador
-CollectSdkEvents
para recopilar los eventos emitidos desde el SDK de Application Insights.
- Use el modificador
-CollectRedfieldEvents
para recopilar los eventos emitidos por el agente de Application Insights y el runtime de Redfield. Estos registros son útiles al diagnosticar el inicio de IIS y de las aplicaciones.
- Use ambos modificadores para recopilar ambos tipos de evento.
- De manera predeterminada, si no se especifica ningún modificador, se recopilan ambos tipos de eventos.
Parámetros
-MaxDurationInMinutes
Opcional. Use este parámetro para establecer durante cuánto tiempo este script debe recopilar eventos. El valor predeterminado es 5 minutos.
-LogDirectory
Opcional. Use este conmutador para establecer el directorio de salida del archivo ETL.
De manera predeterminada, este archivo se crea en el directorio de módulos de PowerShell.
Durante la ejecución del script, se muestra la ruta de acceso completa.
-CollectSdkEvents
Opcional. Use este modificador para recopilar eventos del SDK de Application Insights.
-CollectRedfieldEvents
Opcional. Use este modificador para recopilar los eventos del agente de Application Insights y el runtime de Redfield.
-Verbose
Parámetro común. Use este modificador para generar registros detallados.
Output
Ejemplo de registros de inicio de aplicación
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...