0

我想使用 url 中传递的参数打开一个 Azure Monitor 工作簿。例如,要打开名为WorkBook1并传入Parameter1withValue1Parameter2with的工作簿Value2,我希望能够执行以下操作:

https://portal.azure.com/.../workbook/WorkbookTemplateName/WorkBook1?Parameter1=Value1&Parameter2=Value2

此功能似乎没有在任何地方记录,但它似乎应该存在。是否可以将 url 中的工作簿参数传递给 Azure Monitor Notebook?

4

1 回答 1

1

它没有记录,因为它确实依赖于 Azure 门户的 URL 实现,简单地说,这很复杂。(我不想在这里隐藏组织结构图,但是在 azure 门户中深度链接的工作历史是一个漫长而复杂的故事,就像任何大型软件项目一样)

话虽这么说,它很复杂,我将着眼于获得更好的公开发布的文档(可能在我们的GitHub Docs中最快,最终到达我们的 Azure Docs),我会在这里尽可能简单.. .

最简单的启动方式是打开你想要的东西,然后使用工具栏中的“分享”项打开可以生成启动链接的工具(“分享刀片”)。该生成的链接应该包含您需要的所有内容,除了下面的NotebookParams参数。

它应该如下所示:

https://portal.azure.com/#blade/[name of extension]/[Name of view]/[inputName]/[inputValue]

扩展名总是,如果您希望项目可编辑,或者如果您希望项目不可编辑,AppInsightsExtension则视图是。(这些是历史名称,因为它们在创建时被命名,所以它就是这样。我们正在努力清理很多这些东西)UsageNotebookBladeWorkbookViewerBlade

/inputname/input value部分针对视图的每个输入重复,其中输入值是百分比编码的。您可能会看到设置的参数,但可能还有更多:

  • ComponentId/[a url encoded resource/other id](组件 ID 就像工作簿所在的“文件夹”,它可能位于“Azure Monitor”内,也可能位于特定虚拟机内,并且此值可能是完整的天蓝色资源 ID 等)

  • ConfigurationId/[a url encoded workbook resource id, or community template id]

    配置 ID 也可以是模板 ID,例如“Community-[id]”,而不是特定工作簿的资源 ID。如果保存了工作簿,您将看到一个完整的 azure 资源 ID,例如 /subscriptions/blah/resourcegroups/blah/providers/microsoft.insights/workbooks/id,它也需要进行编码,因此您最终会得到类似%2Fsubscriptions%2Fblah%2Fresourcegroups%2Fblah%2Fresourceprovider.resource%2Ftype%2Fid

  • 您特别要求为工作簿设置一些特定参数的输入称为NotebookParams

    NotebookParams/[encoded params] 其中,url 中的编码参数是键/值参数的 JSON 序列化字典的百分比编码字符串。(对于时间范围参数,它是一个带有durationMs字段的对象,如果设置了自定义时间范围,则可能更多,您可以在设置参数后查看工作簿高级模式 JSON 以查看您需要的确切内容)。在此示例中,我将名为“timeRange”的时间范围参数设置为 5 分钟,并将名为“paramB”的文本参数设置为“香蕉”</p>

    {​​​​​​​“时间范围”:{​​​​​​“durationMs”:300000}​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​</p>

    其中得到百分比编码(包括空格=%20而不是空格= +)到:

%7B%22timeRange%22%3A%20%7B%20%22durationMs%22%3A%20300000%20%7D%2C%20%22paramB%22%3A%20%22banana%22%20%7D%0D%0A

参数名称必须与要连接的内容中的名称完全匹配,并且它们还需要位于工作簿的“顶层”。(这通常不适用于嵌套在其他组中的参数)

完整的 url 看起来像:

https://portal.azure.com/#blade/AppInsightsExtension/UsageNotebookBlade/ComponentId/%2Fsubscriptions%2Fblah%2Fresourcegroups%2Fblah%2Fresourceprovider.resource%2Ftype%2Fnameofresource/ConfigurationId/%2Fsubscriptions%2Fblah%2Fresourcegroups%2Fblah%2Fproviders%2Fmicrosoft.insights%2Fworkbooks%0000000000-0000-0000-0000-000000000000/NotebookParams/%7B%22timeRange%22%3A%20%7B%20%22durationMs%22%3A%20300000%20%7D%2C%20%22paramB%22%3A%20%22banana%22%20%7D%0D%0A

但是:请,请,不要浏览器中设置“自动刷新”脚本以从头开始反复重新加载工作簿。请改用工具栏中的自动刷新功能。工作簿内的自动刷新按计划重新运行查询,这比加载整个门户、它的所有依赖项、我们的扩展、我们所有的依赖项等要轻得多。

如果自动刷新对您不起作用,请在 Azure 门户中的工作簿中填写反馈,或者将首字母 j,姓氏 gardner @ microsoft 发送给我,并附上您的方案详细信息。

于 2021-10-05T23:24:10.007 回答