Questa scheda descrive come eseguire l'onboarding in PowerShell Gallery e scaricare il modulo ApplicationMonitor.
Sono inclusi i parametri più comuni necessari per le attività iniziali.
Sono state fornite anche istruzioni per il download manuale nel caso in cui non si abbia accesso a Internet.
Ottenere una stringa di connessione
Per iniziare, è necessaria una stringa di connessione. Per altre informazioni, vedere Stringhe di connessione.
Eseguire PowerShell come amministratore con un criterio di esecuzione con privilegi elevati
Eseguire come amministratore
PowerShell richiede autorizzazioni a livello di amministratore per apportare modifiche al computer.
Criterio di esecuzione
- Descrizione: per impostazione predefinita, l'esecuzione di script di PowerShell è disabilitata. È consigliabile consentire gli script RemoteSigned solo per l'ambito Corrente.
- Riferimento: Informazioni sui criteri di esecuzione e Set-ExecutionPolicy.
- Comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.
- Parametro facoltativo:
-Force
. Evita la richiesta di conferma.
Esempi di errori
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.
Prerequisiti per PowerShell
Controllare l'istanza di PowerShell eseguendo il comando $PSVersionTable
.
Questo comando produce l'output seguente:
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
Queste istruzioni sono state scritte e testate in un computer che esegue Windows 10 e versioni successive.
Prerequisiti di PowerShell Gallery
Questi passaggi preparano il server per scaricare i moduli da PowerShell Gallery.
Nota
PowerShell Gallery è supportato in Windows 10, Windows Server 2016 e PowerShell 6+.
Per informazioni sulle versioni precedenti, vedere Installazione di PowerShellGet.
Eseguire PowerShell come amministratore con un criterio di esecuzione con privilegi elevati.
Installare il provider di pacchetti NuGet.
- Descrizione: questo provider deve interagire con i repository basati su NuGet come PowerShell Gallery.
- Riferimento: Install-PackageProvider.
- Comando:
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201
.
- Parametri facoltativi:
-Proxy
. Specifica un server proxy per la richiesta.
-Force
. Evita la richiesta di conferma.
Questo prompt viene visualizzato se NuGet non è configurato:
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"):
Configurare PowerShell Gallery come repository attendibile.
- Descrizione: per impostazione predefinita, PowerShell Gallery è un repository non attendibile.
- Riferimento: Set-PSRepository.
- Comando:
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
.
- Parametro facoltativo:
-Proxy
. Specifica un server proxy per la richiesta.
Questo prompt viene visualizzato se PowerShell Gallery non è attendibile:
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"):
È possibile confermare questa modifica e controllare tutti i PSRepositories
eseguendo il comando Get-PSRepository
.
Installare la versione più recente di PowerShellGet.
- Descrizione: questo modulo contiene gli strumenti usati per ottenere altri moduli da PowerShell Gallery. La versione 1.0.0.1 è fornita con Windows 10 e Windows Server. È richiesta la versione 1.6.0 o successiva. Per determinare la versione è installata nel computer, eseguire il comando
Get-Command -Module PowerShellGet
.
- Riferimento: Installazione di PowerShellGet.
- Comando:
Install-Module -Name PowerShellGet
.
- Parametri facoltativi:
-Proxy
. Specifica un server proxy per la richiesta.
-Force
. Ignora l'avviso "già installato" e installa la versione più recente.
Questo errore viene visualizzato se non si usa la versione più recente di 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
Riavviare PowerShell. Non è possibile caricare la nuova versione nella sessione corrente. Le nuove sessioni di PowerShell caricano la versione più recente di PowerShellGet.
Scaricare e installare il modulo tramite PowerShell Gallery
Questi passaggi scaricano il modulo Az.ApplicationMonitor da PowerShell Gallery.
- Accertarsi che tutti i prerequisiti per PowerShell Gallery siano soddisfatti.
- Eseguire PowerShell come amministratore con un criterio di esecuzione con privilegi elevati.
- Installare il modulo Az.ApplicationMonitor.
- Riferimento: Install-Module.
- Comando:
Install-Module -Name Az.ApplicationMonitor
.
- Parametri facoltativi:
-Proxy
. Specifica un server proxy per la richiesta.
-AllowPrerelease
. Consente l'installazione di versioni alfa e beta.
-AcceptLicense
. Ignora la richiesta "Accetta licenza"
-Force
. Ignora l'avviso "Repository non attendibile".
Scaricare e installare il modulo manualmente (opzione offline)
Se per qualunque motivo non è possibile connettersi al modulo di PowerShell, è possibile scaricare e installare manualmente il modulo Az.ApplicationMonitor.
Scaricare manualmente il file nupkg più recente
- Vai a https://www.powershellgallery.com/packages/Az.ApplicationMonitor.
- Selezionare la versione più recente del file nella tabella Cronologia versioni.
- In Opzioni di installazione, selezionare Download manuale.
Opzione 1: Installare in una directory dei moduli di PowerShell
Installare il modulo di PowerShell scaricato manualmente in una directory di PowerShell in modo che sia individuabile dalle sessioni di PowerShell.
Per altre informazioni, vedere Installazione di un modulo di PowerShell.
Decomprimere nupkg come file ZIP usando Expand-Archive (v1.0.1.0)
Descrizione: la versione di base di Microsoft.PowerShell.Archive (v1.0.1.0) non può decomprimere file nupkg. Rinominare il file con l'estensione .zip.
Riferimento: 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
Decomprimere nupkg utilizzando Expand-Archive (v1.1.0.0)
Descrizione: usare una versione corrente di Expand-Archive per decomprimere file nupkg senza modificare l'estensione.
Riferimento: 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
Opzione 2: Decomprimere e importare manualmente nupkg
Installare il modulo di PowerShell scaricato manualmente in una directory di PowerShell in modo che sia individuabile dalle sessioni di PowerShell.
Per altre informazioni, vedere Installazione di un modulo di PowerShell.
Se si installa il modulo in qualunque altra directory, importare manualmente il modulo usando Import-Module.
Importante
Le DLL verranno installate tramite percorsi relativi.
Archiviare il contenuto del pacchetto nella directory di runtime desiderata e accertarsi che le autorizzazioni di accesso consentano la lettura ma non la scrittura.
- Modificare l'estensione in ".zip" ed estrarre il contenuto del pacchetto nella directory di installazione desiderata.
- Trovare il percorso file di Az.ApplicationMonitor.psd1.
- Eseguire PowerShell come amministratore con un criterio di esecuzione con privilegi elevati.
- Caricare il modulo usando il comando
Import-Module Az.ApplicationMonitor.psd1
.
Instradare il traffico attraverso un proxy
Quando si monitora un computer in una rete intranet privata, è necessario instradare il traffico HTTP attraverso un proxy.
I comandi di PowerShell per scaricare e installare Az.ApplicationMonitor da PowerShell Gallery supportano un parametro -Proxy
.
Esaminare le istruzioni precedenti quando si scrivono gli script di installazione.
L’SDK di Application Insights deve inviare dati di telemetria dell'app a Microsoft. È consigliabile configurare le impostazioni proxy per l'app nel file web.config. Per altre informazioni, vedere Come ottenere un pass-through proxy?.
Abilitare il monitoraggio
Usare il comando Enable-ApplicationInsightsMonitoring
per abilitare il monitoraggio.
Per una descrizione dettagliata di come usare questo cmdlet, vedere il Riferimento API.
Questa scheda descrive i cmdlet seguenti, che sono membri del modulo di PowerShell az.ApplicationMonitor:
Nota
- Per iniziare, è necessaria una stringa di connessione. Per altre informazioni, vedere Creare una risorsa.
- Questo cmdlet richiede l’esame e l'accettazione del resoconto delle licenze e dell'informativa sulla privacy.
Importante
Questo cmdlet richiede una sessione di PowerShell con autorizzazioni di amministratore e un criterio di esecuzione con privilegi elevati. Per altre informazioni, vedere Eseguire PowerShell come amministratore con un criterio di esecuzione con privilegi elevati.
- Questo cmdlet richiede l’esame e l'accettazione del resoconto delle licenze e dell'informativa sulla privacy.
- Il motore di strumentazione aggiunge un ulteriore sovraccarico ed è disattivato per impostazione predefinita.
Enable-InstrumentationEngine
Abilita il motore di strumentazione impostando alcune chiavi del registro.
Riavviare IIS per applicare le modifiche apportate.
Il motore di strumentazione può integrare dati raccolti dagli SDK .NET.
Raccoglie eventi e messaggi che descrivono l'esecuzione di un processo gestito. Questi eventi e messaggi includono codici dei risultati delle dipendenze, verbi HTTP e il testo del comando SQL.
Abilitare il motore di strumentazione se:
- Il monitoraggio è già stato abilitato con il cmdlet Enable ma non è stato abilitato il motore di strumentazione.
- L'app è stata instrumentata manualmente con gli SDK .NET e si desidera raccogliere dati di telemetria aggiuntivi.
Esempi
Enable-InstrumentationEngine
Parametri
-AcceptLicense
Facoltativo. Usare questa opzione per accettare la licenza e l'informativa sulla privacy nelle installazioni headless.
-Verbose
Parametro comune. Usare questa opzione per restituire log dettagliati.
Output
Esempio di output della corretta abilitazione del motore di strumentazione
Configuring IIS Environment for instrumentation engine...
Configuring registry for instrumentation engine...
Enable-ApplicationInsightsMonitoring
Abilita il monitoraggio del collegamento senza codice delle app IIS in un computer di destinazione.
Questo cmdlet modifica applicationHost.config di IIS e imposta alcune chiavi del registro.
Crea un file applicationinsights.ikey.config, che definisce la chiave di strumentazione usata da ogni app.
IIS all'avvio carica RedfieldModule, che inserisce l’SDK di Application Insights nelle applicazioni quando queste vengono avviate.
Riavviare IIS per applicare le modifiche apportate.
Dopo aver abilitato il monitoraggio, è consigliabile usare Live Metrics per verificare rapidamente se l'app invia dati di telemetria.
Esempi
Esempio con una singola stringa di connessione
In questo esempio, a tutte le app nel computer corrente viene assegnata una singola stringa di connessione.
Enable-ApplicationInsightsMonitoring -ConnectionString 'InstrumentationKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/'
Esempio con una singola chiave di strumentazione
In questo esempio, a tutte le app nel computer corrente viene assegnata una singola chiave di strumentazione.
Enable-ApplicationInsightsMonitoring -InstrumentationKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Esempio con una mappa di chiavi di strumentazione
In questo esempio:
MachineFilter
corrisponde al computer corrente utilizzando il carattere jolly '.*'
.
AppFilter='WebAppExclude'
fornisce una chiave di strumentazione null
. L’app specificata non è instrumentata.
AppFilter='WebAppOne'
assegna all'app specificata una chiave di strumentazione univoca.
AppFilter='WebAppTwo'
assegna all'app specificata una chiave di strumentazione univoca.
AppFilter
usa il carattere jolly '.*'
per trovare la corrispondenza con qualunque app Web a cui non corrisponde ancora e assegna una chiave di strumentazione predefinita.
- Vengono aggiunti spazi per motivi di leggibilità.
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 denominazione di AppFilter in questo contesto può generare confusione; AppFilter
imposta il filtro regex del nome dell'applicazione (HostingEnvironment.SiteName nel caso di .NET in IIS). VirtualPathFilter
imposta il filtro regex del percorso virtuale (HostingEnvironment.ApplicationVirtualPath nel caso di .NET in IIS). Per instrumentare una singola app, usare VirtualPathFilter come indicato di seguito: Enable-ApplicationInsightsMonitoring -InstrumentationKeyMap @(@{VirtualPathFilter="^/MyAppName$"; InstrumentationSettings=@{InstrumentationKey='<your ikey>'}})
Parametri
-ConnectionString
Obbligatorio. Usare questo parametro per fornire una singola stringa di connessione da usare da tutte le app nel computer di destinazione.
-InstrumentationKey
Obbligatorio. Usare questo parametro per fornire una singola chiave di strumentazione da usare da tutte le app nel computer di destinazione.
-InstrumentationKeyMap
Obbligatorio. Usare questo parametro per fornire più chiavi di strumentazione e un mapping delle chiavi di strumentazione usate da ogni app.
È possibile creare un singolo script di installazione per diversi computer impostando MachineFilter
.
Importante
Le app corrispondono alle regole nell'ordine in cui vengono fornite le regole. È necessario, quindi, specificare prima le regole più specifiche e per ultime le regole più generiche.
Schema
@(@{MachineFilter='.*';AppFilter='.*';InstrumentationSettings=@{InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'}})
- MachineFilter è un'espressione regolare C# necessaria del nome del computer o della macchina virtuale.
- '.*' corrisponde a tutto
- 'ComputerName' corrisponde solo ai computer con il nome esatto specificato.
- AppFilter è un'espressione regolare C# necessaria del nome del sito IIS. È possibile ottenere un elenco di siti nel server eseguendo il comando get-iissite.
- '.*' corrisponde a tutto
- 'SiteName' corrisponde solo al sito IIS con il nome esatto specificato.
- InstrumentationKey è necessario per abilitare il monitoraggio delle app che corrispondono ai due filtri precedenti.
- Lasciare questo valore null se si desidera definire regole per escludere il monitoraggio.
-EnableInstrumentationEngine
Facoltativo. Usare questa opzione per consentire al motore di strumentazione di raccogliere eventi e messaggi relativi a ciò che accade durante l'esecuzione di un processo gestito. Questi eventi e messaggi includono codici dei risultati delle dipendenze, verbi HTTP e il testo del comando SQL.
Il motore di strumentazione aggiunge un sovraccarico ed è disattivato per impostazione predefinita.
-AcceptLicense
Facoltativo. Usare questa opzione per accettare la licenza e l'informativa sulla privacy nelle installazioni headless.
-IgnoreSharedConfig
Quando si dispone di un cluster di server Web, è possibile usare una configurazione condivisa.
HttpModule non può essere inserito in questa configurazione condivisa.
L’esito di questo script è negativo e viene visualizzato il messaggio indicante che sono necessari passaggi di installazione aggiuntivi.
Usare questa opzione per ignorare questo controllo e continuare l’installazione dei prerequisiti.
Per altre informazioni, vedere conflitto noto con configurazione condivisa IIS
-Verbose
Parametro comune. Usare questa opzione per visualizzare log dettagliati.
-WhatIf
Parametro comune. Usare questa opzione per testare e convalidare i parametri di input senza abilitare effettivamente il monitoraggio.
Output
Esempio di output di un'abilitazione riuscita
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
Disabilita il motore di strumentazione rimuovendo alcune chiavi del registro.
Riavviare IIS per applicare le modifiche apportate.
Esempi
Disable-InstrumentationEngine
Parametri
-Verbose
Parametro comune. Usare questa opzione per restituire log dettagliati.
Output
Esempio di output della corretta disabilitazione del motore di strumentazione
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
Disabilita il monitoraggio nel computer di destinazione.
Questo cmdlet modifica applicationHost.config di IIS e rimuove alcune chiavi del registro.
Esempi
Disable-ApplicationInsightsMonitoring
Parametri
-Verbose
Parametro comune. Usare questa opzione per visualizzare log dettagliati.
Output
Esempio di output della corretta disabilitazione del monitoraggio
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
Ottiene il file di configurazione e stampa i valori nella console.
Esempi
Get-ApplicationInsightsMonitoringConfig
Parametri
Non è necessario alcun parametro.
Output
Esempio di output della lettura del file di configurazione
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
Questo cmdlet fornisce informazioni sulla risoluzione dei problemi relativi ad Application Insights Agent.
Usare questo cmdlet per analizzare lo stato del monitoraggio, la versione del modulo di PowerShell e per ispezionare il processo in esecuzione.
Questo cmdlet riporta informazioni sulla versione e informazioni sui file chiave necessari per il monitoraggio.
Esempi
Esempio: Stato dell’applicazione
Eseguire il comando Get-ApplicationInsightsMonitoringStatus
per visualizzare lo stato di monitoraggio dei siti 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
In questo esempio;
Identificatore computer è un ID anonimo usato per identificare in modo univoco il server. Se si crea una richiesta di supporto, è necessario questo ID per trovare i log per il server.
Sito Web predefinito è arrestato in IIS
DemoWebApp111 è stato avviato in IIS, ma non ha ricevuto alcuna richiesta. Questo report mostra che non esiste alcun processo in esecuzione (ProcessId: non trovato).
DemoWebApp222 è in esecuzione ed è monitorato (Instrumentato: true). In base alla configurazione utente, la chiave di strumentazione xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx123 è stata trovata per questo sito.
DemoWebApp333 è stato instrumentato manualmente usando l’SDK di Application Insights. Application Insights Agent ha rilevato l'SDK e non monitora questo sito.
La presenza di AppAlreadyInstrumented : true
indica che Application Insights Agent ha identificato una dll in conflitto caricata nell'applicazione Web, presupponendo che l'app Web sia instrumentata manualmente e che l'agente abbia eseguito il backup e non instrumenti questo processo.
Instrumented : true
indica che Application Insights Agent ha instrumentato correttamente l'app Web in esecuzione nel processo w3wp.exe specificato.
Eseguire il comando Get-ApplicationInsightsMonitoringStatus -PowerShellModule
per visualizzare informazioni sul modulo corrente:
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
Esempio: Stato del runtime
È possibile ispezionare il processo nel computer instrumentato per verificare se tutte le DLL vengono caricate. Se il monitoraggio funziona, dovrebbero essere caricate almeno 12 DLL.
Eseguire il 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
Parametri
(Nessun parametro)
Per impostazione predefinita, questo cmdlet riporta lo stato di monitoraggio delle applicazioni Web.
Usare questa opzione per verificare se l'applicazione è stata instrumentata correttamente.
È anche possibile esaminare la chiave di strumentazione corrispondente al sito.
-PowerShellModule
Facoltativo. Usare questa opzione per riportare i numeri di versione e i percorsi delle DLL necessarie per il monitoraggio.
Usare questa opzione se è necessario identificare la versione di tutte le DLL, incluso l’SDK di Application Insights.
-InspectProcess
Facoltativo. Usare questa opzione per segnalare se IIS è in esecuzione.
Scarica strumenti esterni per determinare se le DLL necessarie vengono caricate nel runtime di IIS.
Se questo processo non riesce per un motivo qualunque, è possibile eseguire questi comandi manualmente:
- iisreset.exe /status
- handle64.exe -p w3wp | findstr /I "InstrumentationEngine AI. ApplicationInsights"
- listdlls64.exe w3wp | findstr /I "InstrumentationEngine AI ApplicationInsights"
-Force
Facoltativo. Usato solo con InspectProcess. Usare questa opzione per ignorare la richiesta dell'utente visualizzata prima del download di altri strumenti.
Set-ApplicationInsightsMonitoringConfig
Imposta il file di configurazione senza eseguire una reinstallazione completa.
Riavviare IIS per applicare le modifiche apportate.
Importante
Questo cmdlet richiede una sessione di PowerShell con autorizzazioni di amministratore.
Esempi
Esempio con una singola chiave di strumentazione
In questo esempio, a tutte le app nel computer corrente viene assegnata una singola chiave di strumentazione.
Enable-ApplicationInsightsMonitoring -InstrumentationKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Esempio con una mappa di chiavi di strumentazione
In questo esempio:
MachineFilter
corrisponde al computer corrente utilizzando il carattere jolly '.*'
.
AppFilter='WebAppExclude'
fornisce una chiave di strumentazione null
. L’app specificata non è instrumentata.
AppFilter='WebAppOne'
assegna all'app specificata una chiave di strumentazione univoca.
AppFilter='WebAppTwo'
assegna all'app specificata una chiave di strumentazione univoca.
AppFilter
usa il carattere jolly '.*'
per trovare la corrispondenza con app Web a cui non corrisponde ancora e assegna una chiave di strumentazione predefinita.
- Vengono aggiunti spazi per motivi di leggibilità.
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'}})
Parametri
-InstrumentationKey
Obbligatorio. Usare questo parametro per fornire una singola chiave di strumentazione da usare da tutte le app nel computer di destinazione.
-InstrumentationKeyMap
Obbligatorio. Usare questo parametro per fornire più chiavi di strumentazione e un mapping delle chiavi di strumentazione usate da ogni app.
È possibile creare un singolo script di installazione per diversi computer impostando MachineFilter
.
Importante
Le app corrispondono alle regole nell'ordine in cui vengono fornite le regole. È necessario, quindi, specificare prima le regole più specifiche e per ultime le regole più generiche.
Schema
@(@{MachineFilter='.*';AppFilter='.*';InstrumentationKey='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'})
- MachineFilter è un'espressione regolare C# necessaria del nome del computer o della macchina virtuale.
- '.*' corrisponde a tutto
- 'ComputerName' corrisponde solo ai computer con il nome specificato.
- AppFilter è un'espressione regolare C# necessaria del nome del computer o della macchina virtuale.
- '.*' corrisponde a tutto
- 'ApplicationName' corrisponde solo alle app IIS con il nome specificato.
- InstrumentationKey è necessario per abilitare il monitoraggio delle app che corrispondono ai due filtri precedenti.
- Lasciare questo valore null se si desidera definire regole per escludere il monitoraggio.
-Verbose
Parametro comune. Usare questa opzione per visualizzare log dettagliati.
Output
Per impostazione predefinita, nessun output.
Esempio di output dettagliato dall'impostazione del file di configurazione tramite -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
Esempio di output dettagliato dall'impostazione del file di configurazione tramite -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
Raccoglie eventi ETW dal runtime di collegamento senza codice.
Questo cmdlet è un'alternativa all'esecuzione di PerfView.
Gli eventi vengono raccolti, stampati nella console in tempo reale e salvati in un file ETL. È possibile aprire il file ETL di output con PerfView per ulteriori indagini.
Questo cmdlet viene eseguito fino al raggiungimento della durata del timeout (impostazione predefinita 5 minuti) o viene arrestato manualmente (Ctrl + C
).
Esempi
Come raccogliere eventi
In genere si chiede di raccogliere eventi per analizzare il motivo per cui l'applicazione non viene instrumentata.
Il runtime di collegamento senza codice genera eventi ETW all'avvio di IIS e all'avvio dell'applicazione.
Per raccogliere questi eventi:
- In una console cmd con privilegi di amministratore, eseguire
iisreset /stop
per arrestare IIS e tutte le app Web.
- Eseguire questo cmdlet
- In una console cmd con privilegi di amministratore, eseguire
iisreset /start
per arrestare IIS.
- Provare a passare all'app.
- Al termine del caricamento dell'app, è possibile arrestarla manualmente (
Ctrl + C
) o attendere il timeout.
Quali eventi raccogliere
Sono disponibili tre opzioni per la raccolta di eventi:
- Usare l'opzione
-CollectSdkEvents
per raccogliere eventi generati dall’SDK di Application Insights.
- Usare l'opzione
-CollectRedfieldEvents
per raccogliere eventi generati da Application Insights Agent e dal runtime Redfield. Questi log sono utili per la diagnosi dell'avvio di IIS e dell'applicazione.
- Usare entrambe le opzioni per raccogliere entrambi i tipi di evento.
- Per impostazione predefinita, se non viene specificata alcuna opzione, vengono raccolti entrambi i tipi di evento.
Parametri
-MaxDurationInMinutes
Facoltativo. Usare questo parametro per impostare per quanto tempo questo script deve raccogliere eventi. Il valore predefinito è 5 minuti.
-LogDirectory
Facoltativo. Usare questa opzione per impostare la directory di output del file ETL.
Per impostazione predefinita, questo file viene creato nella directory dei moduli di PowerShell.
Il percorso completo viene visualizzato durante l'esecuzione dello script.
-CollectSdkEvents
Facoltativo. Usare questa opzione per raccogliere eventi dell’SDK di Application Insights.
-CollectRedfieldEvents
Facoltativo. Usare questa opzione per raccogliere eventi generati da Application Insights Agent e dal runtime Redfield.
-Verbose
Parametro comune. Usare questa opzione per restituire log dettagliati.
Output
Esempio di log di avvio dell'applicazione
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...