Azure 仪表板结构

本文档将使用以下仪表板作为示例,介绍 Azure 仪表板的结构:

Azure 门户中示例仪表板的屏幕截图。

由于共享的 Azure 仪表板是资源,所以此仪表板可以表示为 JSON。 可在 Azure 门户中选择“导出”,然后选择“下载”来下载仪表板的 JSON 表示形式。

示例仪表板 JSON

以下 JSON 表示上一部分所示的示例仪表板。

{
  "properties": {
    "lenses": [
      {
        "order": 0,
        "parts": [
          {
            "position": {
              "x": 0,
              "y": 0,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [],
              "type": "Extension/HubsExtension/PartType/MarkdownPart",
              "settings": {
                "content": {
                  "settings": {
                    "content": "## Azure Virtual Machines Overview\r\nNew team members should watch this video to get familiar with Azure Virtual Machines.",
                    "markdownUri": null
                  }
                }
              }
            }
          },
          {
            "position": {
              "x": 3,
              "y": 0,
              "colSpan": 8,
              "rowSpan": 4
            },
            "metadata": {
              "inputs": [],
              "type": "Extension/HubsExtension/PartType/MarkdownPart",
              "settings": {
                "content": {
                  "settings": {
                    "content": "This is the team dashboard for the test VM we use on our team. Here are some useful links:\r\n\r\n1. [Create a Linux virtual machine](https://docs.azure.cn/virtual-machines/linux/quick-create-portal)\r\n1. [Create a Windows virtual machine](https://docs.azure.cn/virtual-machines/windows/quick-create-portal)\r\n1. [Create a virtual machine scale set](https://docs.azure.cn/virtual-machine-scale-sets/quick-create-portal)",
                    "title": "Test VM Dashboard",
                    "subtitle": "Contoso",
                    "markdownUri": null
                  }
                }
              }
            }
          },
          {
            "position": {
              "x": 0,
              "y": 2,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [],
              "type": "Extension/HubsExtension/PartType/VideoPart",
              "settings": {
                "content": {
                  "settings": {
                  "src": "<https://www.contoso.com/yourvideo>",

                    "autoplay": false
                  }
                }
              }
            }
          },
          {
            "position": {
              "x": 0,
              "y": 4,
              "colSpan": 11,
              "rowSpan": 3
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryInputs",
                  "value": {
                    "timespan": {
                      "duration": "PT1H"
                    },
                    "id": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1",
                    "chartType": 0,
                    "metrics": [
                      {
                        "name": "Percentage CPU",
                                                "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
                      }
                    ]
                  }
                }
              ],
              "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart"
            }
          },
          {
            "position": {
              "x": 0,
              "y": 7,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryInputs",
                  "value": {
                    "timespan": {
                      "duration": "PT1H"
                    },
                    "id": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1",
                    "chartType": 0,
                    "metrics": [
                      {
                        "name": "Disk Read Operations/Sec",
                        "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
                      },
                      {
                        "name": "Disk Write Operations/Sec",
                        "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
                      }
                    ]
                  }
                }
              ],
              "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart"
            }
          },
          {
            "position": {
              "x": 3,
              "y": 7,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryInputs",
                  "value": {
                    "timespan": {
                      "duration": "PT1H"
                    },
                                        "id": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1",
                    "chartType": 0,
                    "metrics": [
                      {
                        "name": "Disk Read Bytes",
                                                "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
                      },
                      {
                        "name": "Disk Write Bytes",
                                                "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
                      }
                    ]
                  }
                }
              ],
              "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart"
            }
          },
          {
            "position": {
              "x": 6,
              "y": 7,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryInputs",
                  "value": {
                    "timespan": {
                      "duration": "PT1H"
                    },
                    "id": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1",
                    "chartType": 0,
                    "metrics": [
                      {
                        "name": "Network In Total",
                        "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
                      },
                      {
                        "name": "Network Out Total",
                        "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
                      }
                    ]
                  }
                }
              ],
              "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart"
            }
          },
          {
            "position": {
              "x": 9,
              "y": 7,
              "colSpan": 2,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [
                {
                  "name": "id",
                  "value": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
                }
              ],
              "type": "Extension/Microsoft_Azure_Compute/PartType/VirtualMachinePart",
              "asset": {
                "idInputName": "id",
                "type": "VirtualMachine"
              }
            }
          }
        ]
      }
    ],
    "metadata": {
      "model": {}
    }
  },
  "name": "Simple VM Dashboard",
  "type": "Microsoft.Portal/dashboards",
  "location": "INSERT LOCATION",
  "tags": {
    "hidden-title": "Simple VM Dashboard"
  },
  "apiVersion": "2022-12-01-preview"
}

常见资源属性

现在分别介绍 JSON 的各个相关部分。 公共资源属性显示在示例 JSON 的末尾部分。 这些属性在所有 Azure 资源类型中共享,并且与仪表板内容没有特定关系。

ID

ID 表示仪表板的 Azure 资源 ID,遵循 Azure 资源命名约定。 门户创建仪表板时,通常会选择 GUID 形式的 ID;如果以编程方式创建仪表板,则可使用任何有效的名称。

从 Azure 门户导出仪表板时,不包括 id 字段。 如果通过导入包含 id 字段的 JSON 文件创建新的仪表板,则将忽略该值,并将为每个新仪表板分配新的 ID 值。

名称

Azure 门户中用于仪表板的资源名称。

类型

所有仪表板的类型都是 Microsoft.Portal/dashboards。

位置

与其他资源不同,仪表板没有运行时组件。 对于仪表板,location 指示用于存储仪表板 JSON 表示形式的主地理位置。 该值应为可使用订阅资源上的位置 API 提取的位置代码之一。

标记

标记是 Azure 资源的一项常见功能,可使用它按任意名称-值对来整理资源。 仪表板有一个名为 hidden-title 的特殊标记。 如果仪表板已填充此属性,则该值将用作门户中仪表板的显示名称。 通过标记可重命名仪表板的显示名称。

属性

properties 对象包含两个属性,分别是 lenses 和 metadata。 lenses 属性包含仪表板上的磁贴的相关信息。 metadata 属性保留用于将来可能出现的功能。

镜头

lenses 属性包含仪表板。

部件

lenses 属性包含两个属性,分别是 order 和 parts。 目前,order 始终设置为 0。 parts 属性包含一个对象,该对象定义仪表板上的各个部件(也称为“磁贴”)。

parts 对象对于每个部件都包含一个属性,其中属性名称为一个数字。 此数字并不重要。

每个单独的部件对象都包含 position 和 metadata。

位置

position 属性包含以 x、y、rowSpan 和 colSpan 表示的部件大小和位置信息。 值以网格单位表示。 仪表板处于可编辑模式时,网格单位可见,如下所示。

显示 Azure 门户中仪表板网格单元的屏幕截图。

例如,如果希望磁贴具有两个网格单位的宽度、一个网格单元的高度,且位于仪表板左上角,则位置对象如下所示:

position: { x: 0, y: 0, rowSpan: 2, colSpan: 1 }

元数据

每个部件都有一个 metadata 属性。 在元数据中,一个对象只有一个必需属性:type。 此字符串告知门户要显示的磁贴类型。 示例仪表板使用这些类型的磁贴:

  1. Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart - 用于显示监视指标
  2. Extension[azure]/HubsExtension/PartType/MarkdownPart - 用于展示带有基本格式(如列表、链接等)的自定义markdown内容,例如文本或图像。

每个部件类型都有自己的配置选项。 可能的配置属性有 inputs、settings 和 asset。

输入

输入对象通常包含将磁贴绑定到资源实例的信息。

示例中的每个 MetricsChartPart 都有一个表示要绑定到的资源的输入(它表示 VM 的 Azure 资源 ID),还包含所显示的数据的相关信息。 例如,inputs 对象是显示“网络总流入量”和“网络总流出量”指标的磁贴。

"inputs":
[
  {
    "name": "queryInputs",
    "value": {
      "timespan": {
        "duration": "PT1H"
      },
      "id": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1",
      "chartType": 0,
      "metrics": [
        {
          "name": "Network In Total",
          "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
        },
        {
          "name": "Network Out Total",
          "resourceId": "/subscriptions/{subscriptionid}/resourceGroups/contoso/providers/Microsoft.Compute/virtualMachines/myVM1"
        }
      ]
    }
  }
]

设置

设置对象包含部件的可配置元素。 在示例仪表板中,MarkdownPart 使用设置来存储自定义 Markdown 内容以及可配置的标题和副标题。

"settings": {
  "content": {
    "settings": {
      "content": "This is the team dashboard for the test VM we use on our team. Here are some useful links:\r\n\r\n1. [Create a Linux virtual machine](https://docs.azure.cn/virtual-machines/linux/quick-create-portal)\r\n1. [Create a Windows virtual machine](https://docs.azure.cn/virtual-machines/windows/quick-create-portal)\r\n1. [Create a virtual machine scale set](https://docs.azure.cn/virtual-machine-scale-sets/quick-create-portal)",
      "title": "Test VM Dashboard",
      "subtitle": "Contoso",
      "markdownUri": null
    }
  }
}

同样,VideoPart 也有自己的设置,其中包含指向要播放视频的指针、自动播放设置,以及可选的标题信息。


"settings": {
  "content": {
    "settings": {
            "src": "<https://www.contoso.com/yourvideo>",
      "autoplay": false
    }
  }
}

资产

绑定到第一类可管理门户对象(称为“资产”)的磁贴通过 asset 对象表示此关系。 在示例仪表板中,虚拟机磁贴包含此资产说明。 idInputName 属性告知门户:ID 输入包含资产的唯一标识符(在此示例中为资源 ID)。 大多数 Azure 资源类型在门户中定义资产。

"asset": {
    "idInputName": "id",
    "type": "VirtualMachine"
}

后续步骤