Le informazioni dettagliate sulle versioni e sugli elementi di lavoro sono fondamentali per ottimizzare il ciclo di vita dello sviluppo software. Man mano che le applicazioni si evolvono, è fondamentale monitorare attentamente ogni versione e i relativi elementi di lavoro. Queste informazioni evidenziano i colli di bottiglia delle prestazioni e consentono ai team di risolvere i problemi in modo proattivo, garantendo una distribuzione e un'esperienza utente senza problemi. Forniscono agli sviluppatori e agli stakeholder di prendere decisioni, regolare i processi e offrire software di alta qualità.
Azure Pipelines si integra con Application Insights per consentire il monitoraggio continuo della pipeline di versione di Azure DevOps durante tutto il ciclo di vita dello sviluppo software.
Con il monitoraggio continuo, le pipeline di versione possono incorporare i dati di monitoraggio da Application Insights e da altre risorse di Azure. Quando la pipeline di versione rileva un avviso di Application Insights, la pipeline può controllare o eseguire il rollback della distribuzione fino a quando l'avviso non viene risolto. Se si superano tutti i controlli, le distribuzioni possono passare automaticamente dal test alla produzione senza la necessità di interventi manuali.
In Azure DevOps, selezionare un'organizzazione e un progetto.
Nel menu a sinistra della pagina del progetto, selezionare Pipeline>Versioni.
Selezionare la freccia a discesa accanto a Nuovo e selezionare Nuova pipeline di versione. In alternativa, se non è ancora disponibile una pipeline, selezionare Nuova pipeline nella pagina visualizzata.
Nel riquadro Selezionare un modello, cercare e selezionare distribuzione del servizio app di Azure con monitoraggio continuo e quindi selezionare Applica.
Nella casella Fase 1 selezionare il collegamento ipertestuale per Visualizzare le attività della fase.
Nel riquadro di configurazione fase 1 compilare i campi seguenti:
Parametro |
Valore |
Nome della fase |
Specificare un nome di fase o lasciarlo nella fase 1. |
Sottoscrizione di Azure |
Selezionare la freccia a discesa e selezionare la sottoscrizione di Azure collegata da usare. |
Tipo di app |
Selezionare la freccia a discesa e selezionare il tipo di app. |
Nome del servizio app |
Immettere il nome del servizio app di Azure. |
Nome del gruppo di risorse per Application Insights |
Selezionare la freccia a discesa e selezionare il gruppo di risorse da usare. |
Nome risorsa di Application Insights |
Selezionare la freccia a discesa e selezionare la risorsa di Application Insights per il gruppo di risorse selezionato. |
Per salvare la pipeline con le impostazioni predefinite delle regole di avviso, selezionare Salva nell'angolo superiore destro della finestra di Azure DevOps. Immettere un commento descrittivo e selezionare OK.
Modificare le regole di avviso
Il modello distribuzione del servizio app di Azure con il monitoraggio continuo include quattro regole di avviso: Disponibilità, Richieste non riuscite, Server response time e Server eccezioni. È possibile aggiungere altre regole o modificare le impostazioni delle regole per soddisfare le esigenze del livello di servizio.
Per modificare le impostazioni delle regole di avviso:
Nel riquadro sinistro della pagina della pipeline di versione selezionare Configura avvisi di Application Insights.
Le quattro regole di avviso predefinite vengono create tramite uno script Inline:
$subscription = az account show --query "id";$subscription.Trim("`"");$resource="/subscriptions/$subscription/resourcegroups/"+"$(Parameters.AppInsightsResourceGroupName)"+"/providers/microsoft.insights/components/" + "$(Parameters.ApplicationInsightsResourceName)";
az monitor metrics alert create -n 'Availability_$(Release.DefinitionName)' -g $(Parameters.AppInsightsResourceGroupName) --scopes $resource --condition 'avg availabilityResults/availabilityPercentage < 99' --description "created from Azure DevOps";
az monitor metrics alert create -n 'FailedRequests_$(Release.DefinitionName)' -g $(Parameters.AppInsightsResourceGroupName) --scopes $resource --condition 'count requests/failed > 5' --description "created from Azure DevOps";
az monitor metrics alert create -n 'ServerResponseTime_$(Release.DefinitionName)' -g $(Parameters.AppInsightsResourceGroupName) --scopes $resource --condition 'avg requests/duration > 5' --description "created from Azure DevOps";
az monitor metrics alert create -n 'ServerExceptions_$(Release.DefinitionName)' -g $(Parameters.AppInsightsResourceGroupName) --scopes $resource --condition 'count exceptions/server > 5' --description "created from Azure DevOps";
È possibile modificare lo script e aggiungere altre regole di avviso. È anche possibile modificare le condizioni di avviso. È anche possibile rimuovere le regole di avviso che non hanno senso a scopo di distribuzione.
Aggiungere le condizioni di distribuzione
Quando si aggiungono controlli di distribuzione alla pipeline di versione, un avviso che supera le soglie impostate impedisce l'innalzamento di livello di rilascio indesiderato. Dopo aver risolto l'avviso, la distribuzione può procedere automaticamente.
Per aggiungere controlli di distribuzione:
Nella pagina della pipeline principale, in Fasi, selezionare il simbolo Condizioni di pre-distribuzione o Condizioni post-distribuzione, a seconda della fase in cui è necessario un controllo di monitoraggio continuo.
Nel riquadro di configurazione delle condizioni di pre-distribuzione impostare Gates su Abilitato.
Accanto a Controlli di distribuzione, selezionare Aggiungi.
Selezionare Query sugli avvisi di Monitoraggio di Azure dal menu a discesa. Questa opzione consente di accedere sia agli avvisi di Monitoraggio di Azure che ad Application Insights.
In Opzioni di valutazione immettere i valori desiderati per le impostazioni, ad esempio il tempo tra la rivalutazione dei gate e il timeout dopo il quale i controlli hanno esito negativo.
Visualizzare i log di rilascio
È possibile visualizzare il comportamento del controllo della distribuzione e altri passaggi di rilascio nei log di rilascio. Per aprire i log:
Selezionare Versioni dal menu a sinistra della pagina della pipeline.
Selezionare qualsiasi versione.
In Fasi, selezionare una fase per visualizzare un riepilogo delle versioni.
Per visualizzare i log, selezionare Visualizza log nel riepilogo della versione, selezionare il collegamento ipertestuale Operazione riuscita o Non riuscito in qualsiasi fase oppure passare il puntatore del mouse su qualsiasi fase e selezionare Log.
Le annotazioni mostrano dove è stata distribuita una nuova compilazione o altri eventi significativi. Le annotazioni semplificano la visualizzazione delle modifiche sulle prestazioni dell'applicazione. Possono essere creati automaticamente dal sistema di compilazione Azure Pipelines. È anche possibile creare annotazioni da PowerShell per contrassegnare qualsiasi evento.
Annotazioni di versione con compilazione di Azure Pipelines
Le annotazioni sulla versione sono una funzionalità del servizio basato sul cloud Azure Pipelines di Azure DevOps.
Se vengono soddisfatti tutti i criteri seguenti, l'attività di distribuzione crea automaticamente l'annotazione della versione:
La risorsa a cui si esegue la distribuzione è collegata ad Application Insights tramite l'impostazione dell'app APPINSIGHTS_INSTRUMENTATIONKEY
.
La risorsa di Application Insights si trova nella stessa sottoscrizione della risorsa in cui si sta distribuendo.
Si sta usando una delle attività della pipeline di Azure DevOps seguenti:
Codice attività |
Nome attività |
Versioni |
AzureAppServiceSettings |
Impostazioni di Servizio app di Azure |
Any |
AzureRmWebAppDeployment |
Distribuzione di Servizio app di Azure |
V3 e versioni successive |
AzureFunctionApp |
Funzioni di Azure |
Any |
AzureFunctionAppContainer |
Funzioni di Azure per il contenitore |
Any |
AzureWebAppContainer |
App Web per contenitori di Azure |
Any |
AzureWebApp |
App Web di Azure |
Any |
Nota
Se si usa ancora l'attività di distribuzione delle annotazioni di Application Insights, è consigliabile eliminarla.
Se non è possibile usare una delle attività di distribuzione nella sezione precedente, è necessario aggiungere un'attività script inline nella pipeline di distribuzione.
Passare a una pipeline nuova o esistente e selezionare un'attività.
Aggiungere una nuova attività e selezionare Interfaccia della riga di comando di Azure.
Specificare la sottoscrizione di Azure pertinente. Modificare il tipo di script in PowerShell e percorso script in inline.
Aggiungere lo script di PowerShell del passaggio 2 nella sezione successiva a Script inline.
Aggiungere gli argomenti seguenti. Sostituire i segnaposto tra parentesi angolari con i valori in Argomenti script. I -releaseProperties
sono facoltativi.
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
L'esempio seguente mostra i metadati che è possibile impostare nell'argomento facoltativo releaseProperties
usando le variabili di compilazione e rilascio.
-releaseProperties @{
"BuildNumber"="$(Build.BuildNumber)";
"BuildRepositoryName"="$(Build.Repository.Name)";
"BuildRepositoryProvider"="$(Build.Repository.Provider)";
"ReleaseDefinitionName"="$(Build.DefinitionName)";
"ReleaseDescription"="Triggered by $(Build.DefinitionName) $(Build.BuildNumber)";
"ReleaseEnvironmentName"="$(Release.EnvironmentName)";
"ReleaseId"="$(Release.ReleaseId)";
"ReleaseName"="$(Release.ReleaseName)";
"ReleaseRequestedFor"="$(Release.RequestedFor)";
"ReleaseWebUrl"="$(Release.ReleaseWebUrl)";
"SourceBranch"="$(Build.SourceBranch)";
"TeamFoundationCollectionUri"="$(System.TeamFoundationCollectionUri)" }
Seleziona Salva.
Creare annotazioni di versione con l'interfaccia della riga di comando di Azure
È possibile usare lo script di PowerShell CreateReleaseAnnotation
per creare annotazioni da qualsiasi processo desiderato senza usare Azure DevOps.
Accedere a Interfaccia della riga di comando di Azure.
Creare una copia locale dello script seguente e chiamarla CreateReleaseAnnotation.ps1
.
param(
[parameter(Mandatory = $true)][string]$aiResourceId,
[parameter(Mandatory = $true)][string]$releaseName,
[parameter(Mandatory = $false)]$releaseProperties = @()
)
# Function to ensure all Unicode characters in a JSON string are properly escaped
function Convert-UnicodeToEscapeHex {
param (
[parameter(Mandatory = $true)][string]$JsonString
)
$JsonObject = ConvertFrom-Json -InputObject $JsonString
foreach ($property in $JsonObject.PSObject.Properties) {
$name = $property.Name
$value = $property.Value
if ($value -is [string]) {
$value = [regex]::Unescape($value)
$OutputString = ""
foreach ($char in $value.ToCharArray()) {
$dec = [int]$char
if ($dec -gt 127) {
$hex = [convert]::ToString($dec, 16)
$hex = $hex.PadLeft(4, '0')
$OutputString += "\u$hex"
}
else {
$OutputString += $char
}
}
$JsonObject.$name = $OutputString
}
}
return ConvertTo-Json -InputObject $JsonObject -Compress
}
$annotation = @{
Id = [GUID]::NewGuid();
AnnotationName = $releaseName;
EventTime = (Get-Date).ToUniversalTime().GetDateTimeFormats("s")[0];
Category = "Deployment"; #Application Insights only displays annotations from the "Deployment" Category
Properties = ConvertTo-Json $releaseProperties -Compress
}
$annotation = ConvertTo-Json $annotation -Compress
$annotation = Convert-UnicodeToEscapeHex -JsonString $annotation
$accessToken = (az account get-access-token | ConvertFrom-Json).accessToken
$headers = @{
"Authorization" = "Bearer $accessToken"
"Accept" = "application/json"
"Content-Type" = "application/json"
}
$params = @{
Headers = $headers
Method = "Put"
Uri = "https://management.azure.com$($aiResourceId)/Annotations?api-version=2015-05-01"
Body = $annotation
}
Invoke-RestMethod @params
Nota
- Le annotazioni devono avere Categoria impostata su Distribuzione da visualizzare nel portale di Azure.
- Se viene visualizzato un errore, "La richiesta contiene un corpo dell'entità ma nessuna intestazione Content-Type", provare a rimuovere i parametri di sostituzione nella riga seguente.
$body = (ConvertTo-Json $annotation -Compress)
Chiamare lo script di PowerShell con il codice seguente. Sostituire i segnaposto tra parentesi angolari con i valori. I -releaseProperties
sono facoltativi.
.\CreateReleaseAnnotation.ps1 `
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
Argomento |
Definizione |
Nota |
aiResourceId |
ID risorsa per la risorsa di Application Insights di destinazione. |
Esempio: /subscriptions/aaa0a0a-bb1b-cc2c-dd3d-eeeee4e4e4e/resourceGroups/MyRGName/providers/microsoft.insights/components/MyResourceName |
releaseName |
Nome da assegnare all'annotazione della versione creata. |
|
releaseProperties |
Consente di allegare metadati personalizzati all'annotazione. |
Facoltativo |
Visualizzare le annotazioni
Nota
Le annotazioni di versione non sono attualmente disponibili nel riquadro Metriche di Application Insights.
Quando si usa il modello di versione per distribuire una nuova versione, viene inviata un'annotazione ad Application Insights. È possibile visualizzare le annotazioni nei percorsi seguenti:
Per abilitare le annotazioni nella cartella di lavoro, passare a Impostazioni avanzate e selezionare Mostra annotazioni.
Selezionare un marcatore di annotazione per visualizzare i dettagli sulla versione, tra cui richiedente, ramo di controllo del codice sorgente, pipeline di versione e ambiente.
Annotazioni di rilascio tramite chiavi API
Le annotazioni sulla versione sono una funzionalità del servizio basato sul cloud Azure Pipelines di Azure DevOps.
Installare l'estensione Annotazioni (una volta)
Per creare annotazioni sulla versione, installare una delle numerose estensioni di Azure DevOps disponibili in Visual Studio Marketplace.
Accedere al progetto Azure DevOps.
Nella pagina Visual Studio Marketplace Estensione delle annotazioni di versione, selezionare l'organizzazione Azure DevOps. Selezionare Installa per aggiungere l'estensione all'organizzazione Azure DevOps.
È sufficiente installare l'estensione una sola volta per l'organizzazione Azure DevOps. È ora possibile configurare annotazioni di versione per qualsiasi progetto nell'organizzazione.
Creare una chiave API separata per ognuno dei modelli di versione di Azure Pipelines.
Accedere al portale di Azure e aprire la risorsa di Application Insights che monitora l'applicazione. In alternativa, se non è disponibile, creare una nuova risorsa di Application Insights.
Aprire la scheda Accesso all'API e copiare l'ID di Application Insights.
In una finestra del browser separata aprire (o creare) il modello di versione che gestisce le distribuzioni di Azure Pipelines.
Selezionare Aggiungi attività e quindi selezionare l'attività Annotazione della versione di Application Insights dal menu.
Nota
L'attività Annota versione supporta attualmente solo gli agenti basati su Windows. Non verrà eseguito in Linux, macOS o altri tipi di agenti.
In ID applicazione incollare l'ID di Application Insights copiato dalla scheda Accesso API.
Tornare alla finestra di Accesso all'API di Application Insights e selezionare Crea chiave API.
Nella finestra Crea chiave API immettere una descrizione, selezionare Scrivere annotazionie quindi selezionare Genera chiave. Copiare la nuova chiave.
Nella finestra del modello di versione, nella scheda Variabili selezionare Aggiungi per creare una definizione di variabile per la nuova chiave API.
In Nome, immettere ApiKey. In Valore, incollare la chiave API copiata dalla scheda di Accesso all'API.
Selezionare Salva nella finestra principale del modello di versione per salvare il modello.
Passare alla nuova annotazione della versione
Per usare le nuove annotazioni di versione:
- Rimuovere l'estensione Annotazioni alla versione.
- Rimuovere l'attività di annotazione alla versione di Application Insights nella distribuzione di Azure Pipelines.
- Creare nuove annotazioni alla versione con Azure Pipelines o l'interfaccia della riga di comando di Azure.
La funzionalità di integrazione degli elementi di lavoro consente di creare facilmente elementi di lavoro in GitHub o Azure DevOps con dati di Application Insights pertinenti incorporati.
La nuova integrazione dell'elemento di lavoro offre le funzionalità seguenti rispetto a quello classico:
- Campi avanzati come assegnatario, progetti o attività cardine.
- Icone del repository in modo da poter distinguere tra le cartelle di lavoro di GitHub e Azure DevOps.
- Più configurazioni per un numero qualsiasi di repository o elementi di lavoro.
- Distribuzione tramite modelli di Azure Resource Manager.
- Query KQL (Keyword Query Language) predefinite e personalizzabili per aggiungere dati di Application Insights agli elementi di lavoro.
- Modelli di cartella di lavoro personalizzabili.
Per creare un modello di elemento di lavoro, passare alla risorsa di Application Insights e a sinistra in Configura selezionare Elementi di lavoro e quindi nella parte superiore selezionare Crea un nuovo modello
È anche possibile creare un modello di elemento di lavoro dalla scheda Dettagli transazione end-to-end, se non esiste alcun modello. Selezionare un evento e a destra selezionare Crea un elemento di lavoro, quindi Iniziare con un modello di cartella di lavoro.
Dopo aver selezionato crea un nuovo modello, è possibile scegliere i sistemi di rilevamento, denominare la cartella di lavoro, collegarsi al sistema di rilevamento selezionato e scegliere un'area in cui archiviare il modello (l'impostazione predefinita è l'area in cui si trova la risorsa di Application Insights). I parametri URL sono l'URL predefinito per il repository, ad esempio https://github.com/myusername/reponame
o https://dev.azure.com/{org}/{project}
.
È possibile impostare proprietà specifiche degli elementi di lavoro direttamente dal modello stesso. Ciò include l'assegnatario, il percorso di iterazione, i progetti e altro a seconda del provider di controllo della versione.
Nota
Per gli ambienti Azure DevOps locali, è possibile usare un URL di esempio, ad esempio https://dev.azure.com/test/test come segnaposto per l'URL del progetto Azure DevOps. Dopo aver creato il modello di elemento di lavoro, è possibile modificare l'URL e la relativa regola di convalida all'interno della cartella di lavoro di Azure generata.
Creare un elemento di lavoro
È possibile accedere al nuovo modello da tutti i dettagli delle transazioni end-to-end a cui è possibile accedere da prestazioni, errori, disponibilità o altre schede.
Per creare un elemento di lavoro, passare a Dettagli transazione end-to-end, selezionare un evento, quindi selezionare Crea elemento di lavoro e scegliere il modello di elemento di lavoro.
Una nuova scheda nel browser si aprirà al sistema di rilevamento selezionato. In Azure DevOps è possibile creare un bug o un'attività e in GitHub è possibile creare un nuovo problema nel repository. Un nuovo elemento di lavoro viene creato automaticamente con informazioni contestuali fornite da Application Insights.
Modificare un modello
Per modificare il modello, passare alla scheda Elementi di lavoro in Configura e selezionare l'icona a forma di matita accanto alla cartella di lavoro da aggiornare.
Selezionare Modifica nella barra degli strumenti superiore.
È possibile creare più configurazioni di elementi di lavoro e avere una cartella di lavoro personalizzata per soddisfare ogni scenario. Le cartelle di lavoro possono anche essere distribuite da Azure Resource Manager per garantire implementazioni standard negli ambienti.
Integrazione dell'elemento di lavoro classico
Nella risorsa di Application Insights in Configura, selezionare Elementi di lavoro.
Selezionare Passa alla versione classica, compilare i campi con le informazioni e autorizzare.
Creare un elemento di lavoro passando ai dettagli della transazione end-to-end, selezionare un evento e quindi selezionare Crea elemento di lavoro (classico).
Eseguire la migrazione alla nuova integrazione degli elementi di lavoro
Per eseguire la migrazione, eliminare la configurazione dell'elemento di lavoro classico e quindi creare e configurare un modello di elemento di lavoro per ricreare l'integrazione.
Per eliminare, passare a nella risorsa di Application Insights in Configura selezionare Elementi di lavoro e quindi selezionare Passa alla versione classica e *Elimina nella parte superiore.