如何为新的 AppInsights 查询生成 url?
How can I generate a url to a new AppInsights query?
我有一个生成 AppInsights 遥测数据的进程。我想向 AppInsights 中的查询证明 link。但是,每次都不是相同的查询 - 参数会发生变化。我知道我可以将 link 共享给现有查询,但是如何为新查询生成这样的 link?
在您的Application Insights 查询编辑器 中,我们有一个名为复制link 到查询 的选项。在这个 link 中,我们有以下详细信息:
此操作生成的 URL 具有以下格式:
https://portal.azure.com/#@ TENANT_ID/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/resourceId/%2Fsubscriptions%2F SUBSCRIPTION_ID %2FresourceGroups%2F< RESOURCEGROUP%2Fproviders%2Fmicrosoft.insights%2Fcomponents%2F APPLICATION INSIGHTS_INSTANCE_NAME /source/LogsBlade.AnalyticsShareLinkToQuery/q/ ENCODED
BASE 64_KQL_QUERY /timespan/TIMESPAN
我在这里用粗体强调了 URL 的参数。这些参数具有以下值:
TENANT_ID: 您的租户 ID
SUBSCRIPTION_ID:包含 Application Insights 实例的 Azure 订阅 ID。
RESOURCE_GROUP: 部署 Application Insights 实例的资源组。
APPINSIGHTS_INSTANCE_NAME: 您的 Application Insights 实例名称。
ENCODED_KQL_QUERY: 查询文本的 Base64 编码压缩和 URL 编码
TIMESPAN: 查询的时间过滤器(可选)。
如果你的查询少于1600
个字符,你也可以替换上面q参数90=] 带有 query 参数,编码的字符串将只是您的查询纯文本转义(没有压缩和编码)。
动态 URL重要的是:
获取您的 KQL 查询的文本
压缩
用 Base64 编码
对 KQL 查询 进行编码的 C# 代码如下:
根据需要生成查询并将其传递到下面的函数中以获得编码的 base 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);
}
}
请访问这个blog 对我帮助很大
我有一个生成 AppInsights 遥测数据的进程。我想向 AppInsights 中的查询证明 link。但是,每次都不是相同的查询 - 参数会发生变化。我知道我可以将 link 共享给现有查询,但是如何为新查询生成这样的 link?
在您的Application Insights 查询编辑器 中,我们有一个名为复制link 到查询 的选项。在这个 link 中,我们有以下详细信息:
https://portal.azure.com/#@ TENANT_ID/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/resourceId/%2Fsubscriptions%2F SUBSCRIPTION_ID %2FresourceGroups%2F< RESOURCEGROUP%2Fproviders%2Fmicrosoft.insights%2Fcomponents%2F APPLICATION INSIGHTS_INSTANCE_NAME /source/LogsBlade.AnalyticsShareLinkToQuery/q/ ENCODED BASE 64_KQL_QUERY /timespan/TIMESPAN
我在这里用粗体强调了 URL 的参数。这些参数具有以下值:
TENANT_ID: 您的租户 ID
SUBSCRIPTION_ID:包含 Application Insights 实例的 Azure 订阅 ID。
RESOURCE_GROUP: 部署 Application Insights 实例的资源组。
APPINSIGHTS_INSTANCE_NAME: 您的 Application Insights 实例名称。
ENCODED_KQL_QUERY: 查询文本的 Base64 编码压缩和 URL 编码
TIMESPAN: 查询的时间过滤器(可选)。
如果你的查询少于1600
个字符,你也可以替换上面q参数90=] 带有 query 参数,编码的字符串将只是您的查询纯文本转义(没有压缩和编码)。
动态 URL重要的是:
获取您的 KQL 查询的文本
压缩
用 Base64 编码
对 KQL 查询 进行编码的 C# 代码如下:
根据需要生成查询并将其传递到下面的函数中以获得编码的 base 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);
}
}
请访问这个blog 对我帮助很大