Erkenntnisse zu Releases und Arbeitselementen sind entscheidend für die Optimierung des Lebenszyklus bei der Softwareentwicklung. Während Anwendungen weiterentwickelt werden, ist es wichtig, jedes Release und die zugehörigen Arbeitselemente genau zu überwachen. Diese Erkenntnisse zeigen Leistungsengpässe auf und ermöglichen Teams, Probleme proaktiv zu beheben und eine reibungslose Bereitstellung und Benutzererfahrung sicherzustellen. Sie befähigen Entwickler*innen und Projektbeteiligte, Entscheidungen zu treffen, Prozesse anzupassen und qualitativ hochwertige Software bereitzustellen.
Azure Pipelines kann in Application Insights integriert werden, um die kontinuierliche Überwachung Ihrer Azure DevOps-Releasepipeline während des gesamten Lebenszyklus der Softwareentwicklung zu ermöglichen.
Bei der kontinuierlichen Überwachung können Releasepipelines Überwachungsdaten von Application Insights und anderen Azure-Ressourcen integrieren. Wenn die Releasepipeline eine Application Insights-Warnung erkennt, kann sie die Bereitstellung steuern oder einen Rollback dafür ausführen, bis die Warnung gelöst wurde. Wenn alle Überprüfungen erfolgreich durchgeführt wurden, können Bereitstellungen vom Testen bis hin zur Produktion ohne manuellen Eingriff automatisch fortgesetzt werden.
Wählen Sie in Azure DevOps eine Organisation und ein Projekt aus.
Wählen Sie auf der Projektseite im Menü auf der linken Seite die Option Pipelines>Releases.
Wählen Sie den Dropdownpfeil neben Neu aus, und wählen Sie Neue Releasepipeline aus. Falls Sie noch nicht über eine Pipeline verfügen, wählen Sie auf der angezeigten Seite die Option Neue Pipeline.
Suchen Sie im Bereich Wählen Sie eine Vorlage aus nach Azure App Service-Bereitstellung mit fortlaufender Überwachung. Wählen Sie diese Option und anschließend Übernehmen.
Wählen Sie im Feld Stufe 1 den Hyperlink für die Option Stufenaufgaben anzeigen.
Füllen Sie im Konfigurationsbereich Stufe 1 die folgenden Felder aus:
Parameter |
Wert |
Name der Stufe |
Geben Sie einen Stufennamen an, oder übernehmen Sie Stufe 1. |
Azure-Abonnement |
Wählen Sie den Dropdownpfeil und das verknüpfte Azure-Abonnement aus, das Sie verwenden möchten. |
App-Typ |
Wählen Sie den Dropdownpfeil aus, und wählen Sie Ihren App-Typ aus. |
App Service-Name |
Geben Sie den Namen Ihrer Azure App Service-Instanz ein. |
Name der Ressourcengruppe für Application Insights |
Wählen Sie den Dropdownpfeil und die Ressourcengruppe aus, die Sie verwenden möchten. |
Application Insights-Ressourcenname |
Wählen Sie den Dropdownpfeil und die Application Insights-Ressource für die zuvor ausgewählte Ressourcengruppe aus. |
Wählen Sie oben rechts im Azure DevOps-Fenster die Option Speichern aus, um die Pipeline mit den Standardeinstellungen für Warnungsregeln zu speichern. Geben Sie einen beschreibenden Kommentar ein, und wählen Sie OK aus.
Ändern von Warnungsregeln
Die Vorlage Azure App Service-Bereitstellung mit kontinuierlicher Überwachung verfügt standardmäßig über vier Warnungsregeln: Verfügbarkeit, Anforderungsfehler, Serverantwortzeit und Serverausnahmen. Sie können weitere Regeln hinzufügen oder die Regeleinstellungen ändern, um Ihre Servicelevelanforderungen zu erfüllen.
Ändern Sie die Einstellungen für Warnungsregeln wie folgt:
Wählen Sie auf der Seite der Releasepipeline im linken Bereich die Option Configure Application Insights Alerts (Application Insights-Warnungen konfigurieren).
Die vier Standardwarnungsregeln werden über ein Inlineskript erstellt:
$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";
Sie können das Skript ändern und weitere Warnungsregeln hinzufügen. Außerdem können Sie Änderungen an der Warnung vornehmen. Darüber hinaus können Sie Warnungsregeln entfernen, die für Ihre Bereitstellungszwecke nicht sinnvoll sind.
Hinzufügen von Bereitstellungsbedingungen
Beim Hinzufügen von Bereitstellungsgates zu Ihrer Releasepipeline verhindert eine Warnung, die die von Ihnen festgelegten Schwellenwerte überschreitet, die unerwünschte Releasehöherstufung. Nach Auflösung der Warnung kann die Bereitstellung automatisch fortgesetzt werden.
Fügen Sie Bereitstellungsgates wie folgt hinzu:
Wählen Sie auf der Hauptseite der Pipeline unter Stufen das Symbol Bedingungen vor der Bereitstellung oder Bedingungen nach der Bereitstellung. Dies hängt davon ab, welche Stufe ein Gate mit kontinuierlicher Überwachung benötigt.
Legen Sie im Konfigurationsbereich Bedingungen vor der Bereitstellung die Option Gates auf Aktiviert fest.
Wählen Sie neben Bereitstellungsgates die Option Hinzufügen.
Wählen Sie im Dropdownmenü die Option Azure Monitor-Warnungen abfragen. Mit dieser Option können Sie sowohl auf Azure Monitor- als auch auf Application Insights-Warnungen zugreifen.
Geben Sie unter Auswertungsoptionen die gewünschten Werte für Einstellungen wie Der Zeitraum bis zur erneuten Auswertung von Gates und Das Zeitlimit, nach dem Gates als fehlerhaft gelten ein.
Anzeigen von Releaseprotokollen
Sie können das Verhalten von Bereitstellungsgates und andere Releaseschritte den Releaseprotokollen entnehmen. Öffnen Sie die Protokolle wie folgt:
Wählen Sie auf der Pipelineseite im Menü links die Option Releases.
Wählen Sie ein beliebiges Release aus.
Wählen Sie unter Stufen eine beliebige Stufe aus, um eine Zusammenfassung zum Release anzuzeigen.
Wählen Sie in der Releasezusammenfassung zum Anzeigen von Protokollen die Option Protokolle anzeigen, wählen Sie für eine beliebige Stufe den Hyperlink Erfolgreich oder Fehler, oder zeigen Sie auf eine Stufe, und wählen Sie Protokolle.
Mit Anmerkungen wird angegeben, wo Sie einen neuen Build bereitgestellt haben, oder es wird auf andere wichtige Ereignisse hingewiesen. Dank der Anmerkungen sehen Sie auf einen Blick, ob Ihre Änderungen Auswirkungen auf die Leistung Ihrer Anwendung hatten. Sie können automatisch durch das Buildsystem von Azure Pipelines erstellt werden. Es können auch Anmerkungen erstellt werden, die alle gewünschten Ereignisse markieren, indem diese in PowerShell erstellt werden.
Releaseanmerkungen mit Azure Pipelines-Build
Releaseanmerkungen sind ein Feature des cloudbasierten Azure Pipelines-Diensts von Azure DevOps.
Wenn alle folgenden Kriterien erfüllt sind, erstellt die Bereitstellungsaufgabe automatisch die Releaseanmerkung:
Die Ressource, für die die Bereitstellung erfolgt, ist mit Application Insights (über die App-Einstellung APPINSIGHTS_INSTRUMENTATIONKEY
) verknüpft.
Die Application Insights-Ressource befindet sich im gleichen Abonnement wie die Ressource, in der die Bereitstellung erfolgt.
Sie verwenden eine der folgenden Azure DevOps-Pipelineaufgaben:
Aufgabencode |
Aufgabenname |
Versionen |
AzureAppServiceSettings |
Azure App Service-Einstellungen |
Beliebig |
AzureRmWebAppDeployment |
Azure App Service-Bereitstellung |
V3 und höher |
AzureFunctionApp |
Azure-Funktionen |
Beliebig |
AzureFunctionAppContainer |
Azure Functions für Container |
Beliebig |
AzureWebAppContainer |
Azure-Web-App für Container |
Beliebig |
AzureWebApp |
Azure-Web-App |
Beliebig |
Hinweis
Wenn Sie immer noch die Bereitstellungsaufgabe für Application Insights-Anmerkungen verwenden, sollten Sie sie löschen.
Wenn Sie eine der Bereitstellungsaufgaben im vorherigen Abschnitt nicht verwenden können, müssen Sie in Ihrer Bereitstellungspipeline eine Inlineskriptaufgabe hinzufügen.
Navigieren Sie zu einer neuen oder vorhandenen Pipeline, und wählen Sie eine Aufgabe aus.
Fügen Sie eine neue Aufgabe hinzu, und wählen Sie Azure CLI aus.
Geben Sie das entsprechende Azure-Abonnement an. Ändern Sie Skripttyp in PowerShell und Skriptspeicherort in Inline.
Fügen Sie das PowerShell-Skript aus Schritt 2 im nächsten Abschnitt zu Inlineskript hinzu.
Fügen Sie die folgenden Argumente hinzu. Ersetzen Sie unter Skriptargumente die Platzhalter in eckigen Klammern durch Ihre eigenen Werte. Die Releaseeigenschaften (-releaseProperties
) sind optional.
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
Im Folgenden finden Sie ein Beispiel für Metadaten, die Sie im optionalen releaseProperties
Argument mithilfe von Build- und Release-Variablen festlegen können.
-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)" }
Wählen Sie Speichern aus.
Erstellen von Releaseanmerkungen mit der Azure CLI
Mit dem CreateReleaseAnnotation
PowerShell-Skript können Sie Anmerkungen auf der Grundlage eines beliebigen Prozesses erstellen, ohne Azure DevOps zu verwenden.
Melden Sie sich bei der Azure CLI an.
Machen Sie eine lokale Kopie des folgenden Skripts und nennen Sie es 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
Hinweis
- Für Ihre Anmerkungen muss Kategorie auf Bereitstellung festgelegt sein, damit sie im Azure-Portal angezeigt werden können.
- Wenn Sie die Fehlermeldung „Die Anforderung enthält einen leeren Entitätstext, jedoch keinen Header 'Content-Type'.“ erhalten, versuchen Sie, die Ersetzungsparameter in der folgenden Zeile zu entfernen.
$body = (ConvertTo-Json $annotation -Compress)
Rufen Sie das PowerShell-Skript mit dem folgenden Code auf. Ersetzen Sie die Platzhalter mit eckigen Klammern durch Ihre Werte. Die Releaseeigenschaften (-releaseProperties
) sind optional.
.\CreateReleaseAnnotation.ps1 `
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
Argument |
Definition |
Hinweis |
aiResourceId |
Die Ressourcen-ID der Application Insights-Zielressource. |
Beispiel: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyRGName/providers/microsoft.insights/components/MyResourceName |
releaseName |
Der Name, den die erstellte Releaseanmerkung erhalten soll |
|
releaseProperties |
Wird zum Anfügen benutzerdefinierter Metadaten an die Anmerkung verwendet. |
Optional |
Anmerkungen anzeigen
Hinweis
Versionsanmerkungen sind im Metriken-Bereich von Application Insights derzeit nicht verfügbar.
Wenn Sie diese Versionsvorlage zum Bereitstellen einer neuen Version verwenden, wird eine Anmerkung an Application Insights gesendet. Anmerkungen können an den folgenden Speicherorten angezeigt werden:
Navigieren Sie zum Aktivieren der Anmerkungen in Ihrer Arbeitsmappe zu Erweiterte Einstellungen, und wählen Sie Anmerkungen anzeigen aus.
Wählen Sie einen Anmerkungsmarker aus, um Details zur Version anzuzeigen, z. B. Anforderer, Quellcodeverwaltungsbranch, Releasepipeline und Umgebung.
Anmerkungen mit API-Schlüsseln veröffentlichen
Releaseanmerkungen sind ein Feature des cloudbasierten Azure Pipelines-Diensts von Azure DevOps.
Wichtig
Anmerkungen mit API-Schlüsseln sind veraltet. Es wird empfohlen, stattdessen Azure CLI zu verwenden.
Installieren der Erweiterung für Anmerkungen (einmalig)
Um Releaseanmerkungen erstellen zu können, müssen Sie eine der zahlreichen Azure DevOps-Erweiterungen installieren, die im Visual Studio Marketplace zur Verfügung stehen.
Melden Sie sich bei Ihrem Azure DevOps-Projekt an.
Wählen Sie im Visual Studio Marketplace auf der Seite Releaseanmerkungserweiterung Ihre Azure DevOps-Organisation aus. Wählen Sie Installieren aus, um die Erweiterung Ihrer Azure DevOps-Organisation hinzuzufügen.
Die Erweiterung muss nur einmal für Ihre Azure DevOps-Organisation installiert werden. Nun können Sie Releaseanmerkungen für ein beliebiges Projekt in Ihrer Organisation konfigurieren.
Erstellen Sie für Ihre Azure Pipelines-Versionsvorlagen jeweils einen separaten API-Schlüssel.
Melden Sie sich beim Azure-Portal an, und öffnen Sie die Application Insights-Ressource, die Ihre Anwendung überwacht. Sollten Sie über keine solche Ressource verfügen, erstellen Sie eine neue Application Insights-Ressource.
Öffnen Sie die Registerkarte API-Zugriff, und kopieren Sie die Application Insights-ID.
Öffnen oder erstellen Sie in einem separaten Browserfenster die Versionsvorlage, mit der Ihre Azure Pipelines-Bereitstellungen verwaltet werden.
Wählen Sie Aufgabe hinzufügen und anschließend im Menü die Aufgabe Application Insights Releaseanmerkung aus dem Menü aus.
Hinweis
Die Releaseanmerkungs-Task unterstützt derzeit nur Windows-basierte Agenten. Es kann auf Linux, macOS oder anderen Agenttypen nicht ausgeführt werden.
Fügen Sie unter Anwendungs-ID die Application Insights-ID ein, die Sie auf der Registerkarte API-Zugriff kopiert haben.
Wählen Sie im Application Insights-Fenster API-Zugriff die Option API-Schlüssel erstellen aus.
Geben Sie im Fenster API-Schlüssel erstellen eine Beschreibung ein, wählen Sie Anmerkungen schreiben aus, und wählen Sie anschließend Schlüssel generieren aus. Kopieren Sie den neuen Schlüssel.
Wählen Sie im Fenster für die Versionsvorlage auf der Registerkarte Variablen die Option Hinzufügen aus, um eine Variablendefinition für den neuen API-Schlüssel zu erstellen.
Geben Sie unter Name den ApiKey ein. Geben Sie unter Wert den API-Schlüssel ein, den Sie aus der API Access-Registerkarte kopiert haben.
Wählen Sie im Hauptfenster der Versionsvorlage die Option Speichern aus, um die Vorlage zu speichern.
Übergang zur neuen Releaseanmerkung
So verwenden Sie die neuen Releaseanmerkungen:
- Entfernen Sie die Erweiterung für Releaseanmerkungen.
- Entfernen Sie den Application Insights-Task für Releaseanmerkungen in Ihrer Azure Pipelines-Bereitstellung.
- Erstellen Sie neue Releaseanmerkungen mit Azure Pipelines oder Azure CLI.
Die Funktion zur Integration von Arbeitselementen ermöglicht Ihnen das einfache Erstellen von Arbeitselementen in GitHub oder Azure DevOps, in die relevante Application Insights-Daten eingebettet sind.
Die neue Arbeitselementintegration bietet gegenüber der klassischen die folgenden Funktionen:
- Erweiterte Felder wie „Zugewiesene Person“, „Projekte“ oder „Meilensteine“.
- Repositorysymbole, damit Sie zwischen GitHub- und Azure DevOps-Arbeitsmappen unterscheiden können.
- Mehrere Konfigurationen für eine beliebige Anzahl von Repositorys oder Arbeitselementen.
- Bereitstellung über Azure Resource Manager-Vorlagen.
- Vorgefertigte und anpassbare KQL-Abfragen (Keyword Query Language) zum Hinzufügen von Application Insights-Daten zu Ihren Arbeitselementen.
- Anpassbare Arbeitsmappenvorlagen.
Zum Erstellen einer Arbeitselementvorlage navigieren Sie zu Ihrer Application Insights-Ressource, und wählen Sie auf der linken Seite unter Konfigurieren die Option Arbeitselemente und dann oben die Option Neue Vorlage erstellen aus.
Sie können eine Arbeitselementvorlage auch über die Registerkarte „End-to-End-Transaktionsdetails “ erstellen, falls derzeit keine Vorlage vorhanden ist. Wählen Sie ein Ereignis und dann auf der rechten Seite Arbeitselement erstellen aus. Anschließend wählen Sie Mit Arbeitsmappenvorlage beginnen aus.
Nachdem Sie Neue Vorlage erstellen ausgewählt haben, können Sie die Nachverfolgungssysteme auswählen, der Arbeitsmappe einen Namen geben, eine Verknüpfung mit dem ausgewählten Nachverfolgungssystem erstellen und eine Region zum Speichern der Verlage auswählen (dies ist standardmäßig die Region, in der sich Ihre Application Insights Ressource befindet). Die URL-Parameter sind die Standard-URL für Ihr Repository, z. B. https://github.com/myusername/reponame
oder https://dev.azure.com/{org}/{project}
.
Sie können spezifische Workitem-Eigenschaften direkt in der Vorlage selbst einstellen. Dies umfasst den Zugewiesenen, den Iterationspfad, Projekte und mehr, abhängig von Ihrem Versionskontrollanbieter.
Hinweis
Für lokale Azure DevOps-Umgebungen kann eine Beispiel-URL wie https://dev.azure.com/test/test als Platzhalter für die Azure DevOps-Projekt-URL verwendet werden. Nachdem die Arbeitselementvorlage erstellt wurde, können Sie die URL und ihre Gültigkeitsprüfungsregel innerhalb der generierten Azure-Arbeitsmappe ändern.
Erstellen eines Arbeitselements
Sie können auf die neue Vorlage über alle End-to-End-Transaktionsdetails zugreifen, auf die Sie über „Leistung“, „Fehler“, „Verfügbarkeit“ oder andere Registerkarten zugreifen können.
Zum Erstellen eines Arbeitselements navigieren Sie zu den End-to-End-Transaktionsdetails, und wählen Sie ein Ereignis aus. Wählen Sie dann Arbeitselement erstellen und anschließend Ihre Arbeitselementvorlage aus.
Im Browser wird eine neue Registerkarte für das von Ihnen ausgewählte Nachverfolgungssystem geöffnet. In Azure DevOps können Sie einen Fehler oder eine Aufgabe erstellen, und in GitHub können Sie ein neues Problem in Ihrem Repository erstellen. Es wird automatisch ein neues Arbeitselement mit Kontextinformationen erstellt, die von Application Insights bereitgestellt werden.
Bearbeiten einer Vorlage
Zum Bearbeiten der Vorlage navigieren Sie unter Konfigurieren zur Registerkarte Arbeitselemente, und wählen Sie das Stiftsymbol neben der Arbeitsmappe aus, die Sie aktualisieren möchten.
Wählen Sie Bearbeiten in der oberen Symbolleiste.
Sie können mehrere Arbeitselementkonfigurationen erstellen und für jedes Szenario über eine benutzerdefinierte Arbeitsmappe verfügen. Die Arbeitsmappen können auch von Azure Resource Manager bereitgestellt werden, um Standardimplementierungen in allen Umgebungen zu gewährleisten.
Integration von klassischen Arbeitselementen
Wählen Sie in Ihrer Application Insights-Ressource unter Konfigurieren die Option Arbeitselemente aus.
Wählen Sie Zur klassischen Ansicht wechseln aus, füllen Sie die Felder mit Ihren Informationen aus, und autorisieren Sie.
Erstellen Sie ein Arbeitselement, indem Sie zu den Details der End-to-End-Transaktion navigieren, ein Ereignis auswählen und dann Arbeitselement erstellen (klassisch) wählen.
Migrieren zu einer neuen Arbeitselementintegration
Löschen Sie zum Migrieren Ihre klassische Arbeitselementkonfiguration, und erstellen und konfigurieren Sie dann eine Arbeitselementvorlage, um die Integration neu zu erstellen.
Rufen Sie zum Löschen in Ihrer Application Insights-Ressource unter KonfigurierenArbeitsaufgaben auf, wählen Sie dann Zu Klassik wechseln und *Löschen oben aus .