Developer analytics tools visual studio что это
Testing your client apps and diagnosing issues in your server apps just got easier, with Visual Studio 2015 Update 2. Today at Build 2016 , we announced several new capabilities of the Developer Analytics Tools (formerly Application Insights tools) – the facility that helps you detect and diagnose issues in your live applications.
Now you can distribute your device apps (Windows 10 UWP or Windows Forms) to your beta test users right from Visual Studio. This is the first capability of HockeyApp that we’re integrating into Visual Studio.
Beta distribution to a chosen subset of customers or testers can provide valuable information about your app before a broad release. You can use this information to address issues with your app before it becomes a big deal (low ratings, poor feedback, etc.). HockeyApp is our service for managing beta distribution and collecting feedback, usage and crash data.
The menu item takes you to HockeyApp, where you sign in (or sign up if you haven’t been there yet), and then fill out some details of how you’d like your app distributed:
When the upload is complete, you will see a HockeyApp toast with confirmation and a link to the app in the HockeyApp portal.
In HockeyApp, you manage your teams of test users, distribute different versions of your app, get feedback with screenshots, and automated usage and crash reports.
More details on app management is available at the Hockey App Knowledge Base.
Give it a try and let us know what you think.
Now let’s turn to how we’re improving diagnostics at the server side. Application Insights provides great tools for diagnosing issues, monitoring usage and tuning performance in your server app when it’s up and running. All that works by collecting telemetry from the running app and analyzing it in the Application Insights portal.
But of course you can also use Application Insights while you’re debugging your app on your dev machine. You can use the powerful diagnostic facilities to help fix problems before release.
From Visual Studio Update 2, you don’t have to involve the portal in that experience. A big advantage is that the telemetry from your debugging activities won’t get mixed up with the telemetry from the live version – or from the debugging runs of your team mates across the room. And if you’re writing custom telemetry, you can debug it in the privacy of your own dev environment.
Jump from exception stack trace to code
In Visual Studio, select the exception in the Application Insights search window and scroll to the stack trace. Provided you have the right project loaded, methods in your solution show up as hyperlinks. Click through to the code. Easy.
Search telemetry of local debug sessions
In Visual Studio, there’s an Application Insights search window that’s very similar to the diagnostic search blade in the portal. (It’s been there since Update 1, in case you missed it.)
From Update 2, you can use it either to look at the diagnostic telemetry on the portal, or use it to look at directly the telemetry generated by your debug run – even after it has ended. Pick the options in the Search window’s Settings:
The local view is the default if you’ve added the Application Insights SDK to your app, but haven’t yet configured it to send to the portal. (You get this option when you add Application Insights to your app. It means that you haven’t put an instrumentation key in your ApplicationInsights.config file.)
Search for related telemetry
Notice that there’s a back button in the toolbar to return to the previous query.
Find telemetry property values in code
You can use the ‘Find in code’ button in telemetry details to search the matching string in the current open solution. You can imagine using it to find the name of your custom event (e.g. ‘Game Over’) in the solution. The results will show up in Visual Studio "Find Results" list.
Simplified configuration experience for collection of traces from log4net, NLog and System.Diagnostics
Most of your web apps probably already collect traces using logging frameworks like NLog, log4net or System.Diagnostics. If you want to continue using these frameworks, but want to leverage Application Insights for its rich querying and analysis capabilities, then we have a solution for you. Just follow the new streamlined experience to configure collection of your traces and get your data to Application Insights. Either:
- Right-click on the Project Node->Application Insights->Configure Application Insights. Make sure the option for adding the right logging adapter in the configuration window is checked.
- Or when you build the solution after adding a logging framework, notice the pop-up that appears on the top right of your screen. Click the hyperlink to enable trace collection.
Developer Analytics is a developer’s tool. (The clue’s in the name.) Its purpose is to help you continuously improve your application, by understanding how it performs – primarily when it’s in live production, but also in the debugging and beta testing phases.
The updates we’ve released today are another step in that direction. We’ve made it one-click easy to deliver updates to your test users. And we’ve improved the diagnostic experience while you’re developing the next version of your app.
This post is focused on the various Application Insights and HockeyApp integrations we have enabled in Visual Studio. Don’t forget to check out the broader announcements from Application Insights and HockeyApp at Build.
We love to get feedback about how we are doing. Please submit questions and issues to Forums, bugs to Connect, and suggestions to User Voice.
Testing your client apps and diagnosing issues in your server apps just got easier, with Visual Studio 2015 Update 2. Today at Build 2016 , we announced several new capabilities of the Developer Analytics Tools (formerly Application Insights tools) – the facility that helps you detect and diagnose issues in your live applications.
Now you can distribute your device apps (Windows 10 UWP or Windows Forms) to your beta test users right from Visual Studio. This is the first capability of HockeyApp that we’re integrating into Visual Studio.
Beta distribution to a chosen subset of customers or testers can provide valuable information about your app before a broad release. You can use this information to address issues with your app before it becomes a big deal (low ratings, poor feedback, etc.). HockeyApp is our service for managing beta distribution and collecting feedback, usage and crash data.
The menu item takes you to HockeyApp, where you sign in (or sign up if you haven’t been there yet), and then fill out some details of how you’d like your app distributed:
When the upload is complete, you will see a HockeyApp toast with confirmation and a link to the app in the HockeyApp portal.
In HockeyApp, you manage your teams of test users, distribute different versions of your app, get feedback with screenshots, and automated usage and crash reports.
More details on app management is available at the Hockey App Knowledge Base.
Give it a try and let us know what you think.
Now let’s turn to how we’re improving diagnostics at the server side. Application Insights provides great tools for diagnosing issues, monitoring usage and tuning performance in your server app when it’s up and running. All that works by collecting telemetry from the running app and analyzing it in the Application Insights portal.
But of course you can also use Application Insights while you’re debugging your app on your dev machine. You can use the powerful diagnostic facilities to help fix problems before release.
From Visual Studio Update 2, you don’t have to involve the portal in that experience. A big advantage is that the telemetry from your debugging activities won’t get mixed up with the telemetry from the live version – or from the debugging runs of your team mates across the room. And if you’re writing custom telemetry, you can debug it in the privacy of your own dev environment.
Jump from exception stack trace to code
In Visual Studio, select the exception in the Application Insights search window and scroll to the stack trace. Provided you have the right project loaded, methods in your solution show up as hyperlinks. Click through to the code. Easy.
Search telemetry of local debug sessions
In Visual Studio, there’s an Application Insights search window that’s very similar to the diagnostic search blade in the portal. (It’s been there since Update 1, in case you missed it.)
From Update 2, you can use it either to look at the diagnostic telemetry on the portal, or use it to look at directly the telemetry generated by your debug run – even after it has ended. Pick the options in the Search window’s Settings:
The local view is the default if you’ve added the Application Insights SDK to your app, but haven’t yet configured it to send to the portal. (You get this option when you add Application Insights to your app. It means that you haven’t put an instrumentation key in your ApplicationInsights.config file.)
Search for related telemetry
Notice that there’s a back button in the toolbar to return to the previous query.
Find telemetry property values in code
You can use the ‘Find in code’ button in telemetry details to search the matching string in the current open solution. You can imagine using it to find the name of your custom event (e.g. ‘Game Over’) in the solution. The results will show up in Visual Studio "Find Results" list.
Simplified configuration experience for collection of traces from log4net, NLog and System.Diagnostics
Most of your web apps probably already collect traces using logging frameworks like NLog, log4net or System.Diagnostics. If you want to continue using these frameworks, but want to leverage Application Insights for its rich querying and analysis capabilities, then we have a solution for you. Just follow the new streamlined experience to configure collection of your traces and get your data to Application Insights. Either:
- Right-click on the Project Node->Application Insights->Configure Application Insights. Make sure the option for adding the right logging adapter in the configuration window is checked.
- Or when you build the solution after adding a logging framework, notice the pop-up that appears on the top right of your screen. Click the hyperlink to enable trace collection.
Developer Analytics is a developer’s tool. (The clue’s in the name.) Its purpose is to help you continuously improve your application, by understanding how it performs – primarily when it’s in live production, but also in the debugging and beta testing phases.
The updates we’ve released today are another step in that direction. We’ve made it one-click easy to deliver updates to your test users. And we’ve improved the diagnostic experience while you’re developing the next version of your app.
This post is focused on the various Application Insights and HockeyApp integrations we have enabled in Visual Studio. Don’t forget to check out the broader announcements from Application Insights and HockeyApp at Build.
We love to get feedback about how we are doing. Please submit questions and issues to Forums, bugs to Connect, and suggestions to User Voice.
Выражаем большое спасибо за подготовку статьи Игорю Щегловитову, старшему инженеру по тестированию из Лаборатории Касперского, за помощь в написании данной статьи и ценный практический опыт. Остальные наши статьи по теме Azure можно найти по тегу azureweek, а также по тегу mstesting — статьи по тестированию.
При подключении и настройки пакета 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, например, вот так:
В Azure портале предварительной версии создаем новый контейнер Application Insigts
После создания, на вкладке “Основное” копируем ключ инструментирования
Теперь в коде перед стартом приложения следует прописать:
Если же вы, например, используете логирование Nlog, то для перенапрвления логов в AI достаточно подключить пакет “Application Insights Nlog Target”
После этого в конфиге приложения автоматически появится секция:
Основная проблема при использовании NLog — он позволяет писать только строки, без настраиваемых свойств. Кроме использования логеров, пользовательские события в AI можно отправлять и через API, вот пример:
Теперь, после запуска приложения, логи будут перенаправляться в 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 будет попадать информация по всем веб запросам.
Помимо этого, на вкладке “Серверы” будут доступны различные серверные счетчики производительности (CPU, Memory …). По умолчанию их не так много, но через ApplicationInsights.config вы можете добавить те счетчики, которые вам нужны.
Используя функциональность правил оповещения, вы можете создать правило, при наступлении которого на заданный e-mail будет приходить соответсвующая нотификация (например, превышено пороговое значение CPU).
Если вкратце, то под диагностическим адаптером в данном контексте понимается сборка, содержащая специальный класс, который наследуется от Microsoft.VisualStudio.TestTools.Execution.DataCollector. Если тест агент настроен на использование данного диагностического адаптера, то во время выполнения теста запускаются соответсвующие событие, логика которого определена в методах OnTestCaseStart, OnTestCaseEnd. В этих методах, у вас есть доступ к контексту теста, в том числе к его названию, состоянию и тп. Вот пример реализации диагностического адаптера:
После реализации диагностического адаптера, сборку с ним надо подложить на все сервера с установленными тестовыми агентами (включая машину, на которой происходит конфигурирование настроек Lab Management), в папку %Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\DataCollectors.
Далее запустить MTM, и поставить галочку напротив адаптера.
- PerfTip
- Режим Edit & Continue для x64-систем
- Lambda Expression Evaluation в Watch and Immediate Window
- Diagnostic Tools Window
- Live Visual Tree и Live Property Explorer
- Diagnostic Tools Hub
PerfTip
Debugging tips — это маленькие подсказки, всплывающие в ходе отладочной сессии и отображающие значения переменных. Они уже давно присутствуют в VS и, думаю, все с ними знакомы. Теперь вместо них PerfTip выполняет ту же цель: облегчает отладку и повышает её продуктивность. В отличие от Debugging tips, в PerfTip при перемещении по коду отображается информация о тайминге. Раньше нам приходилось собирать тайминги построчно, вставляя код для проведения измерений, вроде класса System.Diagnostics.Stopwatch . Но теперь необходимость в этом отпала: PerfTip умеет измерять время, прошедшее между двумя остановками отладчика. Причём не имеет значения, используете ли вы Step Into, Step Over или Run to Cursor для измерения лишь одной инструкции или целого блока кода. Тайминги отображаются как в PerfTip, так и в виде списка в Diagnostic Tools Window).
PerfTip показывает, что на выполнение метода BuildOpenMenu () ушло 1,357 секунды.
Режим Edit & Continue для x64-систем
Функциональность “edit and continue” появился в VS несколько лет назад, но раньше он мог использоваться только для отладки 32-битных процессов. В этом режиме вы можете модифицировать код, не выходя из отладочной сессии. При этом он перекомпилируется в фоне и сразу готов к использованию. Преимущества очевидны: вы можете построчно выполнять код, анализировать результат, модифицировать, перемещать курсор оператора перехода на позицию перед модифицируемой строкой и вновь её выполнять. И вам даже не понадобится перезапускать отладчик.
Вычисление лямбда-выражений в Watch and Immediate Window
VS 2015 теперь поддерживает вычисление лямбда-выражений в отладочных окнах. Это бывает удобно, например, при анализе коллекций. Допустим, у вас есть список людей на 50 000 записей, и вам нужно найти человека с фамилией Meyer. Раньше это можно было сделать лишь одним способом: добавив коллекцию в окно просмотра (watch window), развернув её и пролистав весь список вручную. Не слишком увлекательный и эффективный процесс, особенно, если список велик. Теперь же вы можете найти нужную запись с помощью простого LINQ-выражения:
Diagnostic Tools Window
В ходе отладки в этом окне можно применять инструменты для профилирования. Чтобы его открыть, выберите пункт Show Diagnostic Tools в меню Debug. По умолчанию в нём будут отображены графики загрузки процессора и памяти. Жёлтые маркеры обозначают работу сборщика мусора. В предыдущих версиях VC все эти данные можно было получить только во время сессии профилирования. Теперь же, вместо многократной процедуры записи и анализа, вы можете наблюдать за поведением системы в реальном времени в процессе отладки. Вы сразу обнаружите всплески в использовании ресурсов, в том числе при сборе мусора, и сможете сопоставить их с отлаживаемым фрагментом кода или действием, выполняемым в интерфейсе.
Другим важным нововведением стал список всех PerfTip. Каждый раз, когда отладчик останавливается и выводит PerfTip, он добавляет новое измерение список в Diagnostic Tools Window. Благодаря этому списку вы можете наблюдать за замерами времени и быстро переходить к соответствующим строкам.
Окно диагностики позволяет не только оценить загрузку процессора и памяти, но и записать одним кликом слепок управляемой памяти. При этом система автоматически подсчитает и отобразит количество объектов в куче, а также их общий размер в байтах. На эти значения можно кликнуть и посмотреть подробный список всех объектов, присутствующих в памяти. Всё это позволяет быстро обнаружить причины каких-либо проблем с памятью, например, утечек. Обратите внимание, что данный инструмент полностью интегрирован в отладчик и не требует его перезапуска.
Live Visual Tree и Live Property Explorer
Это два инструмента, разработанные специально для WPF-приложений (Windows Presentation Foundation) и универсальных приложений. С их помощью можно анализировать запущенную программу, отобразив её в качестве «визуального дерева» (visual tree). Визуальное дерево — это внутреннее представление пользовательского интерфейса, содержащее все видимые элементы приложения. Получается очень похоже на инструменты для веб-разработчиков, запускаемые в браузерах командой «исследовать элемент». Визуальное дерево позволяет одним кликом выбрать элемент пользовательского интерфейса, просмотреть и изменить как сам элемент, так и его свойства. Все изменения сразу будут применены в запущенном приложении. А раньше это можно было сделать только с помощью сторонних приложений, например, Snoop или WPF Inspector.
На иллюстрации ниже представлен пример визуального дерева WPF-приложения. Слева представлена программа Family.Show, её референсная WPF-реализация создана компанией Vertigo и доступна для скачивания на Codeplex. На иллюстрации выделена фотография принца Чарльза, и её свойства отображены справа в Live Visual Tree. Дерево начинается с класса MainWindow и развёрнуто вплоть до выбранного объекта. А в колонке справа отображается количество дочерних объектов для каждого визуального элемента.
Если кликнуть правой кнопкой на объекте внутри дерева, то появится контекстное меню. В нём есть полезные пункты Go to source и Show Properties. Первый открывает файл XAML, содержащий определение элемента. А второй пункт запускает Live Property Explorer.
Здесь представлены свойства элемента и их значения. При этом Live Property Explorer позволяет группировать свойства по происхождению их значений. Из иллюстрации видно, что значения бывают по умолчанию, вычисленные, унаследованные и локальные. Также они могут быть получены из файла определения стилей XAML. Все значения можно изменять прямо в Live Property Explorer и сразу наблюдать, какой эффект это оказывает на работающее приложение.
Diagnostic Tools Hub
Этот инструмент появился в Visual Studio 2013. Запустить его можно через Debug -> Start Diagnostic Tools without Debugging, он является точкой запуска для всех инструментов, имеющих отношение к производительности и диагностике. Diagnostic Tools Hub представляет собой набор многочисленных маленьких инструментов, каждый из которых измеряет, записывает, вычисляет и отображает в окне Visual Studio только какой-то один параметр. Все инструменты используют единую структуру визуализации данных в виде временной шкалы с подробностями по каждой записи. Шкала представляет собой гистограмму основного измерения, на которой могут отображаться пользовательские маркеры для особых событий или значений. Можно просматривать данные более подробно, при этом форма отображения будет разной для всех инструментов. Так что при желании можно более детально изучить параметры любого измерения и вывести общую информацию в виде круговой диаграммы. Поскольку формат вывода у всех инструментов общий, то в течение одной сессии можно одновременно запускать несколько инструментов, просматривая результаты их измерений в компактном виде. Например, можно скомбинировать индикатор активности пользовательского интерфейса и уровень загрузки процессора. Раньше эти инструменты были заточены, в основном, под приложения для Windows Store. Благодаря своей простоте и унифицированному дизайну набор инструментов очень часто обновляется, и в VS 2015 многие из них поддерживают и другие технологии, например Windows Presentation Foundation.
Старый профилировщик в Visual Studio, умевший измерять загрузку процессора и памяти, не вписывался в концепцию маленьких диагностических инструментов со стандартным форматом вывода данных. Поэтому ради обратной совместимости его интегрировали в Diagnostic Tools Hub. Создатели VS планируют постепенно распределить функциональность профилировщика по нескольким отдельным инструментам, доступным из хаба.
Итак, какой же набор инструментов представлен в Diagnostic Tools Hub в Visual Studio 2015:
- Application Timeline: позволяет мониторить активность UI-потока приложений, основанных на XAML
- CPU Usage: использование процессора ()
- GPU Usage: отображает выполняемые графической картой инструкции для DirectX-приложений
- Memory Usage: отображает потребление памяти для обнаружения утечек
- Performance Wizard: старый профилировщик Visual Studio
- Energy Consumption: отображает расчётное потребление энергии для мобильных устройств
- HTML UI Responsiveness: позволяет мониторить активность UI-потока приложений, основанных на HTML
- JavaScript Memory: анализирует использование памяти в HTML-приложениях
- Network: профилирует сетевой трафик
Далее приведён пример подробной детализации той же сессии. События разбиты по категориям и отображены в виде полосок, длина которых соответствует продолжительности каждого события. Это позволяет очень легко оценить, сколько времени у вас занял парсинг, вывод макета, чтение и запись с диска или сборка мусора. Некоторые события можно развернуть в виде дерева для ещё более подробного изучения.
Заключение
В Visual Studio 2015 есть много замечательных возможностей по отладке, диагностике и профилированию, которые могут помочь поднять производительность разработчика. Все упомянутые инструменты есть в каждой редакции VS, вплоть до бесплатной Visual Studio Community Edition. Здесь вы найдёте для себя всё необходимое. При этом впервые в истории VS профилирование можно осуществлять прямо во время отладки. В Visual Studio 2015 профилирование приложений объединено с процессом удобной отладки, ежедневно применяемой разработчиками.
В настоящей статье я буду приводить информацию и ссылки на дополнения, доступные для скачивания и использования в среде Visual Studio 2015.
Установка дополнительных компонент, как правило, доступно из самой Visual Studio 2015 и выполняется через главное меню Сервис:
Для установки необходимо либо перейти к разделу в "Сети" и выбрать подраздел "Галерея Visual Studio", либо можно перейти по ссылке непосредственно на сайт разработчика и скачать установочный файл в формате *.vsix.
Далее буду приводить дополнения в порядке моего личного использования. Некоторые компоненты предустанавливаются в версию Visual Studio 2015 Enterprise при первой установке, для Visual Studio Community все компоненты нужно устанавливать руками.
Специальный модуль для проверки орфографии вводимого кода, комментариев.
Developer Analytics Tools
Доступен по ссылке или по ссылке.
Позволяет оптимизировать картинки, причём целыми папками, а не по одному файлу. Очень удобно.
Productivity Power Tools 2015 Быстрый поиск, улучшения в навигации по коду, дополнения к Solution Navigator, новый интерфейс навигации по файлам, новое меню опций аддонов, упрощенный поиск референсных сборок, создание проектов с определенным шаблоном в одну команду с помощью, автоматическая расстановка скобок, подсветка текущей строки редактирования, исправление неверной табуляции, линейки колонок, дополнения к подсветке синтаксиса – вот неполный перечень того на что способно это дополнение. Вертикальные полосы для выделения участков кода (наприме if else)
Читайте также: