Application insights что это
Перейти к содержимому

Application insights что это

  • автор:

Serverless360 vs App Insights

Discover why Serverless360 rated top for Azure distributed tracing and business process tracking.

Trusted by the world’s leading organizations

Develop with App Insights

Microsoft Application Insights consumes a rich set of telemetry logs that allows to create views of distributed tracing which helps developers to diagnose problems and understand app performance within Visual Studio IDE.

Operate with Serverless360

Serverless360 is purpose built to detect issues in Azure EAI related services which tracks end-to-end message flow and monitors exceptions including On-premises service like BizTalk Server. It is a self-service portal for IT support and business users.

Анализ поведения пользователей в приложениях с использованием Application Insights

Всем привет. В данной статье хочу познакомить вас с новым и интересным механизмом для анализа поведения пользователей в приложении. Но прежде чем мы окунемся в технические детали, давайте обрисуем проблематику.

Современный мир состоит из 99% разбалованных потребителей и 1% разработчиков, которые днем и ночью пашут на удовлетворение потребностей этих самых разбалованных потребителей. Нет, ну чего им не хватает? Видите ли, сайт загружается долго. Ну или подумаешь, отвалился на час DNS, и никто не может зайти на сайт. Или меню слишком сложное. Вот все им не нравится. А представьте: во всем интернете есть только один сайт. И этот сайт — ваш:) И никаких проблем: не нравится меню? Долго загружается? Нуу. попробуйте найти другой сайт.

В современном мире в условиях жесткой конкуренции каждый продукт выживает как может (или умирает, тоже как может: бывает быстро и без мучений, а бывает долго и продолжительно). И если подумать о том, у кого шансов выжить больше, — оказывается, у тех, кто предоставляет более качественный сервис. А что именно мы подразумеваем под понятием качественный сервис? Составляющих много. Это отказоустойчивость, скорость и непрерывность работы, удобство в использовании, причем не удобство для человека, который написал приложение, а для человека, который пользуется приложением, ну и, естественно, функционал приложения.

Для решения этих проблем каждый разработчик применяет разные тактики: специальный раздел в приложении для сбора отзывов, отправка отчетов об ошибках, тестирование новой версии на фокусных группах (кстати их формирование — это отдельная наука) и прочее.

Я же хотел рассказать о новом сервисе от Visual Studio, который позволяет снимать телеметрические данные из вашего приложения. Сервис называется Application Insights. Сервис сейчас в Preview, но в Microsoft используется уже немало времени.

Что это такое

Внимание! То, что будет написано далее может перевернуть ваше мировоззрение и привести к психическому расстройству. Я настоятельно не рекомендую читать далее эту статью людям младше 18 лет, с неустойчивой психикой, сторонников теории заговора, людей типа «Big brother watching you», «Microsoft — это империя зла» и «я храню код на флешке под паролем, шоб нэ вкралы».

Это была моя шутка, а на самом деле все так: в инструмент Visual Studio встроен механизм отправки данных о пользовательской активности. При этом объем этих данных реально огромен. За секунду, при нормальной работе в Visual Studio, может отправляться порядка телеметрических нотификаций.

Я достаточно часто читаю презентации об инструменте Visual Studio в разных компаниях, и после таких слов глаза разработчиков и особенно безопасников становятся примерно такими:

Отойдя от шока, мне сразу задают вопрос: как отключить. Ответ: никак.

Причем то, что эти данные действительно отправляются, можно увидеть в Fiddler после запуска Visual Studio:

После этого глаза становятся вот такие:

Но не стоит паниковать. Во-первых, если вы думаете, что другие крупные вендоры поступают по-иному — ошибаетесь:). Ну а во-вторых, давайте всё-таки разберемся, о каких именно телеметрических данных идет речь.
1. Отчеты об ошибках и деградации производительности;
2. Пользовательская активность в приложении.

Последний пункт хочу раскрыть детальнее: речь не идет о том, что Microsoft, используя Visual Studio, передает ваш код на свои серверы для того, чтоб это бесценное творение потом продать под видом своего приложения. Есть люди, которые на полном серьезе так и думают. Я себе это представляю: сидит миллион индусов, или китайцев и пересматривают ваш код. При этом оценивают перспективу его продать. Чесслово, даже весело 🙂

Речь идет о передаче информации о вызовах меню, нажатиях на кнопки (не клавиатуры, а внутри инструмента), запуск каких-то внутренних процессов. С помощью этой информации в привязке ко времени и IP адресу можно смоделировать ваше поведение в инструменте. На базе такой статистики, получаемой автоматом от множества пользователей, можно легко понять:
— Какой стандартный функционал используется чаще всего. Это нужно для того, чтоб обратить внимание на его развитие в последующих версиях. Возможно, вывести горячую кнопку вызова этого функционала на видное место;
— Как приживается новый функционал;
— Как много пользователь тратит времени на то, чтобы добраться до нужного его функционала

Имея эту информацию Microsoft может фокусировать свои усилия на улучшении инструмента в тех его местах, где это более важно для пользователей, а не для разработчиков инструмента Visual Studio.

Как использовать

В Visual Studio 2015 при создании, например, нового веб проекта вы можете увидеть галочку «Add application insights to project»:

В универсальных приложениях под Windows это выглядит так:

Важно иметь активированную Azure подписку. Для теста, можно взять бесплатный пробный период на 30 дней.

Но вернемся к веб проекту. Если галочку не убрали, то после создания проекта в списке подключенных библиотек вы увидите:

В случае, если у вас уже есть веб проект без Application Insights, то его можно добавить следующим образом:

Зайти на портал управления Azure и добавить новый Application Insights ресурс:

В проекте Visual Studio, используя Nuget, проинсталлировать SDK:

В проекте, в файлике ApplicationInsights.config вставить ключ в строку:
the instrumentation key you copied

Для сбора информации из браузера нужно на портале взять сгенерированный Javascript и добавить на каждую страницу в теге перед всеми остальными скриптами (или в _Layout.cshtml в проекте MVC):

Теперь можно запустить проект. Если запустились в режиме Debug, то диагностическая тула в Visual Studio 2015 покажет, какие данные отправляются на сервер:

На портале Azure, открыв ваш Application Insights ресурс, через какое-то время вы увидите графики активности ваших пользователей:

При этом графики интерактивные и можно провалится до деталей, например, более детально посмотреть на Server Response:

Или что происходит на клиентском браузере:

Так же можно отловить медленные запросы в БД:

В дополнение к этому скажу, что можно мониторить разные версии приложений, собирать IIS Performance Counters, следить за доступностью из разных точек мира и многое другое. Я уже не говорю о том, что эти данные можно загнать в сервис Azure Machine Learning и строить рекомендательную или предиктивную аналитику.

Более детально о сервисе и примеры настроек можно посмотреть в официальной документации. Также есть возможность попробовать сервис за 60 секунд. Сам инструмент Visual Studio можно скачать бесплатно.

До новых статей! Если есть вопросы, готов ответить в комментариях.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

�� Подобається Сподобалось 0

До обраного В обраному 0

Разработка следующего поколения с помощью Application Insights

За последние несколько лет сроки вывода программного обеспечения на рынок сократились кардинальным образом. Пройден путь от концепции водопада (waterfall) и гибкой разработки (agile) до современного непрерывного последовательного выпуска новых версий. Попутно нарастала потребность в более качественной и эффективной обратной связи. Самое главное — скорость реакции, или «отзывчивость» (responsiveness). Лицам, принимающим решения, требуются инструменты с интегрированными средствами анализа, и они должны мгновенно делать доступными актуальные данные своим группам.

Новый Microsoft Application Insights, объявленный при официальном выпуске Visual Studio 2013, — это набор сервисов, разработанных для ответа на ключевые вопросы, возникающие перед группами, ведущими разработки на основе современных концепций: является ли наше приложение доступным? Имеет ли оно нужные эксплуатационные качества? Предоставляем ли мы средства, необходимые нашим пользователям?

Application Insights не ограничивается только операциями. Чтобы исключить переадресацию откликов и ускорить прохождение информационного потока через группу, он интегрируется с инструментарием и процессами, уже применяемыми разработчиками: Visual Studio и Visual Studio Online. Это упрощает получение нужной информации всеми членами группы.

Application Insights рассчитан на работу с сервисами, встроенными в Microsoft .NET Framework, Java, Microsoft Azure Services, Web Sites, приложения Windows Store и приложения Windows Phone 8. Благодаря комплексному мониторингу вы получаете истинное, всестороннее представление о своем приложении, а не малые фрагменты изолированных данных.

Приступаем к работе с Application Insights

Начать работу с Application Insights очень просто. Чтобы добавить телеметрические средства Application Insights в веб-приложения и приложения Windows Phone или Windows Store, скачайте расширение Application Insights Tools for Visual Studio, которое вы найдете в Visual Studio Gallery (aka.ms/aivsix). Будущие версии Visual Studio не потребуют этого дополнительного этапа.

При создании новых проектов в Visual Studio 2013 выберите Add Application Insights to Project (рис. 1).

*

Рис. 1. Добавление Application Insights в новые проекты Visual Studio 2013

Чтобы использовать Application Insights с существующими приложениями, щелкните правой кнопкой мыши проект и выберите Add Applications Insights Telemetry to Project (рис. 2).

*

Рис. 2. Добавление Application Insights в существующий проект

После добавления Application Insights в вашем проекте появятся три новых узла для быстрого перехода к данным Availability Monitoring, Performance Monitoring и Usage Analytics в Visual Studio Online (рис. 3).

*

Рис. 3. В проекте после добавления Application Insights появляются новые узлы

Реализация мониторинга использования

Как только вы добавили Application Insights в новый или существующий проект, в вашем веб-приложении или приложении Windows Store/Windows Phone автоматически включается мониторинг использования. В случае более старых веб-приложений или приложений, создаваемых вне Visual Studio ту же функциональность можно добавить, вставив в приложение блок JavaScript-кода. Для этого щелкните Add Application (рис. 4) или перейдите в Control Panel и выберите Get configuration keys and downloads.

*

Рис. 4. Для более старых приложений выберите Add Application, чтобы добавить блок JavaScript-кода

Реализация мониторинга производительности

Несмотря на название, Performance Monitoring выдает уйму информации, а не только данные по производительности. Он уведомляет об исключениях, сообщает информацию о стеке вызовов, зависимостях, выделении памяти под объекты и даже о работе нижележащей инфраструктуры. Microsoft Monitoring Agent (MMA) также автоматически собирает журналы IntelliTrace по исключениям и медленно работающим вызовам в вашем коде. В большинстве случаев вы можете активировать мониторинг производительности простой установкой MMA, который вы найдете на aka.ms/aimma.

При установке MMA по умолчанию ведет мониторинг всех веб-приложений на вашем компьютере. Это, видимо, неплохо для компьютера разработки, но далеко не идеально для производственных серверов со множеством веб-приложений. MMA не должен вызывать падения производительности более чем на 5% при мониторинге приложения.

Чтобы включить MMA для приложений, добавленных позднее, активируйте мониторинг вручную командой Windows PowerShell:

Start-WebApplicationMonitoring -name "www.microsoft.com/games" -mode Monitor -outputchannel cloud

В будущих выпусках MMA и Visual Studio этот этап не потребуется.

Кроме того, можно активировать мониторинг производительности для приложений Java и Microsoft Azure. Самый простой способ — щелкнуть Add Application на портале Application Insights, как упоминалось в предыдущем разделе.

Реализация мониторинга доступности

Availability Monitoring работает для любого веб-приложения независимо от платформы, на которой оно выполняется. Приложение должно быть доступно только через Интернет. Вы можете проверить доступность и производительность веб-приложения из любой точки мира. Этот модуль также легко активировать.

Открыв меню Availability в Application Insights, вы получите приглашение указать URL вашего веб-приложения. Это приведет к созданию простого синтетического монитора на основе URL с единственным участком мониторинга.

Если вам нужно отслеживать более сложные транзакции, то, по-видимому, лучше написать в Visual Studio тест производительности веб-приложения. Синтетический монитор основан на той же функциональности записи, которая обычно применяется при нагрузочном тестировании веб-приложений. Это позволяет тестировать сложный набор действий. Чтобы создать многоэтапный синтетический монитор или с одним URL, щелкните зеленый значок Add new synthetic monitor и сконфигурируйте нужные параметры (рис. 5).

*

Рис. 5. Настройка параметров для нового синтетического монитора

Подготовка Application Insights к работе

За прошлый год почти сотня внутренних групп Microsoft и внешних отраслевых экспертов опробовали ранние версии Application Insights и сообщили о своих замечаниях в рамках официальной программы Technical Adoption Program. Отчасти результаты обратной связи даже удивили группу разработки, особенно сильная заинтересованность и активное участие владельцев продуктов и нетехнических членов групп.

Испытания ранних версий показали, что главная ценность Application Insights заключается в его способности ускорять цикл разработки, сводя все потоки аналитической информации в единое место в Visual Studio Online.

Замеры результатов кампаний в Web Одним из первых внешних заказчиков, изучавших Application Insights, был Wintellect — фирма, которая занимается консалтингом и обучением. Они хотели понять влияние описаний учебных курсов на их новый обучающий продукт WintellectNOW.

Используя отчет Page Views в Application Insights, разработчики в Wintellect смогли добавить к обработчику кнопки Sign Up Now примерно такую JavaScript-функцию:

function trackCourse() < window.__da.trackEvent("Course", window.location.hostname + window.location.pathname, , ); >

Это позволяет им замерять и визуализировать, какие описания курсов наиболее эффективно привлекают новых подписчиков. Подробнее о реализации пользовательских событий в Application Insights см. aka.ms/aijs.

Замеры глобального веб-трафика Wintellect участвовал в конференции TechEd 2013 Europe в Мадриде. Бизнес-персоналу понадобился простой способ определить, расширит ли присутствие компании понимание ее предложений на европейском рынке.

Компания подготовила отчеты по использованию с помощью Application Insights и сравнила результаты за неделю до TechEd и за неделю после этой конференции. Трафик из Европы вырос на 7%, а из Испании он даже удвоился. Wintellect не потребовалось специально озадачивать своих разработчиков для замеры этих результатов, благодаря чему их технические группы смогли больше времени уделять своей основной работе.

Упрощение поиска ошибок, их исправления и выпуска продукта

Application Insights используется в самой Microsoft. Сервис-инженеры, обслуживающие основной веб-сайт Microsoft и его начальную страницу, ежедневно управляют более чем 400 приложениями. Их высшим приоритетом является уменьшение времени между обнаружением проблемы и ее исправлением. Настроив информационные панели (dashboards) и оповещения с помощью Application Insights, они получают в реальном времени уведомления о провале тестов доступности и событиях, связанных с производительностью, а также индекс деградации производительности. Это помогает инженерам решать проблемы до того, как клиенты заметят что-либо неладное.

Одна из группа настроила монитор доступности с максимально допустимым временем выполнения и оповещением, которое сообщает о превышении порогового значения. После этого инженеры смогли выявлять причину сбоя непосредственно из веб-представления или загружать его в Visual Studio и просматривать там в виде Web Test Result. Отчет Synthetic Monitors указывает, что эти тесты проваливались только после развертывания. Потом, после очередного развертывания они продолжили успешно выполняться. Примерно четыре часа спустя было внесено 11 изменений в конфигурацию. Они сумели связать проблему доступности напрямую с конкретным кодом и конфигурационными изменениями. Это помогло им сразу же диагностировать корневую причину этого события.

С помощью Application Insights вы можете оптимизировать свои приложения еще до того, как они начнут генерировать оповещения. На информационной панели имеются графики Active Alerts, Exception Events, Performance Events, Memory Events, Performance и Reliability. Все они наглядно визуализируют информацию для группы инженеров, желающих улучшить свои приложения.

Выбрав любую из этих плиток, вы перейдете к данным, которые с наибольшей вероятностью связаны с определенным действием. Например, щелкнув график Performance в информационной панели Application Insights (рис. 6), вы попадете на страницу Performance (рис. 7). В этом примере видна четкая корреляция между зависимостями, веб-сервисом и показателями времени ответа.

*

Рис. 6. Информационная панель Application Insights

*

Рис. 7. Страница Performance в Application Insights

Чтобы перейти на страницу Events, щелкните плитку Memory, Exception или Performance Events. На этой странице можно фильтровать, выбирать, открывать сеанс диагностики памяти, запускать сеанс отладки IntelliTrace или просматривать набор изменений, вызвавших данное событие в Visual Studio.

Заключение

Это лишь несколько примеров того, как группы разработки используют Application Insights для более тесного взаимодействия со своими группами эксплуатации и тем самым для ускорения поставок более качественного ПО. Вы можете обращаться к Application Insights через Visual Studio Online (visualstudio.com).

В будущей статье я расскажу об интеграции нагрузочного тестирования в облаке с Application Insights. Подробнее о создании веб-тестов см. по ссылке bit.ly/1im10YI, а подробнее о мониторинге доступности с помощью Application Insights — по ссылке bit.ly/1gxgLYk.

Благодаря такому простому добавлению средств мониторинга в код, тесной интеграции с Visual Studio Online и экономии времени вы определенно захотите проверить эти сценарии и понять, чего вы сможете добиться, используя Application Insights.

Использование Visual Studio Application Insights — опыт инженера по тестированию

Выражаем большое спасибо за подготовку статьи Игорю Щегловитову, старшему инженеру по тестированию из Лаборатории Касперского, за помощь в написании данной статьи и ценный практический опыт. Остальные наши статьи по теме Azure можно найти по тегу azureweek, а также по тегу mstesting — статьи по тестированию.

Application Insights (в дальнейшем просто AI)– это механизм для сбора и анализа пользовательской телеметрии: различных счетчиков производительности, пользовательских событий (логов) и тп. На текущий момент он поддеживает не только ASP.NET приложения, но и другие, в том числе Java, IOS, JavaScript и др.

При подключении и настройки пакета AI он по умолчанию начинает собирать некоторые метрики, например для вебприложений это информация по запросам к веб серверу, а также различные серверные счетчики (например, время запроса, загрузка CPU). Помимо этого, AI имеет расширенное API, которое позволяет сохранять кастомные и бизнес-счетчики и логи.
Наша команда занимается разработкой облачных сервисов Azure. Логи сохраняются в Azure Storage, а счетчики производительности (серверные и перфоманс), читаются и анализируются в автоматическом режиме отдельным сервером мониторинга. Для логирования мы используем Serilog. В отличие от других логгеров, он (из коробки) позволяет писать структурные логи, выделяя отдельные свойства.
В настоящее время для множества популярых логгеров, таких как Serilog, log4net, Nlog существуют дополнения, которые позволяют перенаправлять логи в AI. Если вы пользуетесь данными логерами, а также имеете активную подписку Azure, то можете попробовать в бесплатном режиме возможности AI.

Ниже пример настройки Serilog для сохранения логов в AI:

Через NuGet подключаем пакет Serilog.Sinks.ApplicationInsights:

(данный пакет автоматически подключит зависимый от него Application Insights API)

Далее, при конфигурировании логера Serilog, надо указать расширение ApplicationInsights, например, вот так:

Log.Logger = new LoggerConfiguration().WriteTo.ApplicationInsights(string.Empty).CreateLogger();

В Azure портале предварительной версии создаем новый контейнер Application Insigts

После создания, на вкладке “Основное” копируем ключ инструментирования

Теперь в коде перед стартом приложения следует прописать:

TelemetryConfiguration.Active.InstrumentationKey = "";

Если же вы, например, используете логирование Nlog, то для перенапрвления логов в AI достаточно подключить пакет “Application Insights Nlog Target

После этого в конфиге приложения автоматически появится секция:

Основная проблема при использовании NLog — он позволяет писать только строки, без настраиваемых свойств. Кроме использования логеров, пользовательские события в AI можно отправлять и через API, вот пример:

 var telemetry = new TelemetryClient(); . try   var eventTelemetry = new EventTelemetry(“log”); eventTelemetry. Properties[“CustomProperty”] = “test”; telemetry.Track(eventTelemetry); catch (Exception ex)  var properties = new Dictionary  CustomProperty ", “test”>>; telemetry.TrackException(ex, properties); > 

Теперь, после запуска приложения, логи будут перенаправляться в AI.

В отличие от лог-форвадеров, явное использование AI API позволяет писать телеметрию в разные контейнеры AI. Это удобно, когда у вас крупное приложение, состоящее из множества компонент: сервисов, веб интерфейса и тп. В этом случае при отправке телеметрии в AI, в экземплярах TelemetryClient вы можете явно задавать свойство InstrumentationKey.

Например, для вашего приложения вы создали три разных контейнера: один для анализа производительности, другой для логов, третий для мониторинга пользовательской активности. Что касается последнего, для анализа пользовательской активности UI приложений в AI API предусмотрен специальный метод TrackPageView. Вы можете сохранять данные, по каким страницам (вкладкам) заходил тот или иной пользователь (напомню, что сохранять события в AI можно и непосредственно в JavaScript-коде), на основе чего можно делать какие либо выводы.

Также добавлю, что вы можете настроить экспорт телеметрии AI для дальнейшего анализа в Azure Blobs. Удобный интерфейс поиска позволит вам находить нужные пользовательские события через Azure портал. На скриншоте видно, как в отображаются свойства одного из моих сохраненных логов.

Причем каждое логируемое отдельно свойство индексируется и вы можете фильтровать логи по конкретному его значению, через меню фильтра:

Это очень удобно, т.к. позволяет отслеживать появление новых событий, например, каких-то новых исключений.

Сам интерфейс поиска логов очень простой, кроме стандартных фильтров, вы можете писать различные запросы к вашим логам (более подробно в документации).

Помимо логов, если у вас веб-приложение (например MVC Web API), то, подключив Nuget пакет Application Insights Web (без каких либо дополнительных настроек), в AI будет попадать информация по всем веб запросам.

Кроме этого, AI будет собирать зависимости, связанные с запросами. Например, при HTTP-запросе произошел вызов БД. В логах AI вы увидите данную связь, а также информацию по связанному запросу (URL, код возврата …).

Помимо этого, на вкладке “Серверы” будут доступны различные серверные счетчики производительности (CPU, Memory …). По умолчанию их не так много, но через ApplicationInsights.config вы можете добавить те счетчики, которые вам нужны.

Используя функциональность правил оповещения, вы можете создать правило, при наступлении которого на заданный e-mail будет приходить соответсвующая нотификация (например, превышено пороговое значение CPU).

В нашей команде мы разрабатываем асинхронные сервисы. Мы не использует транзакции в прямом смысле этого слова. Для обеспечения целостности данных при выполнения длительных БП, когда при вызове одного API метода состояние объектов БД меняется более чем 1 раз, мы используем очереди и Service Bus (для примера: API-метод провалидировал данные, изменил состояние объекта, отправил сообщение-команду в очередь и вернул результат вызываемой стороне; обработчик очереди поднял сообщение, выполнил какое то действие и положил новое сообщение в очередь и так далее).

Количество логов, которые создаются при одном таком БП, может достигать десятков записей. Для их связки мы используем специальный кастомный хедер conversationId. Он пробрасывается во всех командах и сообщениях при выполнении всего процесса. Данный хедер может быть задан вызывающей стороной. Он логируется как настраиваемое свойство. Таким образом указав значение conversationId в окне поиска, можно получить всю цепочку логов БП:

Кроме эксплуатации, такой подход очень полезен и при интеграционном тестировании.
Я занимаюсь разработкой интеграционных тестов для наших облачных сервисов. Автоматизированные тестовые сценарии живут в MTM, запускаются через специальный билд. Тесты в большинстве случаев клиент-серверные. По сообщению с ошибкой в информации упавшего теста далеко не всегда понятна причина падения. Часто для диагностики нужны именно серверные логи. Отдельно искать и смотреть логи по каждому тесту не удобно и занимает много времени. Здесь мне на помощь пришла такая функциональность, как кастомные диагностические адаптеры MSTest.

Если вкратце, то под диагностическим адаптером в данном контексте понимается сборка, содержащая специальный класс, который наследуется от Microsoft.VisualStudio.TestTools.Execution.DataCollector. Если тест агент настроен на использование данного диагностического адаптера, то во время выполнения теста запускаются соответсвующие событие, логика которого определена в методах OnTestCaseStart, OnTestCaseEnd. В этих методах, у вас есть доступ к контексту теста, в том числе к его названию, состоянию и тп. Вот пример реализации диагностического адаптера:

 [DataCollectorConfigurationEditor("configurationeditor://CompanyName/LogConfigEditor/4.0")] [DataCollectorTypeUri("datacollector://CompanyName/LogCollector/4.0")] [DataCollectorFriendlyName("log collector.")] public class LogCollecter : DataCollector < public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink sink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) < _stopwatch = new Stopwatch(); _dataEvents = events; // The test events _dataLogger = logger; // The error and warning log _dataSink = sink; Configuration.Init(configurationElement); events.TestCaseStart += OnTestCaseStart; events.TestCaseEnd += OnTestCaseEnd; >private void OnTestCaseStart(object sender, TestCaseEventArgs e) < _stopwatch.Start(); >private void OnTestCaseEnd(object sender, TestCaseEndEventArgs e) < Guard.CheckNotNull(e, "TestCaseFailedEventArgs is null"); var testCaseEndDate = DateTime.Now; if (_stopwatch.IsRunning) < _stopwatch.Stop(); >if (e.TestOutcome == TestOutcome.Failed) < //Здесь можно собрать логи и прикрепить их к результату теста. _dataSink.SendFileAsync(e.Context, Configuration.ZipFilePath, true); >> private Stopwatch _stopwatch; private DataCollectionEvents _dataEvents; private DataCollectionLogger _dataLogger; private DataCollectionSink _dataSink; > 

После реализации диагностического адаптера, сборку с ним надо подложить на все сервера с установленными тестовыми агентами (включая машину, на которой происходит конфигурирование настроек Lab Management), в папку %Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\DataCollectors.

Далее запустить MTM, и поставить галочку напротив адаптера.

Более подробно про диагностические адапторы, формы их конфигурации и настройки читайте здесь msdn.microsoft.com/en-us/library/dd286727.aspx.

В каждом тестовом классе, в методе TestInitialize был добавлен код инициализации conversationId, который в последствии проставлялся в хедерах при создании wcf и http клиентов. Данный сonversationId шарился с диагностическим адаптером. И при возникновении ошибки в результатах теста появлялся информации о conversationId. А зная conversationId через AI можно очень просто посмотреть все серверные события, связанные с конкретным тестом.

Application Insights — это очень мощный инструмент, который просто позволяет подключить к вашему приложению сбор различной диагностической телеметрии, а также упростить ее дальнейший визуальный анализ используя дружественный интерфейс портала. Если у вас есть подписка Azure, то вы можете использовать AI в двух режимах Free и Premium. Основное ограничения Free режима – максимальное количество пользовательских события – 5 млн в месяц, и добавляемые данные хранятся в течении 7 дней, после чего удаляются. В Premium версии данные ограничения сняты. Бесплатно можно использовать в течении 30 дней.

Разные полезные ресурсы
  • Попробовать Azure бесплатно на 30 дней!
  • Изучить курсы виртуальной академии Microsoft по облачным и другим технологиям
  • Загрузить бесплатную или пробную Visual Studio
  • Центр разработки Microsoft Azure (azurehub.ru) – сценарии, руководства, примеры, рекомендации по разработке
  • Twitter.com/windowsazure_ru — последние новости Microsoft Azure
  • Сообщество Microsoft Azure на Facebook – эксперты, вопросы
  • Стать разработчиком универсальных приложений Windows

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *