Revisar los resultados de la prueba TrackAvailability()
En este artículo se explica cómo revisar los resultados de la prueba TrackAvailability() en Azure Portal y consultar los datos mediante Log Analytics. Las pruebas estándarsiempre deben usarse si es posible, ya que requieren poca inversión, cero mantenimiento y tienen pocos requisitos previos.
Requisitos previos
- Recurso de Application Insights basado en área de trabajo
- Acceso al código fuente de una aplicación de funciones en Azure Functions
- Experiencia de desarrollador capaz de crear código personalizado para TrackAvailability(), adaptado a sus necesidades empresariales específicas
Importante
TrackAvailability() requiere un esfuerzo por parte del desarrollador en cuanto a la escritura y mantenimiento del código personalizado potencialmente complejo.
Comprobación de la disponibilidad
Empiece por revisar el gráfico en la pestaña Disponibilidad del recurso de Application Insights.
Nota
Las pruebas creadas con TrackAvailability()
aparecerán con CUSTOM junto al nombre de la prueba.
Para ver los detalles de la transacción completa, en Aumentar detalle seleccione Correcto o Erróneo. Luego, seleccione una muestra. También puede obtener los detalles de la transacción de un extremo a otro seleccionando un punto de datos en el gráfico.
Consulta en análisis de registros
Puede usar el análisis de registros para ver los resultados de disponibilidad, dependencias, etc. Para más información acerca del análisis de registros, visite Introducción a las consultas de registros.
Ejemplo de código básico
Nota:
Este ejemplo se ha diseñado únicamente para mostrar la mecánica de cómo actúa la llamada a la API de TrackAvailability()
en una función de Azure. No muestra cómo se escribe el código de prueba HTTP o la lógica de negocios subyacentes que se necesitarían para convertir esta llamada en un ejemplo de disponibilidad totalmente funcional. De forma predeterminada, si sigue este ejemplo, creará una prueba HTTP GET de disponibilidad básica.
Para seguir estas instrucciones, debe usar el plan dedicado para permitir la edición de código en Editor de App Service.
Creación de una función de desencadenador de temporizador
Cree un recurso de Azure Functions.
Si ya tiene un recurso de Application Insights:
De forma predeterminada, Azure Functions crea un recurso de Application Insights. Pero si desea usar un recurso que creó anteriormente, debe especificarlo durante la creación.
Siga las instrucciones sobre cómo crear un recurso de Azure Functions con la modificación siguiente:
En la pestaña Supervisión, seleccione el cuadro desplegable Application Insights e introduzca o seleccione el nombre del recurso.
Si aún no tiene un recurso de Application Insights creado para la función desencadenada por el temporizador:
- De manera predeterminada, al crear una aplicación de Azure Functions, se crea un recurso de Application Insights de forma automática. Siga las instrucciones sobre cómo crear un recurso de Azure Functions.
Nota:
Puede hospedar las funciones en un plan de consumo, Premium o App Service. Si está probando con una red virtual o probando puntos de conexión no públicos, deberá usar el plan Premium en lugar del plan de consumo. Seleccione el plan en la pestaña Hosting. Al crear la aplicación de funciones, asegúrese de que la versión más reciente de .NET está seleccionada.
Cree una función de desencadenador de temporizador.
- En su aplicación de función, seleccione la pestaña Funciones.
- Seleccione Agregar. En el panel Agregar función, seleccione las siguientes configuraciones:
- Entorno de desarrollo: Desarrollar en el portal
- Seleccione una plantilla: Desencadenador de temporizador
- Seleccione Agregar para crear la función Desencadenador de temporizador.
Adición y edición de código en el editor de App Service
Vaya a la aplicación de funciones implementada y, en Herramientas de desarrollo, seleccione la pestaña Editor de App Service.
Para crear un nuevo archivo, haga clic con el botón derecho en la función de desencadenador de temporizador (por ejemplo, TimerTrigger1) y seleccione Nuevo archivo. A continuación, escriba el nombre del archivo y seleccione Introducir.
Cree un archivo nuevo denominado function.proj y pegue en él el código siguiente:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights" Version="2.15.0" /> <!-- Ensure you’re using the latest version --> </ItemGroup> </Project>
Cree un archivo nuevo denominado runAvailabilityTest.csx y pegue el código siguiente:
using System.Net.Http; public async static Task RunAvailabilityTestAsync(ILogger log) { using (var httpClient = new HttpClient()) { // TODO: Replace with your business logic await httpClient.GetStringAsync("https://www.bing.com/"); } }
Defina la variable de
REGION_NAME
entorno como una ubicación de disponibilidad válida de Azure.Ejecute el siguiente comando en la CLI de Azure para enumerar las regiones disponibles.
az account list-locations -o table
Copie el código siguiente en el archivo run.csx. (Reemplace el código preexistente).
#load "runAvailabilityTest.csx" using System; using System.Diagnostics; using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.DataContracts; using Microsoft.ApplicationInsights.Extensibility; private static TelemetryClient telemetryClient; // ============================================================= // ****************** DO NOT MODIFY THIS FILE ****************** // Business logic must be implemented in RunAvailabilityTestAsync function in runAvailabilityTest.csx // If this file does not exist, please add it first // ============================================================= public async static Task Run(TimerInfo myTimer, ILogger log, ExecutionContext executionContext) { if (telemetryClient == null) { // Initializing a telemetry configuration for Application Insights based on connection string var telemetryConfiguration = new TelemetryConfiguration(); telemetryConfiguration.ConnectionString = Environment.GetEnvironmentVariable("APPLICATIONINSIGHTS_CONNECTION_STRING"); telemetryConfiguration.TelemetryChannel = new InMemoryChannel(); telemetryClient = new TelemetryClient(telemetryConfiguration); } string testName = executionContext.FunctionName; string location = Environment.GetEnvironmentVariable("REGION_NAME"); var availability = new AvailabilityTelemetry { Name = testName, RunLocation = location, Success = false, }; availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString(); availability.Context.Operation.Id = Activity.Current.RootId; var stopwatch = new Stopwatch(); stopwatch.Start(); try { using (var activity = new Activity("AvailabilityContext")) { activity.Start(); availability.Id = Activity.Current.SpanId.ToString(); // Run business logic await RunAvailabilityTestAsync(log); } availability.Success = true; } catch (Exception ex) { availability.Message = ex.Message; throw; } finally { stopwatch.Stop(); availability.Duration = stopwatch.Elapsed; availability.Timestamp = DateTimeOffset.UtcNow; telemetryClient.TrackAvailability(availability); telemetryClient.Flush(); } }
Ejemplo de código de prueba web de varios pasos
Siga las mismas instrucciones anteriores y pegue el código siguiente en el archivo runAvailabilityTest.csx:
using System.Net.Http;
public async static Task RunAvailabilityTestAsync(ILogger log)
{
using (var httpClient = new HttpClient())
{
// TODO: Replace with your business logic
await httpClient.GetStringAsync("https://www.bing.com/");
// TODO: Replace with your business logic for an additional monitored endpoint, and logic for additional steps as needed
await httpClient.GetStringAsync("https://www.learn.microsoft.com/");
}
}