1

将我的网站迁移到 gov 云,但我遇到的问题之一是来自 gov 云的应用程序洞察工具密钥似乎不起作用。我得到的回复是:

{"itemsReceived":7,"itemsAccepted":0,"errors":[{"index":0,"statusCode":400,"message":"Invalid Instrumentation key"},{"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 )是错误的。如果我从常规的 azure 云中给它一个仪器密钥,它工作正常,但如果我从 gov 云中给它一个,那么它将无法工作。

我知道密钥是正确的,并且我知道我的见解正在运行,否则它根本不会记录任何活动。好像 azure gov cloud 不喜欢 javascript SDK。

4

2 回答 2

3

正确的方法是依赖连接字符串(它处理非公共云 dns 后缀):https ://docs.microsoft.com/en-us/azure/azure-monitor/app/sdk-connection-string?tabs =js#how-to-set-a-connection-string

它的支持在 Javascript v2.3.0 中可用。

您可以在 Application Insights 概述中找到它:

在此处输入图像描述

然后将其粘贴到您的代码段中:

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

(依靠手动覆盖所有公共端点很容易出错,因为 Application Insights 可以引入需要新公共端点的新功能,而这些新功能将不起作用)

于 2020-05-23T07:32:11.973 回答
1

Azure Gov 中的 App Insights 具有与 Azure 通用(商业)不同的端点,如评论中所述,您将需要使用这些端点而不是使用常规端点。

您可以在此处了解有关 Azure Gov 中的 App Insights(以及一般的 Azure 监控)的更多信息:https ://docs.microsoft.com/en-us/azure/azure-government/documentation-government-services-monitoringandmanagement

从同一个链接:

将 NodeJS 应用程序配置为在 Azure Gov 区域中定位 App Insights:

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 应用程序配置为面向 Azure Gov 区域中的 App Insights:

<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>
于 2020-05-23T00:42:23.523 回答