我有一个产生AppInsights遥测的过程。我想证明一个链接到AppInsights中的查询。但是,每次都不是相同的查询--参数会发生变化。我知道我可以共享到现有查询的链接,但是如何生成到新查询的链接呢?
发布于 2022-02-17 13:58:52
在您的应用程序洞察查询编辑器中,我们有一个名为复制链接的查询选项。在此链接中,我们有以下详细信息:

此操作生成的URL格式如下:
TENANT_ID/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/resourceId/%2Fsubscriptions%2F SUBSCRIPTION_ID RESOURCEGROUP%2Fproviders%2Fmicrosoft.insights%2Fcomponents%2F 应用程序INSIGHTS_INSTANCE_NAME /source/LogsBlade.AnalyticsShareLinkToQuery/q/ 编码的基本64_KQL_QUERY /timespan/TIMESPAN
我在这里用粗体强调了URL的参数。这些参数具有以下值:
TENANT_ID:您的租户ID
SUBSCRIPTION_ID:您的Azure订阅ID,该ID包含Application实例。
RESOURCE_GROUP:您的资源组,其中部署了应用程序洞察实例。
APPINSIGHTS_INSTANCE_NAME:您的应用程序洞察实例名称。
查询文本的ENCODED_KQL_QUERY: Base64编码压缩和Base64编码
TIMESPAN:用于查询的时间筛选器(可选)。
如果查询的字符少于1600字符,还可以将上述URL中的q参数替换为查询参数,并且编码的字符串将只是您的查询纯文本转义(不进行压缩和编码)。
动态网址:很重要
执行C#查询编码的代码如下:
生成任何您想要的查询,并将其传递到下面的函数中,以获得编码的基64 URL,并且可以将其添加到应用程序洞察力的基本URL中。
static string Encodedbase64KQLQuery(string query)
{
var bytes = System.Text.Encoding.UTF8.GetBytes(query);
using (MemoryStream memoryStream = new MemoryStream())
{
using (GZipStream compressedStream = new GZipStream(memoryStream, CompressionMode.Compress, leaveOpen: true))
{
compressedStream.Write(bytes, 0, bytes.Length);
}
memoryStream.Seek(0, SeekOrigin.Begin);
Byte[] bytedata = memoryStream.ToArray();
string encodedBase64Query = Convert.ToBase64String(bytedata);
return HttpUtility.UrlEncode(encodedBase64Query);
}
}请访问这个帮了我很多忙的博客。
发布于 2022-11-19 00:45:30
感谢来自博客链接的Delliganesh和Stefano。下面是一个简单的JavaScript示例。在调用函数时,请确保替换顶部的所有4个常量值和sessionId。您也可以调整查询,但请记住上面和博客中描述的1600字符限制。
const APP_INSIGHTS_INSTANCE_NAME = "APP_INSIGHTS_INSTANCE_NAME";
const APP_INSIGHTS_RESOURCE_GROUP = "APP_INSIGHTS_RESOURCE_GROUP";
const APP_INSIGHTS_SUBSCRIPTION_ID = "APP_INSIGHTS_SUBSCRIPTION_ID";
const APP_INSIGHTS_TENANT_ID = "APP_INSIGHTS_TENANT_ID";
const getAppInsightsQueryUrl = ({ sessionId }) => {
const query = `requests | where session_Id == "${sessionId}"`;
const url = `https://portal.azure.com/#@${APP_INSIGHTS_TENANT_ID}/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/resourceId/%2Fsubscriptions%2F${APP_INSIGHTS_SUBSCRIPTION_ID}%2FresourceGroups%2F${APP_INSIGHTS_RESOURCE_GROUP}%2Fproviders%2Fmicrosoft.insights%2Fcomponents%2F${APP_INSIGHTS_INSTANCE_NAME}/source/LogsBlade.AnalyticsShareLinkToQuery/query/${encodeURI(
query
)}/timespan/TIMESPAN`;
return url;
};
getAppInsightsQueryUrl({
sessionId: 'my-session-id',
})https://stackoverflow.com/questions/71129452
复制相似问题