За последние несколько лет сроки вывода программного обеспечения на рынок сократились кардинальным образом. Пройден путь от концепции водопада (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,
{"CourseID": "Test401"},
{"RatingValue": 400});
}
Это позволяет им замерять и визуализировать, какие описания курсов наиболее эффективно привлекают новых подписчиков. Подробнее о реализации пользовательских событий в 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.