当使用来自 Azure Gov Cloud 的密钥用于 javascript SDK 时,应用透视 "无效的工具密钥"。

问题描述 投票:0回答:1

迁移我的网站到gov云,但我遇到的一个问题是,gov云的应用洞察力工具键似乎无法使用。 我得到的帖子回复是:{" itemsReceived":7, "its items"}。

{" itemsReceived":7," itemsAccepted":0, "errors":[{"index":0, "statusCode":400, "message": "Invalid instrumentation key"},{"index":1, "statusCode":400, "message": "Invalid instrumentation key"},{"index":2, "statusCode":400, "message": "Invalid instrumentation key"},{"index": 3, "状态码":400, "消息": "无效的仪器设备密钥"},{"索引":4, "状态码":400, "消息": "无效的仪器设备密钥"},{"索引":5, "状态码":400, "消息": "无效的仪器设备密钥"},{"索引":6, "状态码":400, "消息": "无效的仪器设备密钥"}]}。

我仍然在跟踪一些数据,从链接我的网络应用到应用洞察直接给我一些信息(如 https:/docs.microsoft.comen-usazureazure-monitorappazure-web-apps?tabs=net。 ),但javascript SDK ( https:/docs.microsoft.comen-usazureazure-monitorappjavascript。 我在应用程序中使用的)就是出错的原因。 如果我从常规的 azure 云中给它一个仪器密钥,它就能正常工作,但如果我从 gov 云中给它一个密钥,它就不能工作。

我知道密钥是正确的,我也知道我的洞察力正在运行,否则它根本不会记录任何活动。它只是看起来像 azure gov cloud 不喜欢 javascript SDK。

azure azure-application-insights azure-gov
1个回答
1
投票

Azure Gov 中的 App Insights 与 Azure General (Commercial) 中的端点不同,如评论中所述,您需要使用这些端点,而不是使用常规端点。

您可以在此处了解有关 Azure Gov 中 App Insights(以及一般的 Azure 监控)的更多信息。https:/docs.microsoft.comen-usazureazure-governmentdocumentation-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>

3
投票

正确的方法是依靠连接字符串(它照顾到非公共云dns后缀)。https:/docs.microsoft.comen-usazureazure-monitorappsdk-connection-string?tabs=js#how-to-set-a-connection-string。

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

你可以在Application Insights概览中找到它。

enter image description here

然后把它粘贴到你的代码段中。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.