A estrutura dos dashboards do Azure

Este documento explica a estrutura de um dashboard do Azure com o seguinte dashboard como exemplo:

Captura de ecrã a mostrar um dashboard de exemplo no portal do Azure.

Uma vez que os dashboards partilhados do Azure são recursos, este dashboard pode ser representado como JSON. Pode transferir a representação JSON de um dashboard ao selecionar Exportar e, em seguida, Transferir no portal do Azure.

O seguinte JSON representa o dashboard mostrado acima.

{
{
  "properties": {
    "lenses": {
      "0": {
        "order": 0,
        "parts": {
          "0": {
            "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
                  }
                }
              }
            }
          },
          "1": {
            "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.microsoft.com/azure/virtual-machines/linux/quick-create-portal)\r\n1. [Create a Windows virtual machine](https://docs.microsoft.com/azure/virtual-machines/windows/quick-create-portal)\r\n1. [Create a virtual machine scale set](https://docs.microsoft.com/azure/virtual-machine-scale-sets/quick-create-portal)",
                    "title": "Test VM Dashboard",
                    "subtitle": "Contoso",
                    "markdownUri": null
                  }
                }
              }
            }
          },
          "2": {
            "position": {
              "x": 0,
              "y": 2,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [],
              "type": "Extension/HubsExtension/PartType/VideoPart",
              "settings": {
                "content": {
                  "settings": {
                    "src": "https://www.youtube.com/watch?v=rOiSRkxtTeU",
                    "autoplay": false
                  }
                }
              }
            }
          },
          "3": {
            "position": {
              "x": 0,
              "y": 4,
              "colSpan": 11,
              "rowSpan": 3
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryInputs",
                  "value": {
                    "timespan": {
                      "duration": "PT1H"
                    },
                    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1",
                    "chartType": 0,
                    "metrics": [
                      {
                        "name": "Percentage CPU",
                        "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1"
                      }
                    ]
                  }
                }
              ],
              "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart",
              "settings": {}
            }
          },
          "4": {
            "position": {
              "x": 0,
              "y": 7,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryInputs",
                  "value": {
                    "timespan": {
                      "duration": "PT1H"
                    },
                    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1",
                    "chartType": 0,
                    "metrics": [
                      {
                        "name": "Disk Read Operations/Sec",
                        "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1"
                      },
                      {
                        "name": "Disk Write Operations/Sec",
                        "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1"
                      }
                    ]
                  }
                }
              ],
              "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart",
              "settings": {}
            }
          },
          "5": {
            "position": {
              "x": 3,
              "y": 7,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryInputs",
                  "value": {
                    "timespan": {
                      "duration": "PT1H"
                    },
                    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1",
                    "chartType": 0,
                    "metrics": [
                      {
                        "name": "Disk Read Bytes",
                        "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1"
                      },
                      {
                        "name": "Disk Write Bytes",
                        "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1"
                      }
                    ]
                  }
                }
              ],
              "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart",
              "settings": {}
            }
          },
          "6": {
            "position": {
              "x": 6,
              "y": 7,
              "colSpan": 3,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryInputs",
                  "value": {
                    "timespan": {
                      "duration": "PT1H"
                    },
                    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1",
                    "chartType": 0,
                    "metrics": [
                      {
                        "name": "Network In Total",
                        "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1"
                      },
                      {
                        "name": "Network Out Total",
                        "resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1"
                      }
                    ]
                  }
                }
              ],
              "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart",
              "settings": {}
            }
          },
          "7": {
            "position": {
              "x": 9,
              "y": 7,
              "colSpan": 2,
              "rowSpan": 2
            },
            "metadata": {
              "inputs": [
                {
                  "name": "id",
                  "value": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SimpleWinVMResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM1"
                }
              ],
              "type": "Extension/HubsExtension/PartType/ResourcePart",
              "asset": {
                "idInputName": "id",
                "type": "VirtualMachine"
              }
            }
          }
        }
      }
    },
    "metadata": {
      "model": {
        "timeRange": {
          "value": {
            "relative": {
              "duration": 24,
              "timeUnit": 1
            }
          },
          "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
        }
      }
    }
  },
  "name": "Simple VM Dashboard",
  "type": "Microsoft.Portal/dashboards",
  "location": "INSERT LOCATION",
  "tags": {
    "hidden-title": "Simple VM Dashboard"
  },
  "apiVersion": "2015-08-01-preview"
}

Propriedades de recursos comuns

Vamos dividir as secções relevantes do JSON. As propriedades comuns do recurso aparecem perto do fim do exemplo acima. Estas propriedades são partilhadas em todos os tipos de recursos do Azure. Não se relacionam especificamente com o conteúdo do dashboard.

ID

O ID representa o ID de recurso do Azure do dashboard, sujeito às convenções de nomenclatura dos recursos do Azure. Quando o portal cria um dashboard, geralmente escolhe um ID sob a forma de um guid, mas pode utilizar qualquer nome válido quando cria um dashboard programaticamente.

Quando exporta um dashboard do portal do Azure, o id campo não é incluído. Se criar um novo dashboard ao importar um ficheiro JSON que inclua o id campo, o valor será ignorado e será atribuído um novo valor de ID a cada novo dashboard.

Name

O nome do recurso que portal do Azure utiliza para o dashboard.

Tipo

Todos os dashboards são do tipo Microsoft.Portal/dashboards.

Localização

Ao contrário de outros recursos, os dashboards não têm um componente de runtime. Para dashboards, "location" indica a localização geográfica primária que armazena a representação JSON do dashboard. O valor deve ser um dos códigos de localização que podem ser obtidos com a API de localizações no recurso de subscrições.

Etiquetas

As etiquetas são uma funcionalidade comum dos recursos do Azure que lhe permitem organizar o recurso por pares de valores de nome arbitrários. Os dashboards incluem uma etiqueta especial chamada hidden-title. Se o dashboard tiver esta propriedade preenchida, esse valor é utilizado como o nome a apresentar do dashboard no portal. Esta etiqueta dá-lhe uma forma de ter um nome a apresentar renomeável para o dashboard

Propriedades

O objeto de propriedades contém duas propriedades lenses e metadata. A lenses propriedade contém informações sobre os mosaicos no dashboard. A metadata propriedade está reservada para potenciais funcionalidades futuras.

Lentes

A lenses propriedade contém o dashboard. O objeto lente neste exemplo contém uma única propriedade chamada "0". As lentes são um conceito de agrupamento que não está atualmente implementado. Por enquanto, todos os dashboards têm esta única propriedade "0" no objeto de lente.

Peças

O objeto abaixo de "0" contém duas propriedades e orderparts. Atualmente, order está sempre definido como 0. A parts propriedade contém um objeto que define as partes individuais (também referidas como mosaicos) no dashboard.

O parts objeto contém uma propriedade para cada parte, em que o nome da propriedade é um número. O número não é significativo.

Cada objeto de peça individual contém position e metadata.

Posição

A position propriedade contém as informações de tamanho e localização da parte expressa como x, y, rowSpane colSpan. Os valores estão em termos de unidades de grelha. Estas unidades de grelha são visíveis quando o dashboard está no modo de personalização, conforme mostrado aqui.

Captura de ecrã a mostrar as unidades de grelha de um dashboard no portal do Azure.

Por exemplo, se quiser que um mosaico tenha uma largura de duas unidades de grelha, uma altura de uma unidade de grelha e uma localização no canto superior esquerdo do dashboard, o objeto de posição tem o seguinte aspeto:

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

Metadados

Cada parte tem uma propriedade de metadados. Um objeto tem apenas uma propriedade necessária: type. Esta cadeia indica ao portal qual o tipo de mosaico a mostrar. O nosso dashboard de exemplo utiliza estes tipos de mosaicos:

  1. Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart – utilizado para mostrar métricas de monitorização
  2. Extension[azure]/HubsExtension/PartType/MarkdownPart – utilizado para mostrar conteúdo markdown personalizado, como texto ou imagens, com formatação básica para listas, ligações, etc.
  3. Extension[azure]/HubsExtension/PartType/VideoPart – utilizado para mostrar vídeos do YouTube, channel 9 e qualquer outro tipo de vídeo que funcione numa etiqueta de vídeo HTML.

Cada tipo de peça tem as suas próprias opções de configuração. As propriedades de configuração possíveis são denominadas inputs, settingse asset.

Entradas

Geralmente, o objeto inputs contém informações que vinculam um mosaico a uma instância de recurso.

Cada MetricsChartPart um no nosso exemplo tem uma única entrada que expressa o recurso a vincular, representando o ID de recurso do Azure da VM, juntamente com informações sobre os dados que estão a ser apresentados. Por exemplo, eis o inputs objeto do mosaico que mostra as métricas Total de Rede no Total e Total de Saída da Rede .

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

Definições

O objeto de definições contém os elementos configuráveis de uma parte. No nosso dashboard de exemplo, a parte Markdown utiliza definições para armazenar o conteúdo de markdown personalizado, juntamente com um título e subtítulo configuráveis.

"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.microsoft.com/azure/virtual-machines/linux/quick-create-portal)\r\n1. [Create a Windows virtual machine](https://docs.microsoft.com/azure/virtual-machines/windows/quick-create-portal)\r\n1. [Create a virtual machine scale set](https://docs.microsoft.com/azure/virtual-machine-scale-sets/quick-create-portal)",
      "title": "Test VM Dashboard",
      "subtitle": "Contoso"
    }
  }
}

Da mesma forma, o mosaico de vídeo tem as suas próprias definições que contêm um ponteiro para o vídeo a reproduzir, uma definição de reprodução automática e informações de título opcionais.


"settings": {
  "content": {
    "settings": {
      "src": "https://www.youtube.com/watch?v=rOiSRkxtTeU",
      "autoplay": false
    }
  }
}

Recurso

Os mosaicos vinculados a objetos de portal geríveis de primeira classe (denominados ativos) têm esta relação expressa através do asset objeto. No nosso dashboard de exemplo, o mosaico da máquina virtual contém esta descrição do recurso. A idInputName propriedade indica ao portal que a entrada do ID contém o identificador exclusivo do recurso, neste caso o ID do recurso. A maioria dos tipos de recursos do Azure tem recursos definidos no portal.

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

Passos seguintes