Dashboard Basics

The Dashboard Builder allows you to generate new dashboards in under a minute, integrate custom widgets into existing dashboards, or effortlessly clone default dashboards for further refinement. Drill into any data ingested into Middleware with advanced filtering options by date range, metric value, or any metric attribute.

How Dashboards Work

The Dashboard Builder is a Graphical User Interface (GUI) based approach that enables users to create complex query logic without the added stress of learning a new query language. The metrics made available to users when constructing dashboards are dynamically generated based on the data that users ingest into Middleware.

For example, if you have instrumented Middleware's Infrastructure Agent and APM packages, you will have access to all of your host and application-level data.

For more information on instrumenting the Infra Agent and APM packages, navigate to the Quickstart page.

Create New Dashboard

To get started, navigate to the Dashboard Builder page, select Create Dashboard, label your new dashboard and press Save Changes:

You have the option to create a dashboard from an existing data source or create a widget for an existing dashboard. The following describes how to create a dashboard from an existing data source. For more information on creating a widget, navigate to the Create New Widget section.

Create a new dashboard by selecting a data source to start your dashboard with:

Select the metrics you would like to include as widgets in your dashboard:

Once you have added widgets to your dashboard, you will be taken directly to your dashboard:

Data will appear momentarily after you have created your new dashboard.

Create New Widget

Creating a new widget is useful for custom reporting and exploration. To create a new widget, navigate to the dashboard you would like to add a new widget to and select Add Widget and Create Widget:

Chart Types

Choose from one of the following types of charts for your widget:

Chart TypeUse Case
TimeseriesDescribes trends that are collected and ordered with respect to time
BarHelpful for visually comparing differences categorical data and groups
ListIdeal for comparing numerical data in combination with multiple attributes
Query ValueHelpful when you need to always know the status/value of a single metric
Pie ChartOrganizes and shows data as a percentage of a whole
Scatter PlotIdeal for comparing the relationship/correlation between two metrics
Tree PlotDisplays hierarchal relationship of your data as a function of size and color
Top List ChartUsed for identifying top elements given a metric and set grouping
Heatmap ChartHelps you identify the range of values that your data resides in with respect to time
Hexagon ChartIdeal for identifying which host and containers are running in your environment

Create Your Query

Create your query logic in the Metrics Section. Select the specific metric you would like to query, aggregate, and filter. Specify the interval at which data is ingested, create metric aliases to easily interpret what is displayed within the widget, and filter out unwanted data within your query.

For certain aggregation types, Average, Sum, Min and Max, there is a concept of an Aggregate By. To understand how Group By and Aggregate By work together, think of your queries like 2-dimensional arrays, where Aggregate By is a function that performs a transformation on each subarray and Group By performs an aggregate function on the aggregate outputs across all arrays.

Group By

The Group By field is the outer most aggregation made in your query. Each metric is allowed to have one Group By, and each individual metric in a single widget can have different Group Bys.

You can group your metrics by any resource attributes or metric attribute that Middleware has collected.

The below example tracks CPU utilization by host; it is grouping the system.cpu.utilization metric by all unique instances of the host.name metric:

When you first create a Widget the field will be set to Group By. The following table displays all available options for the Group By field:

Aggregation TypeDescription
Average ByAverage of all values in selected time range for given metric
Sum BySum of all values in selected time range for given metric
Minimum ByMinimum of all values in selected time range for given metric
Maximum ByMaximum of all values in selected time range for given metric
Any ByGathers all possible values in selected time range for given metric and/or attribute
Unique ByCount of unique values in selected time range for given metric and/or attribute
Count ByCount of all values in selected time range for given metric and/or attribute
Aggregated ByGroups all values in selected timerange for given metric and/or attribute

Aggregate By

The Aggregate By field is a nested aggregation technique that allows you to aggregate your initial query, the inner layer of data.

The below example is grouping the container.memory.percent metric by averaging the values of the container.name attributes and summing container.memory.percent:


The filter feature is used to remove unwanted metrics within your query. The list of available filters is pulled from each metric's attributes, and the values are based on the data pulled for that attribute in that timerange.

The below example is filtering out any host.id containing ip-172-31-13-218.us-east-2.compute.internal:

The following table displays all available filter functions:

!=Not Equal to
=Equal to
INChecks if value is IN collection of filter values
NOT INChecks if value is not IN collection of filter values
LIKEChecks if value and similar values in collection of filter values
NOT LIKEChecks if value and similar values not in collection of filter values
ILIKE (case insensitive)Same as LIKE but case insensitive
NOT ILIKE (case insensitive)Same as NOT LIKE but case insensitive
IS NULLChecks if value in collection of filter values IS NULL
IS NOT NULLChecks if value in collection of filter values IS NOT NULL


The Alias feature allows you to overwrite the metric name displayed in your widget for increased readability:


Time Aggregation

Users are able to define the interval at which data is aggregated. By default Middleware aggregates over 15 second windows. This is most useful when sending custom metrics at a non-default rate (e.g. every 1 minute).

Unit Format

The Unit Format dictates how the metric is displayed on the frontend. This will impact the values you see on the y-axis as well as in the hover over tooltip.

The following table displays all available Unit Formats:

Data RepresentationDescription
DefaultThe default unit format that metric is collected in
PercentageDisplays metric as a percentage of the whole (meant for proportion, rates, and relative quantities) rounded to two decimal places
Date FormatDisplays the timestamp at which the query was fired (in YYYY-MM-DD format)
Time AgoDisplays the amount of time passed since the last timestamp value was ingested (in hour-min-sec format)
Bytes to SizeDisplays metric in bytes (autoscaling to KB, MB, GB, TB...YB)
Byte RateDisplays metrics in bytes per second (autoscaling to KB, MB, GB, TB...YB)
Time UtilizationDisplays total amount of time metric is in use
CountDisplays number of times a metric has been queried over time
AgeDisplays the age of the timestamp value

Display Preferences

The Display Preferences section is where more granular display options will be available. For now, the only option is to select the timerange for the widget.

Global Time is the default value and tells the widget to listen to the global time range selector. Any other time range selected, e.g. 1 minute, will force the widget to ignore the global filter.

Name Your Widget

The Widget Title is the title that will be displayed at the top of your widget on the dashboard.

Clone Dashboards & Widgets

The clone feature allows you to experiment with new or slightly modified dashboard designs without disrupting your existing setup. Save time by cloning widgets instead of recreating them from scratch.

To clone a widget, click on the ellipses in the top right corner of the widget and select clone:

To clone a dashboard, click on the ellipses located in the dashboards table under Actions and select Clone:

Filter Dashboard Data

Live & History View

View your static dashboard data in History mode and view your real-time data in Live mode. Toggle History and Live mode on and off by clicking the button in the top right corner of your dashboard:

Date Range

The Date Range picker allows you to select the exact period of time to view your dashboard data. Choose predefined date ranges or select a custom range of days:


Filter metrics across your entire dashboard. The list of available filters is automatically built by the metadata pulled from all metrics being queried on the dashboard. Simply toggle on and off filters whenever you want to use them:

Next Steps

Need assistance or want to learn more about Middleware? Contact our support team in Slack.