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 Type | Use Case |
---|---|
Timeseries | Describes trends that are collected and ordered with respect to time |
Bar | Helpful for visually comparing differences categorical data and groups |
List | Ideal for comparing numerical data in combination with multiple attributes |
Query Value | Helpful when you need to always know the status/value of a single metric |
Pie Chart | Organizes and shows data as a percentage of a whole |
Scatter Plot | Ideal for comparing the relationship/correlation between two metrics |
Tree Plot | Displays hierarchal relationship of your data as a function of size and color |
Top List Chart | Used for identifying top elements given a metric and set grouping |
Heatmap Chart | Helps you identify the range of values that your data resides in with respect to time |
Hexagon Chart | Ideal 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 Type | Description |
---|---|
Average By | Average of all values in selected time range for given metric |
Sum By | Sum of all values in selected time range for given metric |
Minimum By | Minimum of all values in selected time range for given metric |
Maximum By | Maximum of all values in selected time range for given metric |
Any By | Gathers all possible values in selected time range for given metric and/or attribute |
Unique By | Count of unique values in selected time range for given metric and/or attribute |
Count By | Count of all values in selected time range for given metric and/or attribute |
Aggregated By | Groups 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
:
Filters
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:
Filter | Description |
---|---|
!= | Not Equal to |
= | Equal to |
IN | Checks if value is IN collection of filter values |
NOT IN | Checks if value is not IN collection of filter values |
LIKE | Checks if value and similar values in collection of filter values |
NOT LIKE | Checks 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 NULL | Checks if value in collection of filter values IS NULL |
IS NOT NULL | Checks if value in collection of filter values IS NOT NULL |
Alias
The Alias feature allows you to overwrite the metric name displayed in your widget for increased readability:
Advanced
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 Representation | Description |
---|---|
Default | The default unit format that metric is collected in |
Percentage | Displays metric as a percentage of the whole (meant for proportion, rates, and relative quantities) rounded to two decimal places |
Date Format | Displays the timestamp at which the query was fired (in YYYY-MM-DD format) |
Time Ago | Displays the amount of time passed since the last timestamp value was ingested (in hour-min-sec format) |
Bytes to Size | Displays metric in bytes (autoscaling to KB , MB , GB , TB ...YB ) |
Byte Rate | Displays metrics in bytes per second (autoscaling to KB , MB , GB , TB ...YB ) |
Time Utilization | Displays total amount of time metric is in use |
Count | Displays number of times a metric has been queried over time |
Age | Displays 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:
Filters
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
- Dashboard Common Practices
- Intro to APM
- How to Create Alerts
- Custom Telemetry Ingestion
- Getting Started With Real User Monitoring (RUM)
Need assistance or want to learn more about Middleware? Contact our support team in Slack.