La información del elemento de trabajo y la versión son cruciales para optimizar el ciclo de vida de desarrollo de software. A medida que las aplicaciones evolucionan, es fundamental supervisar cada versión y sus elementos de trabajo estrechamente. Estas informaciones resaltan los cuellos de botella de rendimiento y permiten a los equipos solucionar problemas de forma proactiva, lo que garantiza una implementación y una experiencia de usuario fluidas. Capacitan a los desarrolladores y a las partes interesadas para tomar decisiones, ajustar los procesos y ofrecer software de alta calidad.
Azure Pipelines se integra con Application Insights para permitir la supervisión continua de la canalización de versión de DevOps a lo largo del ciclo de vida de desarrollo del software.
Con la supervisión continua, las canalizaciones de versión pueden incorporar datos de supervisión de Application Insights y otros recursos de Azure. Cuando la canalización de versión detecta una alerta de Application Insights, puede canalizar o revertir la implementación hasta que se resuelva la alerta. Si todas las comprobaciones son correctas, las implementaciones pueden continuar automáticamente de prueba a producción sin necesidad de intervención manual.
En Azure DevOps seleccione una organización y un proyecto.
En el menú de la izquierda de la página del proyecto,seleccione Canalizaciones>Versiones.
Baje la flecha desplegable situada junto a Nuevo y seleccione Nueva canalización de versión. O bien, si aún no tiene una canalización, seleccione Nueva canalización en la página que aparece.
En el panel Seleccionar una plantilla, busque y seleccione Implementación de Azure App Service con supervisión continua y Aplicar.
En el cuadro Fase 1, seleccione el hipervínculo a Ver tareas de la fase.
En el panel de configuración Fase 1, rellene los siguientes campos:
Parámetro |
Value |
Nombre de la fase |
Proporcione un nombre de fase o déjelo como Fase 1. |
Suscripción de Azure |
Baje la flecha desplegable y seleccione la suscripción vinculada de Azure que desea usar. |
Tipo de aplicación |
Baje la flecha desplegable y seleccione el tipo de aplicación. |
Nombre de App Service |
Escriba el nombre de la instancia de Azure App Service. |
Nombre de grupo de recursos para Application Insights |
Baje la flecha desplegable y seleccione el grupo de recursos que desea usar. |
Nombre de recurso de Application Insights |
Baje la flecha desplegable y seleccione el recurso de Application Insights para el grupo de recursos que seleccionó. |
Para guardar la canalización con la configuración de regla de alertas predeterminada, seleccione Guardar en la esquina superior derecha de la ventana de Azure DevOps. Escriba un comentario descriptivo y seleccione Aceptar.
Modificación de las reglas de alertas
Lista para usar, la plantilla Implementación de Azure App Service con supervisión continua tiene cuatro reglas de alerta: Disponibilidad, Solicitudes con errores, Tiempo de respuesta del servidor y Excepciones de servidor. Puede agregar más reglas o cambiar la configuración de estas para satisfacer sus necesidades de nivel de servicio.
Para modificar la configuración de las reglas de alertas:
En el panel izquierdo de la página canalización de versión, seleccione Configure Application Insights Alerts (Configurar alertas de Application Insights).
Las cuatro reglas de alerta predeterminadas se crean mediante un script en línea:
$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";
Puede modificar el script y agregar más reglas de alerta. También puede modificar las condiciones de alerta. Además, puede quitar reglas de alerta que no tengan sentido para su propósito de implementación.
Incorporación de condiciones de implementación
Al agregar puertas de implementación a la canalización de versión, una alerta que supera los umbrales establecidos evita la promoción de versiones no deseadas. Una vez resuelta la alerta, la implementación puede continuar automáticamente.
Para agregar puertas de implementación:
En la página principal de la canalización, en Fases, seleccione el icono Condiciones anteriores a la implementación o Condiciones posteriores a la implementación en función de la fase donde se necesite una puerta de supervisión continua.
En el panel de configuración Condiciones anteriores a la implementación, establezca Puertas en Habilitadas.
Junto a Validaciones de la implementación, seleccione Agregar.
Seleccione Consultar las alertas de Azure Monitor en el menú desplegable. Esta opción permite acceder a las alertas de Azure Monitor y de Application Insights.
En Opciones de evaluación, escriba los valores que desee configurar, como El tiempo entre la reevaluación de las validaciones y El tiempo de espera tras el cual se produce un error de las validaciones.
Visualización de los registros de versión
En los registros de versión se puede ver el comportamiento de la puerta de implementación y otros pasos de la versión. Para abrir los registros:
Seleccione Versiones en el menú de la izquierda de la página Canalización.
Seleccione cualquier versión.
En fases, seleccione cualquier fase para ver un resumen de la versión.
Para ver los registros, seleccione Ver registros en el resumen de la versión y el hipervínculo Correcto o Erróneo en cualquier fase, o mantenga el mouse sobre una fase y seleccione Registros.
Las anotaciones muestran dónde ha implementado una nueva compilación u otros eventos importantes. Las anotaciones permiten ver fácilmente si los cambios tuvieron algún efecto en el rendimiento de la aplicación. Se pueden crear automáticamente con el sistema de compilación de Azure Pipelines. También puede crear anotaciones para marcar los eventos que quiera si los crea desde PowerShell.
Anotaciones de la versión con una compilación de Azure Pipelines
Las anotaciones de la versión son una característica del servicio Azure Pipelines basado en la nube de Azure DevOps.
Si se cumplen todos los criterios siguientes, la tarea de implementación crea automáticamente la anotación de versión:
El recurso en el que va a realizar la implementación está vinculado a Application Insights a través de la opción de configuración APPINSIGHTS_INSTRUMENTATIONKEY
de la aplicación.
El recurso de Application Insights está en la misma suscripción que el recurso en el que va a realizar la implementación.
Está usando una de las siguientes tareas de canalización de Azure DevOps:
Código de tarea |
Nombre de la tarea |
Versiones |
AzureAppServiceSettings |
Configuración de Azure App Service |
Any |
AzureRmWebAppDeployment |
Implementación de Azure App Service |
V3 y posteriores |
AzureFunctionApp |
Azure Functions |
Any |
AzureFunctionAppContainer |
Azure Functions para contenedor |
Any |
AzureWebAppContainer |
Azure Web App for Containers |
Any |
AzureWebApp |
Aplicación web de Azure |
Any |
Nota
Si sigue usando la tarea de implementación de anotación de Application Insights, debe eliminarla.
Si no puede usar una de las tareas de implementación de la sección anterior, deberá agregar una tarea de script insertado en la canalización de implementación.
Vaya a una canalización nueva o existente y seleccione una tarea.
Agregue una nueva tarea y seleccione CLI de Azure.
Especifique la suscripción de Azure correspondiente. Cambie Tipo de script a PowerShell y Ubicación del script a Insertado.
Agregue el script de PowerShell del paso 2 de la sección siguiente a Script en línea.
Agregue los siguientes argumentos. Reemplace los marcadores de posición entre corchetes angulares por sus valores de Argumentos de script. Los valores de -releaseProperties
son opcionales.
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
En el siguiente ejemplo se muestran metadatos que puede establecer en el argumento releaseProperties
opcional mediante variables de compilación y versión.
-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)" }
Seleccione Guardar.
Creación de anotaciones de versión con la CLI de Azure
Puede usar el script de PowerShell CreateReleaseAnnotation
para crear anotaciones desde cualquier proceso que quiera, sin usar Azure DevOps.
Inicie sesión en la CLI de Azure.
Haga una copia local del siguiente script y denomínela 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
- Las anotaciones deben tener el valor de Categoría establecido en Implementación para que aparezcan en Azure Portal.
- Si recibe el error, "La solicitud contiene un cuerpo de entidad pero no un encabezado Content-Type", pruebe a quitar los parámetros replace en la línea siguiente.
$body = (ConvertTo-Json $annotation -Compress)
Llame al script de PowerShell con el código siguiente. Reemplace los marcadores de posición entre corchetes angulares por sus valores. Los valores de -releaseProperties
son opcionales.
.\CreateReleaseAnnotation.ps1 `
-aiResourceId "<aiResourceId>" `
-releaseName "<releaseName>" `
-releaseProperties @{"ReleaseDescription"="<a description>";
"TriggerBy"="<Your name>" }
Argumento |
Definición |
Nota |
aiResourceId |
Identificador del recurso de Application Insights de destino. |
Ejemplo: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyRGName/providers/microsoft.insights/components/MyResourceName |
releaseName |
Nombre que se dará a la anotación de versión creada. |
|
releaseProperties |
Se usa para adjuntar metadatos personalizados a la anotación. |
Opcionales |
Ver anotaciones
Nota
Las anotaciones de versión no están disponibles actualmente en el panel Métricas de Application Insights.
Cuando utiliza la plantilla de versión para implementar una nueva versión, se envía una anotación a Application Insights. Puede ver las anotaciones en las siguientes ubicaciones:
Para habilitar las anotaciones en el libro, vaya a Configuración avanzada y seleccione Mostrar anotaciones.
Seleccione un marcador de anotación para abrir los detalles de la versión, incluidos el solicitante, la rama de control de código fuente, la canalización de la versión y el entorno.
Anotaciones de versión mediante claves de API
Las anotaciones de la versión son una característica del servicio Azure Pipelines basado en la nube de Azure DevOps.
Importante
Las anotaciones que usan claves de API están en desuso. Se recomienda usar la CLI de Azure en su lugar.
Instalación de la extensión Anotaciones (una vez)
Para crear anotaciones de versión, instale una de las muchas extensiones de Azure DevOps disponibles en Visual Studio Marketplace.
Inicie sesión en su proyecto de Azure DevOps.
En la página de la extensión de anotaciones de versión de Visual Studio Marketplace, seleccione su organización de Azure DevOps. Seleccione Instalar para agregar la extensión a su organización de Azure DevOps.
Solo deberá instalar la extensión una vez para su organización de Azure DevOps. Las anotaciones de la versión se pueden configurar ahora para cualquier proyecto de su organización.
Cree una clave de API independiente para cada una de las plantillas de versión de Azure Pipelines.
Inicie sesión en Azure Portal y abra el recurso de Application Insights que supervisa su aplicación. Si no tiene uno, cree un nuevo recurso de Application Insights.
Abra la pestaña Acceso de API y copie el Id. de Application Insights.
En una ventana del explorador independiente, abra o cree la plantilla de versión que administra sus implementaciones de Azure Pipelines.
Seleccione Agregar tarea y, a continuación, seleccione la tarea Anotación de versión de Application Insights en el menú.
Nota
Actualmente, la tarea Anotación de versión solo admite agentes basados en Windows. No se ejecutará en Linux, macOS u otros tipos de agentes.
En Id. de aplicación, pegue el identificador de Application Insights que copió de la pestaña Acceso de API.
De vuelta en la ventana Acceso de API de Application Insights, seleccione Crear clave de API.
En la ventana Crear clave de API, escriba una descripción, seleccione Escribir anotaciones y, a continuación, seleccione Generar clave. Copie la clave nueva.
En la ventana de la plantilla de versión, en la pestaña Variables, seleccione Agregar para crear una definición de variable para la nueva clave de API.
En Nombre, escriba ApiKey. En Valor, pegue la clave de API que copió en la pestaña Acceso de API.
Seleccione Guardar en la ventana de la plantilla de versión principal para guardar la plantilla.
Transición a la nueva anotación de versión
Para usar las nuevas anotaciones de versión:
- Quite la extensión Anotaciones de versión.
- Quite la tarea Anotación de versión de Application Insights de la implementación de Azure Pipelines.
- Cree nuevas anotaciones de versión con Azure Pipelines o la CLI de Azure.
La funcionalidad de integración de elementos de trabajo le permite crear fácilmente en GitHub o Azure DevOps elementos de trabajo que tienen datos de Application Insights pertinentes insertados en ellos.
La nueva integración de elementos de trabajo ofrece las características siguientes respecto a la versión clásica:
- Campos avanzados, como persona asignada, proyectos o hitos.
- Iconos de repositorio para que pueda diferenciar entre los libros de Azure DevOps y GitHub.
- Varias configuraciones para cualquier número de repositorios o elementos de trabajo.
- Implementación mediante plantillas de Azure Resource Manager.
- Consultas pregeneradas y personalizables del lenguaje de consulta de palabras clave (KQL) para agregar datos de Application Insights a los elementos de trabajo.
- Plantillas de libro personalizables.
Para crear una plantilla de elemento de trabajo, vaya a su recurso de Application Insights y, a la izquierda, en Configurar, seleccione Elementos de trabajo; luego, en la parte superior, elija Create a new template (Crear nueva plantilla).
Si no existe ninguna plantilla actual, también puede crear una plantilla de elemento de trabajo desde la pestaña de detalles de la transacción completa. Seleccione un evento y, a la derecha, elija Crear un elemento de trabajo; luego, seleccione Start with a workbook template (Empezar con una plantilla de libro).
Después de seleccionar Create a new template (Crear nueva plantilla), puede elegir los sistemas de seguimiento, asignar un nombre al libro, crear un vínculo al sistema de seguimiento seleccionado y elegir una región para almacenar la plantilla (el valor predeterminado es la región en la que se encuentra el recurso de Application Insights). Los parámetros de dirección URL son la dirección URL predeterminada del repositorio, por ejemplo, https://github.com/myusername/reponame
o https://dev.azure.com/{org}/{project}
.
Puede establecer propiedades específicas de los elementos de trabajo directamente desde la propia plantilla. Esto incluye la persona asignada, la ruta de acceso de iteración, los proyectos, etc. en función del proveedor de control de versiones.
Nota:
Para entornos de Azure DevOps locales, se puede usar una dirección URL de ejemplo, como https://dev.azure.com/test/test, como marcador de posición para la dirección URL del proyecto de Azure DevOps. Una vez creada la plantilla de elemento de trabajo, modifique la dirección URL y su regla de validación en el libro de Azure generado.
Crear un elemento de trabajo
Puede acceder a la nueva plantilla desde cualquier detalle de transacción completa al que pueda acceder desde las pestañas Rendimiento, Errores, Disponibilidad, u otras.
Para crear un elemento de trabajo, vaya a Detalles de la transacción completa, seleccione un evento y, a continuación, elija Crear elemento de trabajo y la plantilla de elemento de trabajo.
Se abrirá una nueva pestaña en el explorador que le lleva al sistema de seguimiento seleccionado. En Azure DevOps, puede crear un error o una tarea y, en GitHub, puede crear un problema en el repositorio. Se crea automáticamente un elemento de trabajo con la información contextual proporcionada por Application Insights.
Edición de una plantilla
Para editar la plantilla, vaya a la pestaña Elementos de trabajo en Configurar y seleccione el icono de lápiz situado junto al libro que quiere actualizar.
Seleccione Editar en la barra de herramientas superior.
Puede crear más de una configuración de elementos de trabajo y tener un libro personalizado adecuado para cada escenario. Los libros también pueden implementarse mediante Azure Resource Manager, lo que garantiza implementaciones estándar entre los entornos.
Integración de elementos de trabajo clásicos
En la opción Configurar del recurso de Application Insights, seleccione Elementos de trabajo.
Seleccione Cambiar al modo clásico, rellene los campos con su información y realice la autorización.
Para crear un elemento de trabajo, vaya a los detalles de la transacción completa, seleccione un evento y, a continuación, elija Crear elemento de trabajo (clásico) .
Migración a una nueva integración de elementos de trabajo
Para migrar, elimine la configuración de elemento de trabajo clásico y, a continuación, cree y configure una plantilla de elemento de trabajo para volver a crear la integración.
Para eliminar, vaya al recurso de Application Insights en Configurar, seleccione Elementos de trabajo y, a continuación, seleccione Cambiar al modo clásico y *Eliminar en la parte superior.