Как узнать зависимости программы

Содержание

Зависимость — это компонент, вызываемый приложением. Как правило, это служба, вызываемая с использованием HTTP, база данных или файловая система. Компонент Application Insights измеряет длительность вызова зависимостей, определяет успешность их выполнения и получает определенные сведения, например имя зависимости. Вы можете анализировать отдельные вызовы зависимостей и сопоставлять их с запросами и исключениями.

Автоматически отслеживаемые зависимости

Пакеты SDK Application Insights для .NET и .NET Core входят в состав DependencyTrackingTelemetryModule — модуля телеметрии, автоматически собирающего данные о зависимостях. Сбор этих данных автоматически активируется для приложений ASP.NET и ASP.NET Core, когда он настроен в соответствии с официальной документацией, приведенной по ссылке. Модуль DependencyTrackingTelemetryModule поставляется в NuGet-пакете Microsoft.ApplicationInsights.DependencyCollector. Он автоматически доставляется при использовании NuGet-пакетов Microsoft.ApplicationInsights.Web или Microsoft.ApplicationInsights.AspNetCore .

20 лет зависимости от еды. Программа подсознания I Как избавиться от пищевой аддикции

Сейчас DependencyTrackingTelemetryModule автоматически отслеживает следующие зависимости:

Зависимости Сведения
HTTP/HTTPS Локальные или удаленные вызовы HTTP/HTTPS.
Вызовы WCF Отслеживается автоматически только при использовании привязок на основе HTTP.
SQL Вызовы, выполненные с помощью SqlClient . Сбор данных об SQL-запросах описан в разделе Расширенное отслеживание SQL для получения полного SQL-запроса.
Хранилище BLOB-объектов, Хранилище таблиц или Хранилище очередей Azure Вызовы, совершаемые из клиента службы хранилища Azure.
Пакет SDK для клиента Центров событий Azure Используйте последнюю версию пакета: https://nuget.org/packages/Azure.Messaging.EventHubs.
Пакет SDK клиента Служебной шины Azure Используйте последнюю версию пакета: https://nuget.org/packages/Azure.Messaging.ServiceBus.
Azure Cosmos DB Отслеживается автоматически, если используется ПРОТОКОЛ HTTP/HTTPS. Протокол TCP также будет записываться автоматически с помощью пакета >предварительной версии = 3.33.0-preview.

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

Настройка автоматического отслеживания зависимостей в консольных приложениях

Для автоматического отслеживания зависимостей из консольных приложений .NET установите пакет NuGet Microsoft.ApplicationInsights.DependencyCollector и инициализируйте DependencyTrackingTelemetryModule :

DependencyTrackingTelemetryModule depModule = new DependencyTrackingTelemetryModule(); depModule.Initialize(TelemetryConfiguration.Active);

Для консольных приложений .NET Core TelemetryConfiguration.Active не рекомендуется использовать. См. руководство в документации по службе Worker Service и документации по мониторингу ASP.NET Core.

Хочешь ВЫЙТИ ИЗ СИСТЕМЫ ? 12 простых ШАГОВ чтобы выйти из МАТРИЦЫ изменить МИР и улучшить СВОЮ ЖИЗНЬ

Как выполняется автоматическое отслеживание зависимостей?

Зависимости автоматически собираются одним из следующих способов:

  • инструментирование байт-кода вокруг выбранных методов Используйте InstrumentationEngine из StatusMonitor или расширение веб-приложений в Службе приложений Azure.
  • Обратные вызовы EventSource .
  • Обратные вызовы DiagnosticSource в последних версиях пакетов SDK для .NET или .NET Core.
Читайте также:
Конкурсная программа жить без улыбки просто ошибка

Отслеживание зависимостей вручную

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

  • Azure Cosmos DB отслеживается автоматически только в том случае, если используется HTTP/HTTPS. Режим TCP не будет отслеживаться с помощью Application Insights.
  • Redis

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

Пример

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

Чтобы эти данные отображались в диаграммах зависимостей Application Insights, отправляйте их с использованием TrackDependency :

var startTime = DateTime.UtcNow; var timer = System.Diagnostics.Stopwatch.StartNew(); try < // making dependency call success = dependency.Call(); >finally

Помимо этого, TelemetryClient предоставляет методы расширения StartOperation и StopOperation , которые можно использовать для отслеживания зависимостей вручную, как показано в разделе Отслеживание исходящих зависимостей.

Если необходимо отключить стандартный модуль отслеживания зависимостей, удалите ссылку на DependencyTrackingTelemetryModule в файле ApplicationInsights.config для приложений ASP.NET. Для приложений ASP.NET Core следуйте инструкциям по Application Insights для приложений ASP.NET Core.

Отслеживание вызовов AJAX с веб-страниц

На веб-страницах пакет SDK JavaScript для Application Insights автоматически собирает вызовы AJAX в виде зависимостей.

Расширенное отслеживание SQL для получения полного SQL-запроса

Функции Azure требуют отдельных параметров для включения сбора текста SQL. Дополнительные сведения см. в разделе Включение сбора запросов SQL.

Для вызовов SQL всегда определяется имя сервера и базы данных, и они сохраняются как имя собираемых данных DependencyTelemetry . Другое поле с именем data может содержать весь текст SQL-запроса.

Для приложений ASP.NET Core теперь требуется предоставить явное согласие на сбор текста SQL:

services.ConfigureTelemetryModule((module, o) => < module. EnableSqlCommandTextInstrumentation = true; >);

Для приложений ASP.NET полный текст SQL-запроса собирается с помощью инструментирования байтового кода, для которого требуется использовать подсистему инструментирования или пакет NuGet Microsoft.Data.SqlClient, а не библиотеку System.Data.SqlClient. Действия, необходимые для включения сбора полного текста SQL-запросов на конкретных платформах, приведены в следующей таблице.

Платформа Действия для получения полного SQL-запроса
Веб-приложения в Службе приложений Azure В панели управления веб-приложения откройте область Application Insights и включите команды SQL для .NET.
Сервер IIS (Виртуальные машины Azure, локальная среда и т. д.) Используйте пакет NuGet Microsoft.Data.SqlClient или модуль PowerShell агента Application Insights, чтобы установить модуль инструментирования и перезапустить IIS.
Oблачныe службы Azure Добавьте задачу запуска для установки StatusMonitor.
Во время сборки приложение должно быть подключено к пакету SDK для Application Insights. Для этого требуется установить пакеты NuGet для приложений ASP.NET или ASP.NET Core.
IIS Express Используйте пакет NuGet Microsoft.Data.SqlClient.
Веб-задания в службе приложений Azure Используйте пакет NuGet Microsoft.Data.SqlClient.

В дополнение к описанным выше действиям для разных платформ необходимо явно согласиться на сбора команд SQL, внеся в файл applicationInsights.config следующий код:

Читайте также:
Как зайти в программы на Макбуке

true

В приведенных выше случаях, чтобы надлежащим образом проверить установку подсистемы инструментирования, убедитесь, что собираемые данные DependencyTelemetry относятся к пакету SDK версии rddp . Использование rdddsd или rddf показывает, что данные зависимостей собираются обратным вызовом DiagnosticSource или EventSource , поэтому полный текст SQL-запроса не собирается.

Где найти данные зависимостей

  • Схема приложения наглядно представляет зависимости между приложением и смежными компонентами.
  • Диагностика транзакций отображает унифицированные коррелированные данные сервера.
  • Вкладка «Браузеры» содержит вызовы AJAX из браузеров ваших пользователей.
  • Выберите медленные или неудачно завершенные запросы, чтобы проверить их вызовы зависимостей.
  • Аналитику можно использовать для запроса данных зависимостей.

Диагностика медленных запросов

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

Трассировка от запросов до зависимостей

Выберите слева раздел Производительность, а затем вкладку Зависимости вверху экрана.

Выберите Имя зависимости ниже пункта Общая работоспособность. После выбора зависимости справа появится граф распределения длительностей для нее.

Снимок экрана с открытой вкладкой

Нажмите кнопку Примеры в правом нижнем углу. Затем выберите пример, чтобы просмотреть полные сведения о транзакции.

Снимок экрана с выбором примера для просмотра полных сведений о транзакции.

Выполните профилирование активного сайта

Профилировщик Application Insights отслеживает вызовы HTTP к активному сайту и показывает, какие функции в коде выполнялись дольше всего.

Неудачные запросы

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

Выберите слева раздел Сбои, а затем вкладку Зависимости вверху экрана.

Снимок экрана с выбором диаграммы неудачных запросов.

Здесь вы увидите количество зависимостей со сбоем. Чтобы получить дополнительные сведения о возникшем сбое, выберите имя зависимости в таблице снизу. Нажмите на кнопку Зависимости в правом нижнем углу, чтобы просмотреть полные сведения о транзакции.

Журналы (Analytics)

Вы можете отслеживать зависимости, используя язык запросов Kusto. Рассмотрим некоторые примеры.

    Поиск неудачно завершенных вызовов зависимостей:

dependencies | where success != «True» | take 10
dependencies | where client_Type == «Browser» | take 10
dependencies | where timestamp > ago(1d) and client_Type != «Browser» | join (requests | where timestamp > ago(1d)) on operation_Id
dependencies | where timestamp > ago(1d) and client_Type == «Browser» | join (browserTimings | where timestamp > ago(1d)) on operation_Id

Часто задаваемые вопросы

В этом разделы приводятся ответы на часто задаваемые вопросы.

Каким образом автоматический сборщик данных о зависимостях сообщает о сбое вызовов зависимости?

Для сбоев вызова зависимости поле success будет иметь значение False (Ложь). Модуль DependencyTrackingTelemetryModule не сообщает данные ExceptionTelemetry . Полная модель данных для зависимостей описана в разделе Модель данных телеметрии Application Insights.

Как вычислить задержку приема для данных телеметрии зависимости?

Используйте следующий код:

dependencies | extend E2EIngestionLatency = ingestion_time() — timestamp | extend TimeIngested = ingestion_time()

Как определить время инициирования вызова зависимости?

В представлении запросов Log Analytics значение timestamp соответствует моменту, когда был инициирован вызов TrackDependency(), что происходит сразу после получения отклика на вызов зависимости. Чтобы вычислить время начала вызова зависимости, необходимо из timestamp вычесть записанное значение duration вызова зависимости.

Читайте также:
Как составить программу линейной структуры

Включает ли отслеживание зависимостей в Application Insights ведения журнала тела ответов?

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

Пакет SDK с открытым исходным кодом

Как и все пакеты SDK для Application Insights, модуль сбора данных зависимостей тоже предоставляется с открытым кодом. Просмотреть код, поучаствовать в его разработке или сообщить о проблемах можно в официальном репозитории на GitHub.

Автоматический сбор зависимостей

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

.NET

Платформы приложений Версии
Веб-формы ASP.NET 4.5+
ASP.NET MVC 3 4+
ASP.NET WebAPI 4.5+
ASP.NET Core 1.1+
Библиотеки обмена данными
HttpClient 4.5+, .NET Core 1.1+
SqlClient .NET Core 1.0+, NuGet 4.3.0
Microsoft.Data.SqlClient 1.1.0 — последняя стабильная версия. (см. примечание ниже.)
Клиентский пакет SDK Центров событий 1.1.0
Пакет SDK для клиента служебной шины 3.0.0
Клиенты хранилища
ADO.NET 4.5+

Существует известная проблема со старыми версиями Microsoft.Data.SqlClient. Мы рекомендуем использовать 1.1.0 или более позднюю версию, чтобы решить эту проблему. Entity Framework Core необязательно поставляется с последней стабильной версией Microsoft.Data.SqlClient, поэтому мы рекомендуем подтвердить, что вы используете как минимум 1.1.0, чтобы избежать этой проблемы.

Java

Node.js

JavaScript

Библиотеки обмена данными Версии
XMLHttpRequest Все

Дальнейшие действия

  • Исключения
  • Данные пользователей и страниц
  • Доступность
  • Настройка отслеживания зависимостей для Java.
  • Настройте пользовательское отслеживание зависимостей для OpenCensus Python.
  • Создание телеметрии настраиваемых зависимостей
  • В этой статье представлены типы данных и модель данных для Application Insights.
  • Ознакомление с платформами, поддерживаемыми Application Insights.

Источник: learn.microsoft.com

Как узнать зависимости программы

Вообщем случайно не туда тыцкнув. обнаружил. что просмотрщик тотал-командера показывает все зависимости любого экзешника!!
Что в ряде случаев весьма полезно.

А можно ту же самую информацию получить иным способом? Быть может какая-либо утилитка есть?

Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
если windows то можно при помощи утилиты марка руссиновича procexp, вроде, или PE Tools
Единственное, что ограничивает полет мысли программиста-компилятор
Регистрация: 29.09.2009

Сообщений: 9,742
. добавлю еще see_dll из комплекта visual studio

Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer Software developer of industrial automation

Форумчанин
Регистрация: 08.10.2008
Сообщений: 667
0_o Куда тыкнул? Мне тоже пригодиться.
Don’t worry be happy
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
Sparky

если windows то можно при помощи утилиты марка руссиновича procexp, вроде, или PE Tools

В procexp — я чего-то этого не вижу. Второе по описаниям нечто монструозное.

Stilet
Izhic
Ну дык F3.

Источник: www.programmersforum.ru

Проверка зависимостей пакета в Ubuntu и Debian

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru