#c# #.net #azure #azure-web-app-service #azure-application-insights
#c# #.net #azure #azure-web-app-service #azure-application-insights
Вопрос:
У меня есть общедоступное веб-приложение, в котором я могу настроить проверку доступности из Azure. У меня также есть частное веб-приложение, в котором проверка доступности завершается неудачей.
Я хочу отслеживать доступность моего внутреннего веб-приложения. В C # я до сих пор не нашел:
TelemetryConfiguration.Active.InstrumentationKey = "application insights key";
var telemetryClient = new TelemetryClient();
var avail = new Microsoft.ApplicationInsights.DataContracts.AvailabilityTelemetry();
telemetryClient.TrackAvailability(avail);
Однако этот код не завершен. Я не уверен, как бы я указал свой внутренний URL и где я увидел бы результаты.
Комментарии:
1. Для мониторинга внутреннего URL-адреса вам следует сначала прочитать это, могу ли я контролировать веб-сервер интрасети .
2. @IvanYang На всякий случай, включает ли эта статья также веб-приложение, которое находится в Azure, но имеет частный URL-адрес (на котором не выполняется базовый тест доступности)?
3. Насколько я знаю, нет. Но вы можете поднять проблему по этому поводу в этой статье -> раздел отзывов.
4. @IvanYang Тогда извините, что не совсем ясно выразился, мое частное веб-приложение находится в Azure, и именно там я хочу провести тест доступности.
5. можете ли вы просто использовать код, который у вас есть в частном веб-приложении, а затем проверить телеметрию на портале?
Ответ №1:
Для внутренней сети, прежде всего, вы должны убедиться, что «разрешить трафик для наших служб с помощью исключений брандмауэра или перенаправлений прокси»., подробности здесь.
Затем простой строкой кода просто определите некоторые конкретные свойства или имя для вашего внутреннего URL-адреса в AvailabilityTelemetry.
var client = new TelemetryClient();
TelemetryConfiguration.Active.InstrumentationKey = "xxxxx";
AvailabilityTelemetry a = new AvailabilityTelemetry();
a.Name = "this is your_web_site_name or other unique value";
//or some properties like below
//a.Properties.Add("p1", "my internal web");
client.TrackAvailability(a);
Затем после выполнения вы можете проверить, есть ли телеметрия доступности на портале azure -> ваша служба анализа приложений:
Комментарии:
1. Извините, к сожалению, в конце концов, это не работает с указанием URL веб-сайта для a.Name . a.Name это просто название теста… Если я помещу a.Name = «Test» через 5 минут в application insights появится надпись «Test». Должен был увидеть это раньше.
2. Всегда есть некоторая задержка для сообщений, отображаемых в application insights. Данные телеметрии сначала будут пакетно обрабатываться, а затем отправляться в application insights.
3. Нет, но я имею в виду, что на самом деле он не отслеживает URL веб-сайта, он просто будет отображаться на портале независимо от значения, которое вы даете для a.Name в вашем коде. Если вы дадите a.Name = «dgaagd», тогда он покажет 100% доступность на «dgaagd», чтобы привести пример.
4. Еще одна проблема, которую я обнаружил здесь, заключается в том, что если функциональное приложение отключено / остановлено, этот «тест доступности» не будет работать.