Application Insights «недопустимый ключ инструментария» при использовании ключа из Azure Gov Cloud для пакета SDK javascript

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

{"itemsReceived": 7, "itemsAccepted": 0, "errors": [{"index": 0, "statusCode": 400, "message": "Недопустимый ключ инструментария"}, {"index": 1, " statusCode ": 400," message ":" Неверный ключ инструментария "}, {" index ": 2," statusCode ": 400," message ":" Неверный ключ инструментария "}, {" index ": 3," statusCode " : 400, "message": "Недопустимый ключ инструментария"}, {"index": 4, "statusCode": 400, "message": "Недопустимый ключ инструментария"}, {"index": 5, "statusCode": 400 , "message": "Неверный ключ инструментария"}, {"index": 6, "statusCode": 400, "message": "Неверный ключ инструментария"}]}

Я все еще отслеживаю НЕКОТОРЫЕ данные, поскольку привязка моего веб-приложения к анализу приложений напрямую дает мне некоторую информацию (например, https://docs.microsoft.com/en-us/azure/azure-monitor/app/azure-web-apps?tabs=net), но javascript SDK (https://docs.microsoft.com/en-us/azure/azure-monitor/app/javascript), который я использую в своем приложении, - это то, что вызывает ошибку. Он отлично работает, если я дам ему инструментальный ключ из обычного лазурного облака, но если я дам ему ключ из облака gov, он не будет работать.

Я знаю, что ключ правильный, и я знаю, что мои идеи работают, иначе они вообще не будут регистрировать никаких действий. просто кажется, что azure gov cloud не нравится javascript SDK.


person Phil    schedule 22.05.2020    source источник
comment
Мне интересно, правильно ли вы настроили конечную точку для App Insights в регионе правительства США.   -  person Gaurav Mantri    schedule 22.05.2020
comment
да, я раньше не замечал endpointSuffix в конфигурации приложения. знаете ли вы, как использовать этот суффикс для настройки npm в github.com/microsoft/ApplicationInsights-JS < / а>?   -  person Phil    schedule 22.05.2020
comment
Или раздел Javascript.   -  person Gaurav Mantri    schedule 22.05.2020
comment
благодарю вас! Я буду работать над этим, но я думаю, что это похоже на проблему.   -  person Phil    schedule 22.05.2020
comment
Сообщите мне, если это решит вашу проблему. Тогда я отправлю свои комментарии в качестве ответа.   -  person Gaurav Mantri    schedule 22.05.2020
comment
да, это полностью устранило проблему, спасибо. свойство 'connectionstring' в docs.microsoft.com/en-us/azure/azure-monitor/app/ был последней частью, в которой я нуждался.   -  person Phil    schedule 22.05.2020


Ответы (2)


App Insights в Azure Gov имеет конечную точку, отличную от конечной точки Azure General (Commercial), и, как упоминалось в комментариях, вам нужно будет использовать эти конечные точки вместо обычных конечных точек.

Вы можете узнать больше о App Insights (и Azure Monitoring в целом) в Azure Gov здесь: https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-services-monitoringandmanagement

По той же ссылке:

Настройка приложения NodeJS для таргетинга на App Insights в регионе Azure Gov:

var appInsights = require("applicationinsights");
appInsights.setup('INSTRUMENTATION_KEY');
appInsights.defaultClient.config.endpointUrl = "https://dc.applicationinsights.us/v2/track"; // ingestion
appInsights.defaultClient.config.profileQueryEndpoint = "https://dc.applicationinsights.us/api/profiles/{0}/appId"; // appid/profile lookup
appInsights.defaultClient.config.quickPulseHost = "https://quickpulse.applicationinsights.us/QuickPulseService.svc"; //live metrics
appInsights.Configuration.start();

Настройка приложения JavaScript для таргетинга на App Insights в регионе Azure Gov:

<script type="text/javascript">
   var sdkInstance="appInsightsSDK";window[sdkInstance]="appInsights";var aiName=window[sdkInstance],aisdk=window[aiName]||function(e){
      function n(e){t[e]=function(){var n=arguments;t.queue.push(function(){t[e].apply(t,n)})}}var t={config:e};t.initialize=!0;var i=document,a=window;setTimeout(function(){var n=i.createElement("script");n.src=e.url||"https://az416426.vo.msecnd.net/next/ai.2.min.js",i.getElementsByTagName("script")[0].parentNode.appendChild(n)});try{t.cookie=i.cookie}catch(e){}t.queue=[],t.version=2;for(var r=["Event","PageView","Exception","Trace","DependencyData","Metric","PageViewPerformance"];r.length;)n("track"+r.pop());n("startTrackPage"),n("stopTrackPage");var s="Track"+r[0];if(n("start"+s),n("stop"+s),n("setAuthenticatedUserContext"),n("clearAuthenticatedUserContext"),n("flush"),!(!0===e.disableExceptionTracking||e.extensionConfig&&e.extensionConfig.ApplicationInsightsAnalytics&&!0===e.extensionConfig.ApplicationInsightsAnalytics.disableExceptionTracking)){n("_"+(r="onerror"));var o=a[r];a[r]=function(e,n,i,a,s){var c=o&&o(e,n,i,a,s);return!0!==c&&t["_"+r]({message:e,url:n,lineNumber:i,columnNumber:a,error:s}),c},e.autoExceptionInstrumented=!0}return t
   }({
      instrumentationKey:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
      endpointUrl: "https://dc.applicationinsights.us/v2/track"
   });

   window[aiName]=aisdk,aisdk.queue&&0===aisdk.queue.length&&aisdk.trackPageView({});
</script>
person Gaurav Mantri    schedule 23.05.2020
comment
Лучше полагаться на строку подключения (которая включает суффикс dns для облака), а не указывать все URL-адреса вручную. Последний подход подвержен ошибкам, поскольку Application Insights может вводить больше общедоступных конечных точек (для новых функций), которые не будут работать без синхронизации этого списка. - person ZakiMa; 23.05.2020

Правильный способ - полагаться на строку подключения (она заботится о суффиксах DNS, не являющихся общедоступными облаками): https://docs.microsoft.com/en-us/azure/azure-monitor/app/sdk-строкаподключения?tabs=js#какустановитьстрокуподключения

Его поддержка доступна в Javascript v2.3.0.

Вы можете найти его в обзоре Application Insights:

введите здесь описание изображения

А затем вставьте его в свой фрагмент:

{
  connectionString:"InstrumentationKey=00000000-0000-0000-0000-000000000000;"
}

(использование ручного переопределения всех общедоступных конечных точек подвержено ошибкам, поскольку Application Insights может вводить новые функции, требующие новых общедоступных конечных точек, которые не будут работать)

person ZakiMa    schedule 23.05.2020
comment
да. Строка подключения в этом случае будет иметь суффикс applicationinsights.us. Все AI SDK соберут на его основе все необходимые общедоступные конечные точки. - person ZakiMa; 23.05.2020
comment
Для непубличного облака строка подключения выглядит так (суффикс конечной точки зависит от облака): InstrumentationKey = 00000000-0000-0000-0000-000000000000; EndpointSuffix = ai.contoso.com; - person ZakiMa; 23.05.2020