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 tutti i controlli vengono superati, le distribuzioni possono procedere automaticamente dal test fino all'ambiente di produzione, senza la necessità di intervento manuale.
In Azure DevOps selezionare un'organizzazione e un progetto.
Nel menu a sinistra della pagina del progetto selezionare Versioni pipeline>.
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 app Azure Distribuzione del servizio 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 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 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
La distribuzione del servizio app Azure con il modello di monitoraggio continuo include quattro regole di avviso: disponibilità, richieste non riuscite, tempo di risposta del server ed eccezioni del server. È 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 cancelli 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 di Azure Pipelines . È anche possibile creare annotazioni per contrassegnare qualsiasi evento desiderato creandole da PowerShell.
Annotazioni di versione con compilazione di Azure Pipelines
Le annotazioni di versione sono una funzionalità del servizio Azure Pipelines basato sul cloud 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 |
AzureAppService Impostazioni |
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 il percorso dello 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. Sono -releaseProperties
facoltativi.
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
L'esempio seguente mostra i metadati che è possibile impostare nell'argomento facoltativo usando le variabili di compilazionereleaseProperties
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 CreateReleaseAnnotation
script di PowerShell 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
$body = $annotation -replace '(\\+)"', '$1$1"' -replace "`"", "`"`""
az rest --method put --uri "$($aiResourceId)/Annotations?api-version=2015-05-01" --body "$($body) "
# Use the following command for Linux Azure DevOps Hosts or other PowerShell scenarios
# Invoke-AzRestMethod -Path "$aiResourceId/Annotations?api-version=2015-05-01" -Method PUT -Payload $body
Nota
- Le annotazioni devono avere Categoria impostata su Distribuzione da visualizzare nella 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. Sono -releaseProperties
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/000000000-0000-0000-0000-00000000000/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.
Ogni volta che 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 Avanzate Impostazioni e selezionare Mostra annotazioni.
Selezionare un indicatore di annotazione per aprire 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 di versione sono una funzionalità del servizio Azure Pipelines basato sul cloud di Azure DevOps.
Importante
Le annotazioni che usano chiavi API sono deprecate. È consigliabile usare invece l'interfaccia della riga di comando di Azure.
Installare l'estensione delle 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 Delle annotazioni versione di Visual Studio Marketplaceselezionare 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 separata del browser aprire o creare il modello di versione che gestisce le distribuzioni di Azure Pipelines.
Selezionare Aggiungi attività e quindi selezionare l'attività Di annotazione versione di Application Insights dal menu.
Nota
L'attività Release Annotation 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 Accesso ALL'API di Application Insights e selezionare Crea chiave API.
Nella finestra Crea chiave API immettere una descrizione, selezionare Scrivi annotazioni e 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 Accesso 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 Release Annotations.
- Rimuovere l'attività Di annotazione versione di Application Insights nella distribuzione di Azure Pipelines.
- Creare nuove annotazioni di 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 al 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 selezionareElementi 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, https://github.com/myusername/reponame
ad esempio 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.
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 selezionareElementi 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.