创建或编辑 Azure 工作簿

本文介绍如何创建新工作簿以及如何将元素添加到 Azure 工作簿。

新建 Azure 工作簿

新建 Azure 工作簿:

  1. 在“Azure 工作簿”页中,选择空模板或在顶部工具栏中选择“新建”。
  2. 将任何这些原始组合添加到工作簿:

添加文本

工作簿允许作者在其工作簿中包含文本块。 文本可以是数据的人工分析结果、帮助用户解释数据的信息、节标题等等。

向工作簿添加文本的屏幕截图。

文本是通过 markdown 控件添加的,作者可以向其中添加内容。 作者可以使用 markdown 的完整格式设置功能。 其中包括不同的标题和字体样式、超链接、表格等。Markdown 允许作者创建丰富的 Word 或门户式报表或分析叙述。 文本可以包含 markdown 文本中的参数值,当参数更改时,会更新这些参数引用。

编辑模式显示以编辑模式向工作簿添加文本的屏幕截图。

预览模式显示以预览模式向工作簿添加文本的屏幕截图。

向 Azure 工作簿添加文本:

  1. 确保通过选择工具栏中的“编辑”来进入“编辑”模式。 通过执行以下任一步骤添加查询:

    • 选择“添加”,然后在现有元素下方或工作簿底部选择“添加文本”。
    • 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加文本”。
  2. 在编辑器字段中输入 markdown 文本。

  3. 使用“文本样式”选项可在纯 markdown 与使用 Azure 门户的标准 info/warning/success/error 样式包装的 markdown 之间切换

    小提示

    使用此 Markdown 速查表查看不同的格式设置选项。

  4. 使用“预览”选项卡可查看内容的外观。 预览时内容会显示在一个可滚动区域内以限制大小,但运行时显示时,Markdown内容会自动扩展以填满所需的空间,并且没有滚动条。

  5. 选择“完成编辑”。

文本样式

有以下文本样式可用:

样式 DESCRIPTION
平原 未应用任何格式
info 门户的“信息”样式,具有 或类似的图标和蓝色背景
错误 门户的“error”样式,具有 或类似图标,红色背景
success 门户的“success”样式,具有 或类似图标,绿色背景
upsell 门户的“upsell”样式,具有 🚀 或类似图标,紫色背景
警告 门户的“warning”样式,具有 或类似图标,蓝色背景

还可选择文本参数作为样式源。 参数值必须是上述文本值之一。 缺少值或任何无法识别的值被视为 plain 样式。

文本样式示例

信息样式示例预览模式下向工作簿添加文本的屏幕截图,其中显示了信息样式。

Warning 样式示例warning 样式中文本可视化的屏幕截图。

添加查询

Azure 工作簿支持查询任何支持的工作簿数据源

例如,可以查询 Azure 资源运行状况,以帮助查看影响资源的任何服务问题。 还可以查询 Azure Monitor 指标,这些指标是定期收集的数字数据。 Azure Monitor 指标提供特定时间系统某个方面的相关信息。

向 Azure 工作簿添加查询:

  1. 确保通过选择工具栏中的“编辑”来进入“编辑”模式。 通过执行以下任一步骤添加查询:

    • 在现有元素下方或工作簿底部选择“添加”,然后选择“添加查询”。
    • 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加查询”。
  2. 选择用于查询的数据源。 其他字段是根据所选源确定的。

  3. 根据所选的数据源选择所需的任何其他值。

    注释

    选择 资源类型时,请考虑用户权限。 例如,如果对资源具有 读取 权限,但对 Log Analytics 工作区没有读取权限,则资源要向其发送遥测数据,则必须选择 资源类型的 资源才能查看数据。

  4. 为工作簿选择可视化效果

  5. 在查询部分输入查询,或通过选择“示例”从示例查询列表中选择,然后根据喜好编辑查询。

  6. 选择“运行查询”。

  7. 确定在工作簿中有所需查询时,选择“完成编辑”。

查询日志的最佳做法

  • 使用尽可能小的时间范围。 时间范围越长,查询越慢,返回的数据越多。 对于较长的时间范围,查询可能必须转到较慢的“冷”存储,这使得查询速度变得更慢。 默认采用最短的有效时间范围,但用户可以选择更长的时间范围(速度可能较慢)。

  • 在下拉列表中使用“全部”这个特殊值。 可以在下拉列表参数设置中添加“All”特殊项。 可以使用特殊值。 正确使用“All”特殊项可以极大地简化查询。

  • 防止缺失列。 如果使用的是自定义表或自定义列,请设计模板,以便可以在工作区中缺少该列时起作用。 请参阅 column_ifexists 函数。

  • 防止缺失表。 如果您的模板是作为解决方案的一部分安装的,或者在其他情况下表的存在已得到保证,则无需检查缺少的列。 如果要创建在所有资源或工作区上可见的泛型模板,最好保护不存在的表。

    Log Analytics 查询语言没有 table_ifexists 函数,例如用于测试列的函数。 但是,可通过一些方法来检查表是否存在。 例如,可以使用模糊联合。 执行联合时,可以使用 isfuzzy=true 设置让联合继续工作(如果某些表不存在)。 可以在工作簿中添加一个参数查询,用于检查表是否存在,如果不存在,则隐藏某些内容。 不可见的项不会运行,因此您可以设计模板,以确保工作簿中的其他查询在验证表是否存在的测试完成之前不会运行。

    例如:

    let MissingTable = view () { print isMissing=1 };
    union isfuzzy=true MissingTable, (AzureDiagnostics | getschema | summarize c=count() | project isMissing=iff(c > 0, 0, 1))
    | top 1 by isMissing asc
    

    如果工作区中不存在 AzureDiagnostics 表,此查询将返回 1。 如果实际表不存在,则返回 MissingTable 的假行。 如果 AzureDiagnostics 表的架构中存在任何列,则返回 0。 可以将此参数用作参数值,并有条件地隐藏查询步骤,除非参数值为 0。 还可使用条件可见性显示文本来指出当前工作区没有缺失的表,并将用户转到介绍如何载入的文档。

    你可能只是希望结果没有行,而不是隐藏步骤。 可以将 MissingTable 更改为有适当匹配架构的空数据表

    let MissingTable = datatable(ResourceId: string) [];
    union isfuzzy=true MissingTable, (AzureDiagnostics
    | extend ResourceId = column_ifexists('ResourceId', '')
    

    在这种情况下,如果 AzureDiagnostics 表缺失,或者表中缺少 ResourceId 列,查询将不返回任何行。

教程 - 工作簿中以资源为中心的日志查询

动态资源类型参数

使用动态范围进行更高效的查询。 下面的代码片段使用这种启发式方法:

  1. 单个资源:如果所选资源的计数小于或等于 5
  2. 资源组:如果资源数超过 5 但资源所属的资源组数小于或等于 3
  3. 订阅:除上述以外的情况
Resources
| take 1
| project x = dynamic(["microsoft.compute/virtualmachines", "microsoft.compute/virtualmachinescalesets", "microsoft.resources/resourcegroups", "microsoft.resources/subscriptions"])
| mvexpand x to typeof(string)
| extend jkey = 1
| join kind = inner (Resources
| where id in~ ({VirtualMachines})
| summarize Subs = dcount(subscriptionId), resourceGroups = dcount(resourceGroup), resourceCount = count()
| extend jkey = 1) on jkey
| project x, label = 'x',
      selected = case(
        x in ('microsoft.compute/virtualmachinescalesets', 'microsoft.compute/virtualmachines') and resourceCount <= 5, true,
        x == 'microsoft.resources/resourcegroups' and resourceGroups <= 3 and resourceCount > 5, true,
        x == 'microsoft.resources/subscriptions' and resourceGroups > 3 and resourceCount > 5, true,
        false)

用于查询多个资源类型的静态资源范围

[
    { "value":"microsoft.compute/virtualmachines", "label":"Virtual machine", "selected":true },
    { "value":"microsoft.compute/virtualmachinescaleset", "label":"Virtual machine scale set", "selected":true }
]

按资源类型分组的资源参数

Resources
| where type =~ 'microsoft.compute/virtualmachines' or type =~ 'microsoft.compute/virtualmachinescalesets'
| where resourceGroup in~({ResourceGroups})
| project value = id, label = id, selected = false,
      group = iff(type =~ 'microsoft.compute/virtualmachines', 'Virtual machines', 'Virtual machine scale sets')

添加参数

可以使用参数从消费者那里收集输入,并在工作簿的其他部分引用该输入。 用参数限定结果集的范围或设置正确的可视化。 参数可帮助生成交互式报表和体验。 有关如何使用参数的详细信息,请参阅工作簿参数

使用工作簿可以控制如何向使用者呈现参数控件 - 文本框与下拉列表、单选与多选、文本中的值、JSON、KQL 或 Azure Resource Graph 等。

将参数添加到 Azure 工作簿:

  1. 确保您在工具栏中选择编辑后处于编辑模式。 通过执行以下任一步骤添加参数:

    • 在现有元素下方或工作簿底部选择“添加”,然后选择“添加参数”。
    • 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加参数”。
  2. 在弹出的“新建参数”窗格中,输入以下字段的值:

    • 参数名称:参数名称不能包含空格或特殊字符
    • 显示名称:显示名称可以包括空格、特殊字符、表情符号等
    • 参数类型:
    • 必需:
  3. 选择完成编辑

    显示创建时间范围参数的屏幕截图。

添加指标图表

大多数 Azure 资源会发出有关状态和运行状况的指标数据,例如 CPU 利用率、存储可用性、数据库事务计数、失败的应用请求等。使用工作簿,可以将指标数据可视化为时序图表。

以下示例显示了过去一小时内存储帐户中的交易数量。 这使存储所有者可以查看事务趋势并查找行为中的异常。

显示工作簿中存储事务的指标分区图的屏幕截图。

向 Azure 工作簿添加指标图表:

  1. 通过在工具栏中选择编辑,确保您处于编辑模式。 通过执行以下步骤之一来添加指标图表:

    • 在现有元素下方或工作簿底部,选择“添加”和“添加指标”这两个选项。
    • 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加指标”。
  2. 选择资源类型、目标资源、指标命名空间和名称,以及要使用的聚合。

  3. 根据需要设置其他参数,例如时间范围、拆分方式、可视化效果、尺寸和调色板。

  4. 选择“完成编辑”。

这是编辑模式下的指标图表:

显示编辑模式下存储事务的指标面积图的屏幕截图。

指标图表参数

参数 说明 示例:
资源类型 目标资源类型 “存储”或“虚拟机”。
资源 可以从中获取指标值的资源集合 MyStorage1
Namespace 包含该指标的命名空间 存储 > Blob
指标 要可视化的指标 存储 > Blob > 事务
集合体 要应用到指标的聚合函数 求和、计数、平均值 等
时间范围 用于查看指标的时间范围 最近一小时、最近24小时,等等
可视化 要使用的可视化方法 面积图、条形图、折线图、散点图、网格
拆分依据 (可选)按维度拆分指标 按地理类型列出事务
大小 控件的垂直大小 小、中或大
调色板 要在图表中使用的调色板。 使用 Split by 参数时将被忽略 蓝色、绿色、红色,等等

指标图表示例

按 API 名称拆分的事务折线图显示按 API 名称拆分的存储事务的指标折线图的屏幕截图。

响应类型分割的事务大条形图屏幕截图显示了按响应类型拆分的存储事务的大型指标条形图。

作为散点图的平均延迟显示存储延迟指标散点图的屏幕截图。

可以使用链接创建指向其他视图、工作簿、工作簿中的其他项的链接,或者在工作簿中创建选项卡视图。 链接样式可以为超链接、按钮和选项卡。 向工作簿添加链接的屏幕截图。

可以将样式应用于链接元素本身,也可以应用于单个链接。

链接元素样式

样式 示例 注释
项目符号列表 项目符号样式工作簿链接的屏幕截图。 默认情况下,链接以项目符号列表的形式显示,每行一个。 “链接前的文本”和“链接后的文本”字段可用于在链接项之前或之后添加更多文本。
列表 列表样式工作簿链接的屏幕截图。 链接以列表形式显示,无项目符号。
段落 段落样式工作簿链接的屏幕截图。 链接显示为一个段落中的链接,像一个文本段落一样排列。
导航 导航样式工作簿链接的屏幕截图。 链接显示为链接,每个链接之间都有垂直分隔线或管道(|)。
标签页 标签页样式工作簿链接的屏幕截图。 链接显示为选项卡。 每个链接都显示为选项卡,没有适用于单个链接的链接样式选项。 有关如何配置选项卡,请参阅下面的选项卡部分。
工具栏 工具栏样式工作簿链接的屏幕截图。 链接将显示带有图标和文本的 Azure 门户样式的工具栏。 每个链接都显示为工具栏按钮。 有关如何配置工具栏,请参阅下面的工具栏部分。

链接样式

样式 DESCRIPTION
链接 默认情况下,链接显示为超链接。 URL 链接只能是链接样式。
按钮(主) 该链接在门户中显示为“主要”按钮,通常是蓝色
按钮(辅助) 该链接在门户中显示为“次要”按钮,通常是“透明”颜色、浅色主题中的白色按钮和深色主题中的深灰色按钮。

使用按钮时,如果在“按钮文本”、“工具提示文本”或“值”字段中使用了所需参数,但所需参数未设置,则会禁用该按钮。 例如,当在另一个参数或控件中未选择任何值时,可以使用此功能禁用按钮。

链接可以使用链接操作中所有可用的链接操作,并且还有两个可用操作:

行动 DESCRIPTION
设置参数值 选择链接、按钮或选项卡时,可以将参数设置为值。选项卡通常配置为将参数设置为一个值,会根据该值隐藏和显示工作簿的其他部分。
滚动到某个步骤 选择链接时,工作簿将移动焦点并滚动以显示另一个步骤。 此操作可用于创建“目录”或“返回顶部”样式体验。

选项卡

大多数情况下,选项卡链接与“设置参数值”操作结合使用。 以下示例显示了配置为创建 2 个选项卡的链接步骤,其中选择任一选项卡会将 selectedTab 参数设置为其他值(该示例显示正在编辑的第三个选项卡以显示参数名称和参数值占位符): 在工作簿中创建选项卡的屏幕截图。

然后,可以使用高级设置在工作簿中添加有条件可见的工作簿中的其他项,如果 selectedTab 参数值为“1”: 工作簿中有条件可见的选项卡的屏幕截图。

默认选择第一个选项卡,初始将 selectedTab 设置为 1,并使该步骤可见。 选择第二个选项卡会将参数的值更改为“2”,并显示不同的内容: 所选选项卡为 2 时显示内容的工作簿的屏幕截图。

附带链接的示例 Azure 工作簿中提供了附带上述选项卡的示例工作簿。

标签页限制

  • 选项卡中不支持 URL 链接。 选项卡中的 URL 链接显示为禁用的选项卡。
  • 制表符中不支持项目样式。 项显示为选项卡,并且仅显示选项卡名称(链接文本)字段。 在编辑模式下,将隐藏选项卡样式中未使用的字段。
  • 默认选择第一个选项卡,这将调用该选项卡指定的任何操作。 如果第一个选项卡的操作会打开另一个视图,则一旦创建选项卡,就会显示一个视图。
  • 可使用选项卡打开其他视图,但应谨慎使用此功能,因为大多数用户不希望通过选择选项卡来进行导航。如果其他选项卡将参数设置为特定值,则打开视图的选项卡不会更改该值,因此工作簿内容的其余部分将继续显示上一选项卡的视图或数据。

工具栏

使用工具栏样式使链接显示为工具栏样式。 在工具栏样式中,作者必须填写以下内容:

  • 按钮文本,即显示在工具栏上的文本。 可以在此字段中使用参数。
  • 图标,即显示在工具栏中的图标。
  • 工具提示文本,即显示在工具栏按钮的工具提示文本中的文本。 可以在此字段中使用参数。

在工作簿中创建工具栏样式的链接的屏幕截图。

如果在按钮文本、工具提示文本或值字段中使用任何必需参数,并且未设置所需的参数,则禁用工具栏按钮。 例如,当在另一个参数/控件中未选择任何值时,这可以用来禁用工具栏按钮。

附带链接的示例 Azure 工作簿中提供了含工具栏、全局参数和 ARM 操作的示例工作簿。

添加组

使用工作簿中的组项,可对工作簿中的一组步骤进行逻辑分组。

工作簿中的组能够在多个方面起作用:

  • 布局:如果你想要对项进行纵向组织,可为全部堆积在一起的项创建一个组,并将该组的样式设置为百分比宽度,而不是设置各个项的百分比宽度。
  • 可见性:如果你想要将多个项一起隐藏或显示,可以设置整个项组的可见性,而不是设置每个项的可见性设置。 这对于使用选项卡的模板非常有用,因为可以使用组作为选项卡的内容,并可以根据所选选项卡设置的参数来隐藏/显示整个组。
  • 性能:如果你有一个很大的模板,其中包含许多部分或选项卡,则可以将每个部分转换为其自身的子模板,并使用组来加载顶级模板中的所有子模板。 在用户将这些组设为可见之前,子模板的内容不会加载或运行。 详细了解如何将一个大模板拆分为许多模板

若要将组添加到工作簿,请执行以下操作:

  1. 通过在工具栏中选择编辑,确保您处于编辑模式。 通过执行以下任一步骤添加参数:

    • 选择添加,然后在现有元素下方或工作簿底部选择添加组
    • 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加组”。

    显示一个屏幕截图,说明如何将一个组添加到工作簿中。

  2. 为组选择项。

  3. 选择“完成编辑”。

    下面是处于读取模式的组,其中包含两个项:文本项和查询项。

    显示工作簿中处于阅读模式的组的屏幕截图。

    在编辑模式下,可以看到这两个项实际上位于组项中。 在下面的屏幕截图中,组处于编辑模式。 组在虚线区域内包含两项。 每个项都可以处于编辑或读取模式且彼此独立。 例如,查询步骤处于读取模式,而文本步骤处于编辑模式。

    工作簿中处于编辑模式的组的屏幕截图。

确定组的范围

组被视为工作簿中的新范围。 在组中创建的所有参数仅在该组中可见。 这同样适用于合并,你只能查看组内部或父级别的数据。

组类型

可以指定要添加到工作簿的组的类型。 有两种类型的组:

  • 可编辑:工作簿中的组允许添加、删除或编辑该组中的项内容。 此类型通常用于布局和可见性目的。
  • 从模板:工作簿中的组按工作簿 ID 加载另一工作簿的内容。 在运行时,将会加载该工作簿的内容并将其合并到工作簿中。 在编辑模式下,无法修改组的任何内容,因为在下一次加载项时,这些内容就会从模板中再次加载。 从模板加载组时,请使用现有工作簿的完整 Azure 资源 ID。

加载类型

可以指定加载组内容的方式和时间。

延迟加载

默认设置为延迟加载。 在延迟加载中,只有当项目可见时才会加载组。 这样,组就可由选项卡项使用了。 如果从未选择该选项卡,则组永远不可见,因此也不会加载内容。

对于从模板创建的组,在组变为可见之前,不会检索该模板的内容,且不会创建组中的项。 检索内容时,用户将看到整个组的进度旋转图标。

显式加载

在此模式下,会显示一个按钮来指示组的位置,并且在用户显式选择此按钮加载内容之前,不会检索或创建任何内容。 在内容的计算非常耗费资源或者内容极少被使用的情况下,此类型很有用。 作者可以指定要在按钮上显示的文本。

此屏幕截图显示了带有已配置的“加载更多”按钮的显式加载设置。 工作簿中某个组的显式加载设置的屏幕截图。

这是在加载到工作簿之前的组:这是一个在加载到工作簿之前显示显式组的屏幕截图。

在加载到工作簿中之后的组:显示工作簿中加载后的显式组的屏幕截图。

Always 模式

在“始终”模式下,加载工作簿后,始终会立即加载并创建组的内容。 当组仅用于布局目的(其中的内容始终可见)时,往往会使用此类型。

在组中使用模板

当某个组配置为从模板加载时,默认会在延迟模式下加载该内容,并且仅当该组可见时才加载。

将某个模板加载到组中时,工作簿会尝试将模板中声明的所有参数与组中的现有参数合并。 工作簿中存在的所有同名参数将从所要加载的模板中合并出去。 如果参数步骤中的所有参数均已合并出去,则整个参数步骤会消失。

示例 1:所有参数具有相同的名称

假设模板顶部有两个参数,一个时间范围参数和一个名为“Filter”的文本参数: 显示工作簿中顶级参数的屏幕截图。

然后,组项加载具有其自己的两个参数和一个文本步骤的第二个模板,其中参数的名称相同: 具有顶级参数的工作簿模板的屏幕截图。

将第二个模板加载到组中时,重复的参数将合并出去。由于所有参数都已合并出去,因此内部参数步骤也会合并出去,导致组仅包含文本步骤。

示例 2:一个参数具有相同的名称

假设你有一个模板,顶部有两个参数,一个 时间范围 参数和一个名为“FilterB”的文本参数(): 合并了参数结果的组项的屏幕截图。

加载组项的模板时,会将 TimeRange 参数从该组中合并出去。 工作簿包含带有 TimeRange 和 Filter 的初始参数步骤,组的参数仅包括 FilterB。 其中的参数未合并出去的工作簿组的屏幕截图。

如果加载的模板包含 TimeRangeFilter(而不是 FilterB),那么生成的工作簿将会包含一个参数步骤,以及一个仅剩文本步骤的组。

将一个大模板拆分为许多模板

若要提高性能,可以将一个大模板分解为多个较小的模板,这些较小的模板能够以延迟模式或者按照用户的要求加载某些内容。 由于顶级模板可以更小,这使得初始加载速度更快。

将某个模板拆分为多个部分时,基本上需要将该模板拆分为多个全部都单独工作的模板(子模板)。 如果顶级模板包含其他项使用的 TimeRange 参数,则子模板还需要包含一个参数项,以用于定义一个具有相同确切名称的参数。 子模板将独立工作,并且可以按组加载到较大的模板内。

若要将一个较大的模板转换为多个子模板:

  1. 在工作簿顶部附近的共享参数后面创建一个新的空组。 此新组最终将成为子模板。

  2. 创建共享参数步骤的副本,然后使用“移入组中”功能将副本移入到步骤 1 中创建的组。 此参数允许子模板独立于外部模板工作,在加载到外部模板内时会合并出去。

    注释

    从技术上来讲,如果你永远不打算单独显示子模板,则子模板就不需要将这些参数合并出去。 但是,如果子模板没有参数,则如果稍后需要编辑或调试,则很难编辑或调试这些参数。

  3. 将工作簿中需要放入子模板的每个项分别移入到步骤 1 中创建的组中。

  4. 如果在步骤 3 中移动的单个步骤具有条件可见性,则这会成为外部组(例如选项卡中使用的组)的可见性。 将它们从组内项目中删除,并将该可见性设置添加到组本身。 在此处请保存,以免丢失所做的更改,并且/或者导出并保存 JSON 内容的副本。

  5. 如果你希望从模板加载该组,可以使用该组中的“编辑”工具栏按钮。 这只会在新窗口中将该组的内容作为工作簿打开。 然后,可以保存此内容(如果适用)并关闭此工作簿视图(不要关闭浏览器,只是关闭该视图以返回到前面正在编辑的工作簿)。

  6. 然后,可将组步骤更改为从模板加载,并将模板 ID 字段设置为在步骤 5 中创建的工作簿/模板。 若要使用工作簿 ID,源必须是共享工作簿的完整 Azure 资源 ID。 按“加载”,随即会从该子模板加载此组的内容,而不是加载这个外部工作簿中保存的内容。