The Matrix tile shows detailed health state, performance metrics and other information for a list of monitored objects. This supersedes the v3 Dynamic table and the v2 KPI plugin.
The Matrix tile can be configured to show dynamic or custom columns.
- In dynamic mode the columns are automatically populated by predefined perspectives. You can choose which row perspective is used and create your own row perspective.
- The custom configuration uses a JSON editor to edit the visible columns using 'cell tile' definitions described below.
For wall monitor displays a large high-impact display mode is available.
Walkthrough: Configuring a Matrix tile
Reference: Cell tile definitions
Why can't I sort the Matrix tile columns?
You may also like to watch the v4 webinar taking a deep dive into the Matrix tile (43 mins):
Walkthrough: Configuring a Matrix tile
-
Create a new dashboard or edit an existing one and add a new tile. Select the Matrix tile from the tile selection list.
-
Provide a scope to show a list of the objects you want to see in your table.
For more information see How to scope tiles on dashboards and How to scope tiles on perspectives. For more information about using Advanced > Criteria see How to use criteria when scoping objects
By default dynamic mode is selected, so a table of dynamically generated column configuration will be displayed for your selection based on the objects shown.
-
The columns section allows you to change from dynamic columns mode to custom columns mode. In dynamic mode you can choose which row perspective is used under the perspective heading. You can also save your own configuration as a named row perspective.
-
Select custom mode to switch to the JSON editor. As nothing has been edited yet, the columns from the last selected perspective will be provided as the default column configuration. This makes simple edits, such as removing a column, easy.
-
Select the JSON for a column to remove, such as the CPU JSON shown below, (remembering to include the final comma):
{
"_type": "celltile/bar",
"config": {
"display": {
"valueTemplate": "{{( Math.min(value, 100) )}}"
},
"source": {
"countername": "Current Connections",
"objectname": "Web Service"
}
},
"title": "CPU"
}, - Right-click and select cut.
-
Paste the JSON in elsewhere to re-order the columns, for example after the Memory JSON:
{
"_type": "celltile/scomperf-as-sparkline",
"config": {
"display": {
"labelTemplate": "{{ ( value ? Math.round(value) : '0' ) }}%"
},
"source": {
"countername": "% Processor Time",
"objectname": "Processor Information"
}
},
"title": "Mem"
},
{
"_type": "celltile/bar",
"config": {
"display": {
"valueTemplate": "{{( Math.min(value, 100) )}}"
},
"source": {
"countername": "Current Connections",
"objectname": "Web Service"
}
},
"title": "CPU"
}, -
Click Apply Changes to see the result.
- Click next.
- The display section allows you to change to large display, for a wall monitor. Leave this as default for now.
- Click done.
You can also save your configuration as a named row perspective.
Reference: Cell tile definitions
There are several cell tile definitions which can be used in the Matrix column custom configuration, which are described below.
Status
Displays the health state of an object, its display name and Health State Summary.
Configuration
Example:
{
"title": "State",
"_type": "celltile/status",
"config": {
"display": {
"showStatusIcon": false
}
}
}
Type: "celltile/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. Can contain any valid template, the context object for the current row will be provided as the template context. Default if none provided is {{displayName}}
.
Source Properties: None
Status Block
Displays the health state of an object as simple coloured block, with the colour indicating the health state.
Configuration Example:
{
"title": "State",
"_type": "celltile/status-block",
"config": {
"display": {
"fullWidth": true
}
}
}
Type: celltile/status-block
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. Can contain any valid template, the context object for the current row will be provided as the template context. Default if none provided is {{displayName}}
.
Source Properties: None
Monitor Status
Displays the health state of a specific entity monitor for the current object as a simple coloured block, with the colour indicating the health state.
Configuration Example:
{
"title": "State",
"_type": "celltile/monitor-status",
"config": {
"source": {
"monitorIds": [ "e3ab86a1-34fa-35b5-b864-da4db993c0f5" ]
}
}
}
Type: celltile/monitor-status
Display Properties:
"fullWidth"
: true
will fill the available column width. false
will use a fixed width. The default value is false
.
Source Properties:
"monitorIds"
array of SCOM monitor IDs.
Custom Text Template
Renders a custom mustache template and displays the result in the cell.
Configuration Example:
{
"title": "Domain DNS",
"_type": "celltile/text",
"config": {
"display": {
"contentTemplate": "{{properties.domainDnsName}}"
}
}
}
Type: celltile/text
Display Properties:
"contentTemplate"
a mustache template to render. Can contain any valid template, the context object for the current row will be provided as the template context.
Example content templates:
- Display the IP address:
"{{(properties.ipAddress || '').split(',')[0]}}"
- Display size value in Gigabytes:
"{{Math.round(properties.size / 10737418.24) /100}} GB"
- Display the file system e.g. C:\
"{{properties.fileSystem}}"
Source Properties: None
Service Level Agreement (SLA) Gauge
Displays a small SLA gauge showing a visualisation of the target value from 0-100%. Colour, shape (how filled) and label of the gauge indicate the value and status.
Configuration Example:
{
"title": "Uptime Target",
"_type": "celltile/sla",
"config": {
"source": {
"sloId": "b93343a0-be4a-cce1-5134-945a94569e22"
}
}
}
Type: celltile/sla
Display Properties: None
Source Properties: "sloId"
this is the SCOM ID of the Service Level Objective (SLO) object, and is mandatory.
To find the SCOM ID of the Service Level Objective (SLO) object, temporarily add an SLA tile configured to the SLO you require. Click the edit tile button and then the edit JSON button
. The SCOM ID of the SLO will be shown in the JSON after
"sloId":
Bar
Displays a bar graph that visualises both a number and the resulting bar width based on the number value.
Configuration Example:
{
"title": "SQL Connections",
"_type": "celltile/bar",
"config": {
"source": {
"objectname": "SQL DB Engine:General Statistics",
"countername": "User Connections"
}
}
}
Type: celltile/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 visualisation.
Source Properties:
The "objectname"
and "countername"
properties should be set to the appropriate metric to be retrieved by that data-source.
Example showing memory usage with rounded value formatted in valueTemplate:
{
"title": "Memory Usage Bar",
"_type": "celltile/bar",
"config": {
"source": {
"objectname": "Memory",
"countername": "PercentMemoryUsed"
},
"display": {
"valueTemplate": "{{(value ? Math.floor(value) : 0)}}"
}
}
}
Signal Strength
Displays a visualisation to indicate a numeric value in blocks. Typically used to show a small number of items as blocks e.g. number of CPUs from 1-16.
Configuration Example:
{
"title": "#CPUs",
"_type": "celltile/signalstrength",
"config": {
"display": {
"valueProperty": "properties.logicalProcessors"
}
}
}
Type: celltile/signalstrength
Display Properties:
"valueProperty"
property accessor to execute and retrieve the numeric value.
"height"
in pixels of each bar visualisation.
"width"
in pixels of each bar visualisation.
Source Properties: None.
SCOM Monitor
Displays the status of a SCOM monitor object. The target of the monitor must be the object that the tile is scoped to.
Configuration Example:
{
"title": "Monitors",
"_type": "celltile/monitor",
"config": {
"source": {
"monitorIds": [ "e3ab86a1-34fa-35b5-b864-da4db993c0f5" ]
}
}
}
Type: celltile/monitor
Display Properties: None.
Source Properties: "monitorIds"
a monitor SCOM ID.
To find the SCOM ID of a monitor in SquaredUp browse to a server in SquaredUp, and click on the Monitored Entity perspective. In the Monitors section click on the monitor you need, for example Hardware Performance Rollup. The SCOM ID is shown in the URL immediately after id=
. For example, the SCOM ID for the monitor in the following URL is 29f76d4e-dbfe-b80d-d770-3679524a5ec6
http://servername/SquaredUpv4/drilldown/scommonitor?id=29f76d4e-dbfe-b80d-d770-3679524a5ec6&objectid=fb9564cd-3ff1-1b3b-88b1-096111a722d0
Heath State History
Displays a visualisation of the health state history of an object over a time period.
Configuration Example:
{
"title": "Health State History",
"_type": "celltile/timeseriesblocks",
"config": {
"source": {
"monitorIds": [
"e3ab86a1-34fa-35b5-b864-da4db993c0f5"
]
}
}
}
Type: celltile/timeseriesblocks
Display Properties:
"height"
as the height in pixels of each bar.
"fullWidth"
if set true, the tile will fill the available column width, else false will use a fixed width based on the width setting above. Default value is false.
Source Properties:
"monitorIds"
a monitor SCOM ID.
To find the SCOM ID of a monitor in SquaredUp browse to a server in SquaredUp, and click on the Monitored Entity perspective. In the Monitors section click on the monitor you need, for example Hardware Performance Rollup. The SCOM ID is shown in the URL immediately after id=
. For example, the SCOM ID for the monitor in the following URL is 29f76d4e-dbfe-b80d-d770-3679524a5ec6
http://servername/SquaredUpv4/drilldown/scommonitor?id=29f76d4e-dbfe-b80d-d770-3679524a5ec6&objectid=fb9564cd-3ff1-1b3b-88b1-096111a722d0
SCOM Performance as Sparkline
Displays a sparkline graph visualisation of SCOM performance data over time for a given object. When clicked, the graph will drilldown into the detailed SCOM performance view for the object.
Configuration Example:
{
"title": "CPU",
"_type": "celltile/scomperf-as-sparkline",
"config": {
"display": {
"height": 30,
"width": 120
},
"source": {
"objectname": "Processor Information",
"countername": "% Processor Time"
}
}
}
Type: celltile/scomperf-as-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 "objectname"
and "countername"
properties should be set to the appropriate metric to be retrieved by that data-source.
Example source properties:
"objectname": "Memory", "countername": "PercentMemoryUsed"
- display the percentage of memory utilisation
Example overriding both source and display configuration - this example shows bandwidth sparkline in Bytes per second:
"source": {
"objectname": "Web Service",
"countername": "Bytes Total/sec"
},
"display": {
"labelTemplate": "{{ ( value ? (value / 1000).toFixed(2).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') + ' KB/s' : '' ) }}"
}
The data-source graph binding object properties can be modified as required, this is the default but can be overridden in the config:
"bindings": {
"data": "dataPoints",
"timestamp": "key",
"value": "value"
}
Performance data for the tile is queried per column using the tile scope. This data needs to be grouped together for each object, so that it can be displayed correctly for the appropriate row. By default it is grouped assuming that the objects are unhosted or top-level objects such as Computers, Network Devices, or Distributed Applications. If your tile is scoped to hosted child objects such as disks, websites or databases then you will need to override the default grouping behaviour with the below example under the config section:
"transforms": [
{
"operator": "group",
"parameters": {
"keys": [
"managedEntityId"
]
}
},
{
"operator": "merge",
"parameters": {
"sourceKey": "id",
"targetKey": "key.managedEntityId"
}
}
]
Display
Large high-impact display mode for wall monitors
Large wall display mode is switched on in the display section of the tile configuration by changing the size option from default to large, for example:
Always link to row object
As well as provided per cell-tile object linking, where each column type will provide an appropriate drill-down when clicked, the Matrix tile can automatically link the entire row to the object drill-down for the row context object. To use this, check the always link to row object option.
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.