Просмотр результатов теста TrackAvailability()
В этой статье объясняется, как просмотреть результаты теста TrackAvailability() в портал Azure и запросить данные с помощью Log Analytics. Стандартные тестывсегда следует использовать, если это возможно , так как они требуют мало инвестиций, без обслуживания и имеют несколько предварительных требований.
Необходимые компоненты
- Ресурс Application Insights на основе рабочей области
- Доступ к исходному коду приложения-функции в Функции Azure
- Опыт разработчика, способный создавать пользовательский код для TrackAvailability(), адаптированный к конкретным бизнес-потребностям
Внимание
TrackAvailability() требует вложения разработчика в написание и maintanining потенциально сложного пользовательского кода.
Проверить доступность
Начните с просмотра графа на вкладке "Доступность" ресурса приложения Аналитика.
Примечание.
Тесты, созданные с TrackAvailability()
помощью custom, будут отображаться рядом с именем теста.
Чтобы просмотреть подробные сведения о транзакциях, в разделе "Детализация" выберите "Успешно" или "Сбой". Затем выберите пример. Можно также перейти к подробным сведениям о сквозной транзакции, выбрав на диаграмме точку данных.
Запрос в Log Analytics
Вы можете использовать Log Analytics для просмотра результатов доступности, зависимостей и т. д. Дополнительные сведения о Log Analytics см. в обзоре запросов журнала.
Базовый пример кода
Примечание.
Этот пример предназначен исключительно для отображения механики TrackAvailability()
работы вызова API в функции Azure. В нем не показано, как написать базовый код теста HTTP или бизнес-логику, необходимую для включения этого примера в полнофункциональный тест доступности. По умолчанию, если вы изучите этот пример, вы создадите базовый тест HTTP GET доступности.
Для выполнения этих инструкций необходим выделенный план, позволяющий редактировать код в Редакторе службы приложений.
Создание функции, активируемой с помощью таймера
Создайте ресурс Функций Azure.
Если у вас уже есть ресурс приложения Аналитика:
По умолчанию Функции Azure создает ресурс приложения Аналитика. Но если вы хотите использовать созданный ранее ресурс, необходимо указать, что во время создания.
Следуйте инструкциям по созданию ресурса Функций Azure со следующим изменением.
На вкладке "Мониторинг" выберите раскрывающийся список "Приложение Аналитика", а затем введите или выберите имя ресурса.
Если у вас еще нет ресурса application Аналитика, созданного для функции таймера:
- По умолчанию при создании приложения Функции Azure он создает ресурс Аналитика приложения. Следуйте инструкциям по созданию ресурса Функций Azure.
Примечание.
Вы можете разместить свои функции в плане потребления, Премиум или службы приложений. Если вы тестируете виртуальную сеть или тестируете неопубликованные конечные точки, вам потребуется использовать план Premium вместо плана потребления. Выберите план на вкладке "Размещение ". Убедитесь, что последняя версия .NET выбрана при создании приложения-функции.
Создание функции, активируемой с помощью таймера.
- В приложении-функции перейдите на вкладку Функции.
- Выберите Добавить. На панели "Добавить функцию" выберите следующие конфигурации:
- Среда разработки. Разработка на портале
- Выбор шаблона: триггер таймера
- Нажмите кнопку "Добавить ", чтобы создать функцию триггера таймера.
Добавление и изменение кода в Редакторе службы приложений
Перейдите в развернутый приложение-функцию и в разделе "Средства разработки" выберите вкладку редактора Служба приложений.
Чтобы создать файл, щелкните правой кнопкой мыши функцию триггера таймера (например, TimerTrigger1) и выберите новый файл. Затем введите имя файла и нажмите клавишу ВВОД.
Создайте файл с именем function.proj и вставьте следующий код:
<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>
Создайте файл с именем 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/"); } }
Определите
REGION_NAME
переменную среды как допустимое расположение доступности Azure.Выполните следующую команду в Azure CLI , чтобы получить список доступных регионов.
az account list-locations -o table
Скопируйте следующий код в файл run.csx . (Вы заменяете существующий код.)
#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(); } }
Пример кода многоэтапного веб-теста
Следуйте приведенным выше инструкциям и вставьте следующий код в файл 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/");
}
}