如何生成新 AppInsights 查询的 URL?

mar*_*ark 3 azure-application-insights

我有一个生成 AppInsights 遥测数据的流程。我想证明 AppInsights 中查询的链接。然而,并不是每次都是相同的查询——参数会改变。我知道我可以共享现有查询的链接,但如何生成新查询的链接?

小智 5

在您的Application Insights 查询编辑器中,我们有一个名为“复制链接以查询”的选项选项。在此链接中,我们有以下详细信息:\n在此输入图像描述\n此操作生成的 URL 具有以下格式:

\n
\n

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应用程序 INSIGHTS_INSTANCE_NAME /source/LogsBlade。 AnalyticsShareLinkToQuery/q/ ENCODED\nBASE 64_KQL_QUERY /timespan/TIMESPAN

\n
\n

我\xe2\x80\x99在这里用粗体强调了URL的参数。这些参数具有以下值:

\n

租户ID:您的租户 ID

\n

SUBSCRIPTION_ID:包含 Application Insights 实例的 Azure 订阅 ID。

\n

资源组:部署 Application Insights 实例的资源组。

\n

APPINSIGHTS_INSTANCE_NAME:您的 Application Insights 实例名称。

\n

ENCODED_KQL_QUERY: 查询文本的 Base64 编码、压缩和 URL 编码

\n

时间跨度:查询的时间过滤器(可选)。

\n

如果您的查询少于1600字符,您还可以将上面 URL 中的q参数替换为查询参数,编码后的字符串将只是您的查询纯文本转义(没有压缩和编码)。

\n

动态 URL\xe2\x80\x99s 很重要:

\n
    \n
  • 获取 KQL 查询的文本

    \n
  • \n
  • 压缩它

    \n
  • \n
  • 将其编码为 Base64

    \n
  • \n
\n

对KQL 查询进行编码的 C# 代码如下:

\n

生成您想要的任何查询并将其传递到以下函数以获取编码的 Base 64 URL,您可以将其添加到应用程序洞察的基本 URL 中。

\n
    static string Encodedbase64KQLQuery(string query)\n    {\n        var bytes = System.Text.Encoding.UTF8.GetBytes(query);\n        using (MemoryStream memoryStream = new MemoryStream())\n        {\n            using (GZipStream compressedStream = new GZipStream(memoryStream, CompressionMode.Compress, leaveOpen: true))\n            {\n                compressedStream.Write(bytes, 0, bytes.Length);\n            }\n        memoryStream.Seek(0, SeekOrigin.Begin);\n        Byte[] bytedata = memoryStream.ToArray();\n        string encodedBase64Query = Convert.ToBase64String(bytedata);\n        return HttpUtility.UrlEncode(encodedBase64Query);\n        }\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

请访问此博客,它对我帮助很大。

\n