创建或编辑 Azure 工作簿
本文介绍如何创建新工作簿以及如何将元素添加到 Azure 工作簿。
新建 Azure 工作簿
新建 Azure 工作簿:
添加文本
工作簿允许作者在其工作簿中包含文本块。 文本可以是数据的人工分析结果、帮助用户解释数据的信息、节标题等等。
文本是通过 markdown 控件添加的,作者可以向其中添加内容。 作者可以使用 markdown 的完整格式设置功能。 其中包括不同的标题和字体样式、超链接、表格等。Markdown 允许作者创建丰富的 Word 或门户式报表或分析叙述。 文本可以包含参数中的参数值,当参数更改时,会更新这些参数引用。
编辑模式:
预览模式:
向 Azure 工作簿添加文本:
通过选择工具栏中的“编辑”,确保处于“编辑”模式。 通过执行以下任一步骤添加查询:
- 选择“添加”,然后在现有元素下方或工作簿底部选择“添加文本”。
- 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加文本”。
在编辑器字段中输入 markdown 文本。
使用“文本样式”选项可在纯 markdown 与使用 Azure 门户的标准 info/warning/success/error 样式包装的 markdown 之间切换。
提示
使用此 Markdown 速查表查看不同的格式设置选项。
使用“预览”选项卡可查看内容的外观。 预览将在可滚动区域内显示内容来限制其大小,但在运行时显示时,Markdown 内容将扩展来填充所需的任何空间,无滚动条。
选择“完成编辑”。
文本样式
有以下文本样式可用:
Style | 说明 |
---|---|
plain | 未应用任何格式 |
info | 门户的“info”样式,具有 ℹ 或类似图标和蓝色背景 |
error | 门户的“error”样式,具有 ❌ 或类似图标和红色背景 |
success | 门户的“success”样式,具有 ✔ 或类似图标和绿色背景 |
upsell | 门户的“upsell”样式,具有 🚀 或类似图标和紫色背景 |
warning | 门户的“warning”样式,具有 ⚠ 或类似图标和蓝色背景 |
还可选择文本参数作为样式源。 参数值必须是上述文本值之一。 缺少值的情况或任何无法识别的值都将被视为 plain
样式。
文本样式示例
信息样式示例:
警告样式示例:
添加查询
Azure 工作簿支持查询任何支持的工作簿数据源。
例如,可以查询 Azure 资源运行状况,以帮助查看影响资源的任何服务问题。 还可以查询 Azure Monitor 指标,这些指标是定期收集的数字数据。 Azure Monitor 指标提供特定时间系统某个方面的相关信息。
向 Azure 工作簿添加查询:
- 通过选择工具栏中的“编辑”,确保处于“编辑”模式。 通过以下步骤之一来添加查询:
- 在现有元素下方或工作簿底部选择“添加”,然后选择“添加查询”。
- 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加查询”。
- 选择用于查询的数据源。 其他字段根据选择的数据源确定。
- 根据所选的数据源选择所需的任何其他值。
- 选择工作簿的可视化效果。
- 在查询部分输入查询,或通过选择“示例”从示例查询列表中选择,然后根据喜好编辑查询。
- 选择“运行查询”。
- 确定在工作簿中有所需查询时,选择“完成编辑”。
查询日志的最佳做法
使用尽可能小的时间范围。 时间范围越长,查询越慢,返回的数据越多。 对于较长的时间范围,查询可能必须转到较慢的“冷”存储,这使得查询速度变得更慢。 默认采用最短的有效时间范围,但用户可以选择更长的时间范围(速度可能较慢)。
在下拉列表中使用“All”特殊值。 可以在下拉列表参数设置中添加“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 列,查询将不返回任何行。
教程 - 工作簿中以资源为中心的日志查询
动态资源类型参数
使用动态范围进行更高效的查询。 下面的代码片段使用这种启发式方法:
- 单个资源:如果所选资源的计数小于或等于 5
- 资源组:如果资源数超过 5 但资源所属的资源组数小于或等于 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 工作簿:
通过选择工具栏中的“编辑”,确保处于“编辑”模式。 通过执行以下任一步骤添加参数:
- 在现有元素下方或工作簿底部选择“添加”,然后选择“添加参数”。
- 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加参数”。
在弹出的“新建参数”窗格中,输入以下字段的值:
- 参数名称:参数名称不能包含空格或特殊字符
- 显示名称:显示名称可以包括空格、特殊字符、表情符号等
- 参数类型:
- 必需:
选择“完成编辑”。
添加指标图表
大多数 Azure 资源会发出有关状态和运行状况的指标数据,例如 CPU 利用率、存储可用性、数据库事务计数、失败的应用请求等。使用工作簿,可以将指标数据可视化为时序图表。
以下示例将显示前一个小时内存储帐户中的事务数。 这使存储所有者可以查看事务趋势并查找行为中的异常。
向 Azure 工作簿添加指标图表:
- 通过选择工具栏中的“编辑”,确保处于“编辑”模式。 通过以下步骤之一来添加指标图表:
- 在现有元素下方或工作簿底部选择“添加”,然后选择“添加指标”。
- 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加指标”。
- 选择资源类型、目标资源、指标命名空间和名称,以及要使用的聚合。
- 根据需要设置其他参数,例如时间范围、拆分依据、可视化效果、大小和调色板。
- 选择“完成编辑”。
这是编辑模式下的指标图表:
指标图表参数
参数 | 说明 | 示例 |
---|---|---|
资源类型 | 目标资源类型 | “存储”或“虚拟机”。 |
资源 | 要从中获取指标值的一组资源 | MyStorage1 |
命名空间 | 包含该指标的命名空间 | 存储 > blob |
指标 | 要可视化的指标 | 存储 > blob > 事务 |
聚合 | 要应用到指标的聚合函数 | Sum、Count、Average 等 |
时间范围 | 用于查看指标的时间范围 | 过去 1 小时、过去 24 小时,等等 |
可视化效果 | 要使用的可视化效果 | 面积图、条形图、折线图、散点图、网格 |
拆分依据 | (可选)按维度拆分指标 | 按地理类型列出事务 |
大小 | 控件的垂直大小 | 小、中或大 |
调色板 | 要在图表中使用的调色板。 使用 Split by 参数时将被忽略 |
蓝色、绿色、红色,等等 |
指标图表示例
将按 API 名称拆分的事务显示为折线图
将按响应类型拆分的事务显示为大型条形图
将平均延迟显示为散点图
添加链接
可以使用链接创建指向其他视图、工作簿、工作簿中的其他项的链接,或者在工作簿中创建选项卡视图。 链接样式可以为超链接、按钮和选项卡。
链接样式
可以将样式应用于链接元素本身,也可以应用于单个链接。
链接元素样式
样式 | 示例 | 说明 |
---|---|---|
项目符号列表 | 默认链接以项目符号形式显示,每行一个链接。 “链接前的文本”和“链接后的文本”字段可用于在链接项之前或之后添加更多文本。 | |
列表 | 链接显示为链接列表,没有项目符号。 | |
Paragraph | 链接显示为链接段落,包装成文本段落。 | |
导航 | 链接显示为链接,每个链接之间有垂直分隔符或管道 (| )。 |
|
制表符 | 链接显示为选项卡。 每个链接都显示为选项卡,没有适用于单个链接的链接样式选项。 有关如何配置选项卡,请参阅下面的选项卡部分。 | |
Toolbar | 链接将显示带有图标和文本的 Azure 门户样式的工具栏。 每个链接都显示为工具栏按钮。 有关如何配置工具栏,请参阅下面的工具栏部分。 |
链接样式
Style | 说明 |
---|---|
链接 | 默认情况下,链接显示为超链接。 URL 链接只能是链接样式。 |
按钮(主要) | 该链接在门户中显示为“主要”按钮,通常是蓝色 |
按钮(次要) | 该链接在门户中显示为“次要”按钮,通常是“透明”颜色、浅色主题中的白色按钮和深色主题中的深灰色按钮。 |
使用按钮时,如果在“按钮文本”、“工具提示文本”或“值”字段中使用了所需参数,但所需参数未设置,则会禁用该按钮。 例如,当在另一个参数或控件中未选择任何值时,可以使用此功能禁用按钮。
链接操作
链接可以使用链接操作中所有可用的链接操作,并且还有两个可用操作:
操作 | 说明 |
---|---|
设置参数值 | 选择链接、按钮或选项卡时,可以将参数设置为值。选项卡通常配置为将参数设置为一个值,会根据该值隐藏和显示工作簿的其他部分。 |
滚动到某个步骤 | 选择链接时,工作簿将移动焦点并滚动以显示另一个步骤。 此操作可用于创建“目录”或“返回顶部”样式体验。 |
选项卡
大多数情况下,选项卡链接与“设置参数值”操作结合使用。 以下示例显示了配置为创建 2 个选项卡的链接步骤,其中选择任一选项卡都会将 selectedTab 参数设置为其他值(该示例显示正在编辑的第三个选项卡,以显示参数名称和参数值占位符):
然后,通过使用高级设置,可以在工作簿中添加根据条件显示的其他项(如果 selectedTab 参数值为“1”):
默认选择第一个选项卡,初始将 selectedTab 设置为 1,并使该步骤可见。 选择第二个选项卡会将参数的值更改为 2,并显示不同的内容:
附带链接的示例 Azure 工作簿中提供了附带上述选项卡的示例工作簿。
选项卡限制
- 选项卡中不支持 URL 链接。 选项卡中的 URL 链接显示为禁用的选项卡。
- 选项卡中不支持项样式。 项显示为选项卡,并且仅显示选项卡名称(链接文本)字段。 在编辑模式下,将隐藏选项卡样式中未使用的字段。
- 默认选择第一个选项卡,这将调用该选项卡指定的任何操作。 如果第一个选项卡的操作会打开另一个视图,则一旦创建选项卡,就会显示一个视图。
- 可使用选项卡打开其他视图,但应谨慎使用此功能,因为大多数用户不希望通过选择选项卡来进行导航。如果其他选项卡将参数设置为特定值,则打开视图的选项卡不会更改该值,因此工作簿内容的其余部分将继续显示上一选项卡的视图或数据。
工具栏
使用工具栏样式使链接显示为工具栏样式。 在工具栏样式中,作者必须填写以下字段:
- 按钮文本,即显示在工具栏上的文本。 可以在此字段中使用参数。
- 图标,即显示在工具栏中的图标。
- 工具提示文本,即显示在工具栏按钮的工具提示文本中的文本。 可以在此字段中使用参数。
如果在按钮文本、工具提示文本或值字段中使用任何必需参数,并且未设置所需的参数,则禁用工具栏按钮。 例如,当在另一个参数/控件中未选择任何值时,这可以用来禁用工具栏按钮。
附带链接的示例 Azure 工作簿中提供了含工具栏、全局参数和 ARM 操作的示例工作簿。
添加组
使用工作簿中的组项,可对工作簿中的一组步骤进行逻辑分组。
工作簿中的组能够在多个方面起作用:
- 布局:如果你想要对项进行纵向组织,可为全部堆积在一起的项创建一个组,并将该组的样式设置为百分比宽度,而不是设置各个项的百分比宽度。
- 可见性:如果你想要将多个项一起隐藏或显示,可以设置整个项组的可见性,而不是设置每个项的可见性设置。 这对于使用选项卡的模板非常有用,因为可以使用组作为选项卡的内容,并可以根据所选选项卡设置的参数来隐藏/显示整个组。
- 性能:如果你有一个很大的模板,其中包含许多部分或选项卡,则可以将每个部分转换为其自身的子模板,并使用组来加载顶级模板中的所有子模板。 在用户将这些组设为可见之前,子模板的内容不会加载或运行。 详细了解如何将一个大模板拆分为许多模板。
将组添加到工作簿:
通过选择工具栏中的“编辑”,确保处于“编辑”模式。 通过执行以下任一步骤添加参数:
- 在现有元素下方或工作簿底部选择“添加”,然后选择“添加组”。
- 选择工作簿中某个元素旁边的“编辑”按钮右侧的省略号 (...),然后依次选择“添加”和“添加组”。
为组选择项。
选择“完成编辑”。
下面是处于读取模式的组,其中包含两个项:文本项和查询项。
在编辑模式下,可以看到这两个项实际上位于组项中。 在下面的屏幕截图中,组处于编辑模式。 该组在虚线区域中包含两个项。 每个项都可以处于编辑或读取模式且彼此独立。 例如,查询步骤处于读取模式,而文本步骤处于编辑模式。
限定组的范围
组被视为工作簿中的新范围。 在组中创建的所有参数仅在该组中可见。 这同样适用于合并 - 你只能查看组内部或父级别的数据。
组类型
可以指定要添加到工作簿的组的类型。 有两种类型的组:
- 可编辑:工作簿中的组允许添加、删除或编辑该组中的项内容。 此类型通常用于布局和可见性目的。
- 从模板:工作簿中的组按工作簿 ID 加载另一工作簿的内容。 在运行时,将会加载该工作簿的内容并将其合并到工作簿中。 在编辑模式下,无法修改组的任何内容,因为在下一次加载项时,这些内容就会从模板中再次加载。 从模板加载组时,请使用现有工作簿的完整 Azure 资源 ID。
加载类型
可以指定加载组内容的方式和时间。
延迟加载
默认设置为延迟加载。 在延迟加载中,仅当项可见时才会加载组。 这样,组就可由选项卡项使用了。 如果从未选择该选项卡,则组永远不可见,因此也不会加载内容。
对于从模板创建的组,在组变为可见之前,不会检索该模板的内容,且不会创建组中的项。 检索内容时,用户将看到整个组的进度旋转图标。
显式加载
在此模式下,会显示一个按钮来指示组的位置,并且在用户显式选择此按钮加载内容之前,不会检索或创建任何内容。 在内容的计算非常耗费资源或者内容极少被使用的情况下,此类型很有用。 作者可以指定要在按钮上显示的文本。
此屏幕截图显示了带有已配置的“加载更多”按钮的显式加载设置。
这是在加载到工作簿中之前的组:
在加载到工作簿中之后的组:
始终模式
在“始终”模式下,加载工作簿后,始终会立即加载并创建组的内容。 当组仅用于布局目的(其中的内容始终可见)时,往往会使用此类型。
在组中使用模板
当某个组配置为从模板加载时,默认会在延迟模式下加载该内容,并且仅当该组可见时才加载。
将某个模板加载到组中时,工作簿会尝试将模板中声明的所有参数与组中的现有参数合并。 工作簿中存在的所有同名参数将从所要加载的模板中合并出去。 如果参数步骤中的所有参数均已合并出去,则整个参数步骤会消失。
示例 1:所有参数具有相同的名称
假设你有一个顶部有两个参数的模板,一个时间范围参数和一个名为“Filter”的文本参数:
然后,组项将加载另一个具有自己的两个参数和一个文本步骤的模板,其中的参数名称与前一个模板的参数名称相同:
将第二个模板加载到组中时,重复的参数将合并出去。由于所有参数都已合并出去,因此内部参数步骤也会合并出去,导致组仅包含文本步骤。
示例 2:一个参数具有相同的名称
假设你有一个顶部有两个参数的模板,一个时间范围参数和一个名为“FilterB”的文本参数:
加载组项的模板时,会将 TimeRange 参数从该组中合并出去。 工作簿包含带有 TimeRange 和 Filter 的初始参数步骤,组的参数仅包括 FilterB。
如果加载的模板包含 TimeRange 和 Filter(而不是 FilterB),则生成的工作簿将包含一个参数步骤,以及一个仅包含文本步骤的组。
将一个大模板拆分为许多模板
若要提高性能,可以将一个大模板分解为多个较小的模板,这些较小的模板能够以延迟模式或者按照用户的要求加载某些内容。 由于顶级模板可以更小,这使得初始加载速度更快。
将某个模板拆分为多个部分时,基本上需要将该模板拆分为多个全部都单独工作的模板(子模板)。 如果顶级模板包含其他项使用的 TimeRange 参数,则子模板还需要包含一个参数项,以用于定义一个具有相同确切名称的参数。 子模板将独立工作,并且可以按组加载到较大的模板内。
若要将一个较大的模板转换为多个子模板:
在工作簿顶部附近的共享参数后面创建一个新的空组。 此新组最终将成为子模板。
创建共享参数步骤的副本,然后使用“移入组中”功能将副本移入到步骤 1 中创建的组。 此参数允许子模板独立于外部模板工作,在加载到外部模板内时会合并出去。
注意
从技术上来讲,如果你永远不打算单独显示子模板,则子模板就不需要将这些参数合并出去。 但是,如果子模板没有参数,则在以后需要编辑或调试子模板时难以实现此操作。
将工作簿中需要放入到子模板的每个项移入到步骤 1 中创建的组。
如果在步骤 3 中移动的单个步骤具有条件可见性,则这会成为外部组(例如选项卡中使用的组)的可见性。 将这些步骤从组内的项中删除,并将该可见性设置添加到组本身。 在此处请保存,以免丢失所做的更改,并且/或者导出并保存 JSON 内容的副本。
如果你希望从模板加载该组,可以使用该组中的“编辑”工具栏按钮。 这只会在新窗口中将该组的内容作为工作簿打开。 然后,可以保存此内容(如果适用)并关闭此工作簿视图(不要关闭浏览器,只是关闭该视图以返回到前面正在编辑的工作簿)。
然后,可将组步骤更改为从模板加载,并将模板 ID 字段设置为在步骤 5 中创建的工作簿/模板。 若要使用工作簿 ID,源必须是共享工作簿的完整 Azure 资源 ID。 按“加载”,随即会从该子模板加载此组的内容,而不是加载这个外部工作簿中保存的内容。