How to use the Matrix tile
The Matrix tile shows health state, performance metrics and other information for a list of monitored
Tip: Too add more context to the data your displaying, you can also show it on an image background. For example, you can use a map as a background and show metrics for your servers on the map based on their location. For that, you need to use the Surface tile (How to use the Surface tile).
How does the Matrix tile work?
The Matrix tile works by using a row perspective to show a row of data for each of the
The same row perspective is used for all the
What if there is more than one row perspective common to the
If there is more than one common row perspective, then the highest ranked row perspective is used to show data for all the
What if there is not a row perspective common to the
You can manually select one of the row perspectives shown, but if this row perspective does not apply to some of the
Can I change what information is shown?
You can edit a row perspective on a per tile one off basis, for example to remove some elements if some data is missing, by choosing custom columns, see Custom - edit columns in the JSON editor. These edits will only apply to this tile on this dashboard.
Can I create new row perspectives?
To create a new row perspective to be used by more than one tile, see How to create and modify row perspectives. These row perspectives can then be used in other tiles.
How to configure a Matrix tile
Add a new tile to a dashboard or perspective and choose
Resources > Matrix tile.Scope:
Configure the scope to define the
resources you want to show.Scope options on dashboardsTip: If you experience any problems with scoping tiles, you'll find FAQs and help in the article How to scope tiles.
Note: By default, results are shown across all subscriptions (unless the subscription option is chosen to specify only one or more subscriptions).
Filter by tenant By default results are shown across all tenants. In Dashboard Server 4.7 and above a user who has access to multiple tenants will see a filter by tenant option.
If you see the message "You do not have access to all of the tenants currently selected" or "Tenant ID could not be resolved"In a multi-tenant environment a user who does not have access to all tenants will see this message if they attempt to edit a scope containing tenants that they do not have access to. This may be because:
- One Dashboard Server admin has added a tile scoped to tenants that other Dashboard Server admins do not have permissions to.
- The customer/tenant is no longer serviced by this Customer Service Provider (CSP), so the tenant has been permanently removed for all Dashboard Server admins.
Symptoms
A tile scope shows:
"You do not have access to all of the tenants currently selected. Click here to reset which will remove those tenants from the scope."
Tenants the user does not have access to show as:
"Tenant ID could not be resolved"
Procedure
The message warns users that they do not have permissions to all the tenants in the scope.
If the user chooses to reset and therefore edit the scope then the tenants that they do not have access to will be removed. If saved this scope will also have those tenants removed for users who do have access to them.
It is not possible for the user to edit the scope without those tenants being removed from the scope.
Where a tenant has been removed permanently you may wish to reset the scope to remove the unresolvable tenants.
List List allows you to select several individual items to show.
You can add multiple
items . To remove anitem click the x to the right of its name.Tip: Start typing and after two characters you'll see suggestions that match the name appear.
Note: It depends on the tile what happens when you select more than one item. For example, when you select two virtual machines for a Status tile, you'll see the status of those VMs individually. When you select two virtual machines for a Cost Management tile, you'll see the cost for the two VMs added together.
Resource group Select one or more resource groups.
Filter by type:
Tick filter by type to only show resources of a particular type within the chosen resource group.
Subscription Select one or more subscriptions from the dropdown box if you wish to restrict results to only one or more subscriptions. When this is not used results are shown across all subscriptions.
Filter by type:
Tick filter by type to only show resources of a particular type within the chosen subscription.
Tags Select items with a particular tag. Add the tag name and the tag value you want to use to search for. If you select multiple tags, the search automatically 'ANDs' the tags which means the scope only contains items which are tagged with all the tags listed.
Filter by type:
Tick filter by type to only show resources of a particular type within the chosen tag(s).
Type Scope type can be used to show all resources of a particular type, for example all databases across all subscriptions, by typing
databases
and selectingSQL databases
.Show hidden types This works in the same way as the Show hidden types option in the Azure portal.
Hidden types include some ancillary resources which are created/managed by Azure infrastructure. It might be useful to display these resources when cleaning up your resource groups or subscriptions.
Scope options on perspectivesNote: If you never used a perspective, you should read Working with perspectives before scoping tiles on perspectives.
The power of perspectives is that tiles on a perspective can use a dynamic scope. A dynamic scope considers the currently viewed
resource . A dynamic scope consists of two different states:the configuration of the scope in the tile (for example, "consider child objects of type logical disk for the currently viewed object")
the actual resolved scope that depends on which
resource you are currently viewing ("this object has 5 child objects of type logical disk")
After configuring the dynamic scope once in the tile, you'll get different results depending how the scope is resolved on the different
resources you are viewing.On perspectives, you can scope tiles to:
this resource
(only on perspectives for resources)The tile's scope will be the resolved to the resource that is currently viewed. child resources
(only on perspectives for resource groups and subscriptions)When you select this option, the scope of the tile will be resolved to all resources that are in the group or subscription that is currently viewed.
If you want to narrow the scope down to a specific type of resource in the group or subscription, you can filter for one specific type of resource.
other resources Gives you the normal, non-dynamic scope options you are used to when scoping tiles on dashboards. This means the tile will not dynamically adapt it's content to the currently viewed
resource , it will always show data for the staticresource picked here.Since the power of perspectives is that their tiles can show data for different
resources depending on whatresource is currently being viewed, you should only select this option when you are sure that there is no relationship between the desired scope and the currently viewedresource .Columns:
By default the Matrix tile is set to use dynamic columns:
Dynamic - using row perspectives
In dynamic mode the columns are automatically populated by a row perspective that is useful for your scope. Depending on your scope, there might be additional predefined row perspectives for you to choose from. The row perspective determines the columns you are seeing in the matrix.
Custom - edit columns in the JSON editor
Alternatively, you can select custom columns, where you can modify the predefined row perspective in a JSON editor. When you switch from dynamic to custom, the row perspective you chose under dynamic will already be inserted in the JSON editor as a template. Here you can edit the columns, add new ones or change their order.
You can make simple edits by cutting and pasting code snippets to change their order or simply deleting the code block for a column you don't need.
Tip: If you change the configuration by using custom columns, you can save those settings as a row perspective to make them available here in the future (How to create and modify row perspectives).
If you want to insert new columns, use the following reference for each cell type:
Code snippets for cell types:
StatusDisplays the health state of a resource and its display name.
Configuration
Example:
Copy{
"title": "State",
"_type": "celltile/azure-status",
"config": {
"display": {
"showStatusIcon": false
}
}
}Type:
"celltile/
azure-
status"
Display Properties:
"showStatusIcon"
:true
will show the status icon indicator.false
will hide the icon. The default value istrue
."labelTemplate"
a mustache template to render as custom label.Source Properties: None
Status BlockDisplays the health state of an
resource as simple colored block, with the color indicating the health state.Configuration Example:
Copy{
"title": "Status",
"_type": "celltile/azure-status-block",
"config": {
"display": {
"fullWidth": true
}
}
}Type:
celltile/
status-blockazure-
Display Properties:
"fullWidth"
:true
the block will fill the available column width,false
will use a fixed width. The default value isfalse
."labelTemplate"
a mustache template to render as custom label.Source Properties: None
Custom TextRenders a custom mustache template and displays the result in the cell.
Configuration Example:
Copy{
"title": "Resource Group & Location",
"_type": "celltile/text",
"config": {
"display": {
"contentTemplate": "{{resourceGroup}} | {{location}}"
}
}
}Type:
celltile/text
Display Properties:
"contentTemplate"
a mustache template to render. Can contain any valid template, the contextresource for the current row will be provided as the template context.Example content templates:
- Display the Resource group and Location:
"{{resourceGroup}} | {{location}}"
- Display the SKU for a virtual machine:
"{{properties.hardwareProfile.vmSize}}"
- Display the Template
"{{#if properties.storageProfile.imageReference}}{{properties.storageProfile.imageReference.offer}} {{properties.storageProfile.imageReference.sku}}{{else}}{{properties.storageProfile.osDisk.osType}}{{/if}}"
Source Properties: None
CostShows the cost of the resource based on the timeframe selected.
Configuration Example:
Copy{
"title": "Cost (30 Days)",
"_type": "celltile/azure-cost",
"config": {
"source": {
"timeframe": {
"range": "last30days",
"type": "fixed"
}
}
}
}Type:
celltile/azure-cost
Display Properties: None
Source Properties:
"timeframe"
Timeframe consists of two properties one for the range and the other for the type. Acceptable range values are:"last7days"
,"last30days"
,"last3months"
,"last6months"
,"last12months"
.Optional: Using a specific timeframeDefault timeframe:
By default, all cell tiles in the Matrix tile adapt to the page timeframe.
What is the page timeframe?The page timeframe is the timeframe setting a dashboard
or perspective is currently using. When a user changes the page timeframe, all tiles that use the page timeframe will adapt to the new timeframe. Tiles that don't use the dynamic page timeframe aren't affected and won't change.Setting a specific timeframe:
You can set a fixed timeframe for cells by adding
timeframe
as asource
property:Copy"source": {
"timeframe": {
"type": "fixed",
"range": "last24hours"
},Properties
range last1hour
,last12hours
,last24hours
,last7days
,last30days
,last3months
,all
Note: You need to make sure that the data source supports the timeframe you set
(for example the Cost cell tile does not work with 1 hour or 12 hour since the timeframe is too short for the API to get data) .type fixed
= use fixedrange
valueinherit
= use page timeframe (default)BarDisplays a bar graph that visualizes both a number and the resulting bar width based on the number value.
Configuration Example:
Copy{
"title": "Network In (KB)",
"_type": "celltile/azure-bar",
"config": {
"display": {
"valueTemplate": "{{value ? (value/1024).toFixed(2) : '0'}}"
},
"source": {
"metric": "Network In"
}
}
}Type:
celltile/
azure-
bar
Display Properties:
"valueTemplate"
mustache template to execute that processes the"value"
to be rendered as the bar graph label. By default this template is"{{value ? Math.min(value, 100) : ''}}"
"height"
in pixels of the bar visualization.Source Properties:
The
"metric"
properties should be set to the appropriate metric to be retrieved by that data-source.Example showing network out usage with the value keeping only two decimals formatted in valueTemplate:
Copy{
"title": "Network Out (KB)",
"_type": "celltile/azure-bar",
"config": {
"display": {
"valueTemplate": "{{value ? (value/1024).toFixed(2) : '0'}}"
},
"source": {
"metric": "Network Out"
}
}
}Optional: Using a specific timeframeDefault timeframe:
By default, all cell tiles in the Matrix tile adapt to the page timeframe.
What is the page timeframe?The page timeframe is the timeframe setting a dashboard
or perspective is currently using. When a user changes the page timeframe, all tiles that use the page timeframe will adapt to the new timeframe. Tiles that don't use the dynamic page timeframe aren't affected and won't change.Setting a specific timeframe:
You can set a fixed timeframe for cells by adding
timeframe
as asource
property:Copy"source": {
"timeframe": {
"type": "fixed",
"range": "last24hours"
},Properties
range last1hour
,last12hours
,last24hours
,last7days
,last30days
,last3months
,all
Note: You need to make sure that the data source supports the timeframe you set
(for example the Cost cell tile does not work with 1 hour or 12 hour since the timeframe is too short for the API to get data) .type fixed
= use fixedrange
valueinherit
= use page timeframe (default)Performance as SparklineDisplays a sparkline graph visualization of Azure Monitor metrics data over time for a given resource.
Configuration Example:
Copy{
"title": "CPU",
"_type": "celltile/azure-sparkline",
"config": {
"source": {
"metric": "Percentage CPU"
}
}
}Type:
celltile/
azure-
sparkline
Display Properties:
"height"
in pixels of the graph."width"
in pixels of the graph."verticalMargin"
the margin above and below the graph."labelTemplate"
a mustache template to render as the label, context is latest performance value as a number value."fill"
if set to true it will fill the area under the sparkline to display in a line-graph style.Source Properties:
The
"metric"
properties should be set to the appropriate metric to be retrieved by that data-source.Example metrics:
`"metric": "Disk Read Operations/sec" - display the disk read operation speed.
`"metric": "Percentage CPU" - Shows the CPU usage of the resource.
Optional: Using a specific timeframeDefault timeframe:
By default, all cell tiles in the Matrix tile adapt to the page timeframe.
What is the page timeframe?The page timeframe is the timeframe setting a dashboard
or perspective is currently using. When a user changes the page timeframe, all tiles that use the page timeframe will adapt to the new timeframe. Tiles that don't use the dynamic page timeframe aren't affected and won't change.Setting a specific timeframe:
You can set a fixed timeframe for cells by adding
timeframe
as asource
property:Copy"source": {
"timeframe": {
"type": "fixed",
"range": "last24hours"
},Properties
range last1hour
,last12hours
,last24hours
,last7days
,last30days
,last3months
,all
Note: You need to make sure that the data source supports the timeframe you set
(for example the Cost cell tile does not work with 1 hour or 12 hour since the timeframe is too short for the API to get data) .type fixed
= use fixedrange
valueinherit
= use page timeframe (default)Timeframes:
By default, all cell tiles in the Matrix tile adapt to the page timeframe.
What is the page timeframe?The page timeframe is the timeframe setting a dashboard
or perspective is currently using. When a user changes the page timeframe, all tiles that use the page timeframe will adapt to the new timeframe. Tiles that don't use the dynamic page timeframe aren't affected and won't change.Using a specific timeframe for cell tilesA specific timeframe can only be set in the cell types Bar,
Cost, and Performance as Sparkline.You can set a fixed timeframe for cells by adding
timeframe
as asource
property:Copy"source": {
"timeframe": {
"type": "fixed",
"range": "last24hours"
},Properties
range last1hour
,last12hours
,last24hours
,last7days
,last30days
,last3months
,all
Note: You need to make sure that the data source supports the timeframe you set
(for example the Cost cell tile does not work with 1 hour or 12 hour since the timeframe is too short for the API to get data) .type fixed
= use fixedrange
valueinherit
= use page timeframe (default)- Display the Resource group and Location:
Display:
Size:
Change the setting from default to large when you want to use the matrix tile on a wall monitor. Icons and fonts will be larger and better to read.
Click done to save the tile.
Reference
Cell tile definitions
Displays the health state of a resource and its display name.
Configuration
Example:
{
"title": "State",
"_type": "celltile/azure-status",
"config": {
"display": {
"showStatusIcon": false
}
}
}
Type:"celltile/
azure-
status"
Display Properties:
"showStatusIcon"
: true
will show the status icon indicator. false
will hide the icon. The default value is true
.
"labelTemplate"
a mustache template to render as custom label.
Source Properties: None
Displays the health state of an
Configuration Example:
{
"title": "Status",
"_type": "celltile/azure-status-block",
"config": {
"display": {
"fullWidth": true
}
}
}
Type:celltile/
azure-
Display Properties:
"fullWidth"
: true
the block will fill the available column width, false
will use a fixed width. The default value is false
.
"labelTemplate"
a mustache template to render as custom label.
Source Properties: None
Renders a custom mustache template and displays the result in the cell.
Configuration Example:
{
"title": "Resource Group & Location",
"_type": "celltile/text",
"config": {
"display": {
"contentTemplate": "{{resourceGroup}} | {{location}}"
}
}
}
Type:celltile/text
Display Properties:
"contentTemplate"
a mustache template to render. Can contain any valid template, the context
Example content templates:
- Display the Resource group and Location:
"{{resourceGroup}} | {{location}}"
- Display the SKU for a virtual machine:
"{{properties.hardwareProfile.vmSize}}"
- Display the Template
"{{#if properties.storageProfile.imageReference}}{{properties.storageProfile.imageReference.offer}} {{properties.storageProfile.imageReference.sku}}{{else}}{{properties.storageProfile.osDisk.osType}}{{/if}}"
Source Properties: None
Shows the cost of the resource based on the timeframe selected.
Configuration Example:
{
"title": "Cost (30 Days)",
"_type": "celltile/azure-cost",
"config": {
"source": {
"timeframe": {
"range": "last30days",
"type": "fixed"
}
}
}
}
Type:celltile/azure-cost
Display Properties: None
Source Properties:
"timeframe"
Timeframe consists of two properties one for the range and the other for the type. Acceptable range values are: "last7days"
, "last30days"
, "last3months"
, "last6months"
, "last12months"
.
Default timeframe:
By default, all cell tiles in the Matrix tile adapt to the page timeframe.
The page timeframe is the timeframe setting a dashboard
Setting a specific timeframe:
You can set a fixed timeframe for cells by adding timeframe
as a source
property:
"source": {
"timeframe": {
"type": "fixed",
"range": "last24hours"
},
Properties
range |
Note: You need to make sure that the data source supports the timeframe you set |
type |
|
Displays a bar graph that visualizes both a number and the resulting bar width based on the number value.
Configuration Example:
{
"title": "Network In (KB)",
"_type": "celltile/azure-bar",
"config": {
"display": {
"valueTemplate": "{{value ? (value/1024).toFixed(2) : '0'}}"
},
"source": {
"metric": "Network In"
}
}
}
Type:celltile/
azure-
bar
Display Properties:
"valueTemplate"
mustache template to execute that processes the "value"
to be rendered as the bar graph label. By default this template is "{{value ? Math.min(value, 100) : ''}}"
"height"
in pixels of the bar visualization.
Source Properties:
The "metric"
properties should be set to the appropriate metric to be retrieved by that data-source.
Example showing network out usage with the value keeping only two decimals formatted in valueTemplate:
{
"title": "Network Out (KB)",
"_type": "celltile/azure-bar",
"config": {
"display": {
"valueTemplate": "{{value ? (value/1024).toFixed(2) : '0'}}"
},
"source": {
"metric": "Network Out"
}
}
}
Default timeframe:
By default, all cell tiles in the Matrix tile adapt to the page timeframe.
The page timeframe is the timeframe setting a dashboard
Setting a specific timeframe:
You can set a fixed timeframe for cells by adding timeframe
as a source
property:
"source": {
"timeframe": {
"type": "fixed",
"range": "last24hours"
},
Properties
range |
Note: You need to make sure that the data source supports the timeframe you set |
type |
|
Displays a sparkline graph visualization of Azure Monitor metrics data over time for a given resource.
Configuration Example:
{
"title": "CPU",
"_type": "celltile/azure-sparkline",
"config": {
"source": {
"metric": "Percentage CPU"
}
}
}
Type:celltile/
azure-
sparkline
Display Properties:
"height"
in pixels of the graph.
"width"
in pixels of the graph.
"verticalMargin"
the margin above and below the graph.
"labelTemplate"
a mustache template to render as the label, context is latest performance value as a number value.
"fill"
if set to true it will fill the area under the sparkline to display in a line-graph style.
Source Properties:
The "metric"
properties should be set to the appropriate metric to be retrieved by that data-source.
Example metrics:
`"metric": "Disk Read Operations/sec" - display the disk read operation speed.
`"metric": "Percentage CPU" - Shows the CPU usage of the resource.
Default timeframe:
By default, all cell tiles in the Matrix tile adapt to the page timeframe.
The page timeframe is the timeframe setting a dashboard
Setting a specific timeframe:
You can set a fixed timeframe for cells by adding timeframe
as a source
property:
"source": {
"timeframe": {
"type": "fixed",
"range": "last24hours"
},
Properties
range |
Note: You need to make sure that the data source supports the timeframe you set |
type |
|
Using a specific timeframe in cell tiles
A specific timeframe can only be set in the cell types Bar,
Default timeframe:
By default, all cell tiles in the Matrix tile adapt to the page timeframe.
The page timeframe is the timeframe setting a dashboard
Setting a specific timeframe:
You can set a fixed timeframe for cells by adding timeframe
as a source
property:
"source": {
"timeframe": {
"type": "fixed",
"range": "last24hours"
},
Properties
range |
Note: You need to make sure that the data source supports the timeframe you set |
type |
|
FAQs
Why can't I sort the Matrix tile columns?
The Matrix tile isn't really a table in the traditional sense. It is a grid or "matrix" of cell tiles - each cell tile is a separately rendered entity and the data is retrieved for each column of tiles independently from other columns. This means that the data for each column can and will load at different times.
When sorting a traditional table, either a single query or a single joined dataset is being used to sort, process and display the entire table structure. This is not the case with the Matrix tile due to the independently queried columns and asynchronously rendered matrix of cell tiles.