A estrutura dos dashboards do Azure
Este documento explica a estrutura de um dashboard do Azure com o seguinte dashboard como exemplo:
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 order
parts
. 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
, rowSpan
e 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.
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:
Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart
– utilizado para mostrar métricas de monitorizaçãoExtension[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.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
, settings
e 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
- Saiba como criar um dashboard no portal do Azure ou programaticamente.
- Saiba como utilizar mosaicos de markdown nos dashboards do Azure para mostrar conteúdo personalizado.