如何将 url 中的工作簿参数传递给 Azure Monitor 工作簿?

How to pass workbook parameters in the url to an Azure Monitor Workbook?

我想使用 url 中传递的参数打开 Azure Monitor 工作簿。例如,要打开名为 WorkBook1 的工作簿并使用 Value1 传入 Parameter1 并使用 Value2 传入 Parameter2,我希望能够执行类似这个:

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

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

它没有记录在案,因为它确实 取决于 Azure 门户的 URL 实现,简而言之,这很复杂。 (我不想在这里隐藏组织结构图,但是 link 在 Azure 门户中工作的深度是一个漫长而复杂的故事,就像任何大型软件项目一样)

话虽这么说,但它很复杂,我会寻找更好的公开发布的文档(可能是我们 GitHub Docs 中最快的,最终会到达我们的 Azure Docs),我会这里尽可能简单...

最简单的启动就是打开你想要的东西,然后用工具栏的“分享”项打开可以生成启动的工具link(“份额 blade”)。生成的 link 应该有你需要的一切 除了 下面的 NotebookParams 参数。

它应该如下所示:

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

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

/inputname/input value 部分对视图的每个输入重复,并且输入值是百分比编码的。您将可能看到设置的参数,尽管可能还有更多:

  • ComponentId/[a url encoded resource/other id](组件 id 就像工作簿所在的“文件夹”,它可能在“Azure Monitor”中,也可能在特定虚拟机中,这个值可能是一个完整的 Azure 资源 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 序列化字典的 key/value 参数的百分比编码字符串。 (对于时间范围参数,它是一个 object 和 durationMs 字段,如果设置了自定义时间范围,则可能更多,您可以在设置参数后查看工作簿高级模式 JSON 以查看确切的你需要的东西)。在此示例中,我将名为“timeRange”的时间范围参数设置为 5 分钟,将名为“paramB”的文本参数设置为“banana”

    { “timeRange”:{ “durationMs”:300000} ,“paramB”:“香蕉”}

    哪个百分比编码(包括空格=%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

但是:拜托,拜托,不要做这个来建立一个浏览器中的“自动刷新”脚本,用于从头开始重复加载工作簿。请改用工具栏中的自动刷新功能。工作簿中的自动刷新 re-runs 按计划进行的查询,这比加载整个门户、其所有依赖项、我们的扩展、我们所有的依赖项等轻得多

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