迁移我的网站到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 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>
正确的方法是依靠连接字符串(它照顾到非公共云dns后缀)。https:/docs.microsoft.comen-usazureazure-monitorappsdk-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可以引入新的功能,需要新的公共端点,而这些新的公共端点将无法使用)