Docs » Charts » Gaining Insight Through Analytics

Gaining Insight Through Analytics 🔗

Need some context?   Planning and Creating Charts      Plotting Metrics and Events in the Chart Builder

SignalFx analytics can change a chart that is displaying raw metric data into a powerful tool that gives you a deeper understanding of patterns and trends, so you can more effectively monitor infrastructure, application or service health. In this section, we provide instructions for how to:

This section assumes you are familiar with the following:

Comparing aggregates by service or other metadata 🔗

When you are looking at infrastructure metrics for a good-sized fleet of hosts, virtual machines or containers, it is often more instructive to look at them at an aggregate level and compare the aggregates than to look at individual instances. Many of the analytics functions allow you to group the output by metadata, which serves this purpose perfectly.

  • Select the metric you want to compare at an aggregate level (e.g. across services) and enter its name in the Signal field for plot A. In this example, we are plotting demo.trans.latency.
  • In the Analytics field, select the function you want to apply, such as mean:aggregation. The chart now displays a single plot line displaying the mean value of the aggregation of all the datapoints.
  • In the group‑by dropdown, select the metadata you want to group by, such as service (if you are sending in a dimension named “service”), aws_availability_zone (if you are using AWS) or other metadata. In this example, we chose demo_datacenter.
  • Instead of seeing individual metrics on a per-host, VM or container basis, you will now see it aggregated and grouped by the metadata you selected. As the data table shows, each plot line represents one of the two demo_datacenters.

Retaining peaks and valleys in longer time ranges 🔗

By default, SignalFx selects a rollup that is appropriate for the time range and chart resolution you have selected. For example, let’s assume you are sending a metric every 10 seconds to SignalFx, and that its metric type is gauge. If you are looking at a month’s worth of that metric in a chart, there will be too many datapoints to clearly see (6 datapoints per minute x 60 minutes per hour x 24 hours per day x 30 days per month = 259,200 datapoints!).

In this situation, SignalFx will apply the default visualization rollup to the metric: average, because it is a gauge. This rollup will have the effect of averaging out the data, and make peaks or valleys that would have been visible at the higher resolution less apparent.


To retain the peaks or valleys, you can change the rollup to max or min, whichever is more relevant to your metric. The Y-axis value range may change from what it was in the original visualization. In this illustration, we cloned plot A and changed the rollup to max in plot B (and changed the color in plot B to make the differences easier to see). (To clone a plot line, open the plot’s Actions menu at the far right of the plot line, then select Clone. For information on changing plot color, see Setting options in the plot configuration panel.)


To make peaks and valleys even more noticeable, increase the chart resolution. Here, we changed it from the default to Very High. In this case, the differences are most visible at right (the past week).


Of course, choosing a shorter time frame increases visibility as well. Here, we changed the time range from the past month to the past week.


For more information about the interactions between rollups, chart resolution, and analytics, see Chart Resolution and Rollups.

Correlating multiple metrics 🔗

It is often useful to visualize multiple metrics on the same chart so as to more easily correlate their behavior. For example, you may want to look at the number of transactions happening per second alongside the latency of the transactions. SignalFx lets you display as many metrics as you want on a single chart, and gives you two Y-axes in case the ranges of the metrics’ values are significantly different.

  • Select the metric you want to compare and enter its name in the Signal field for plot A. In this example, we are using demo.trans.latency.
  • Select the second metric and use it in plot B. We’ve selected demo.trans.count.
  • Using the Visualization type option for each plot line, select different types for A and B, such as Column for A and Line for B. In this example, we also used plot configuration options to change the color of plot line A, to enhance visibility.

Viewing weekly, daily or hourly comparisons 🔗

If time of day or week matters for understanding whether your apps or infrastructure are performing within normal bounds, or if your business sees cyclical or periodic demand, e.g. weekdays and weekends are very different, then you should create charts that highlight the change from one week, one day, one hour etc. to the next. (Note that SignalFx allows you to do comparisons using whatever timeframe you want, not just these intervals.)

  • Use the first plot (plot A) to show the metric you care about, then clone A to create plot B. (To clone a plot line, open the plot’s Actions menu at the far right of the plot line, then select Clone.) In this example, we are using as our signal.
  • Add a Timeshift function to plot B, entering a time range over which the change matters, e.g. 5m for 5 minutes, 2d for 2 days, 1w for 1 week.


  • In plot C, enter A-B to see the difference between now and, say, a week ago.
  • Use the plot configuration panel to specify an area visualization for plot C.

Using percentages or ratios 🔗

In many cases, you may want to see percentages or ratios rather than raw metric. For example, the ratio of return codes that signify failure to those that signify success, or the percentage of cache hits out of total cache accesses (hits + misses). In the below example, we construct a percentage of unhealthy hosts out of the total host population.

  • Use the first plot (plot A) to show one of the metrics you care about, e.g. the number of unhealthy hosts in your system.
  • Use the second plot (plot B) to show the other metric you want, e.g. the number of healthy hosts.
  • In plot C, enter A/(A+B) and add a scale:100 function to express the ratio as a percentage.

  • Alt-click on the eye icon next to plot C to hide the other plots. You are left with a chart that shows the percentage of hosts that are unhealthy over time.
  • Edit the plot name for plot C, so useful information shows up when you hover over the chart (before and after shown below) or view the data table.

Using percentiles to see population overviews 🔗

When you want to get a quick overview of a population, a distributed percentile chart is a good option. To construct such a chart, use non-stacked area charts, select Show on-chart legend in the Chart Options tab, then show the plots like the following:

  • p10. In the first plot (plot A), enter the metric and filters you want, then use the Percentile function and enter 10 as the value.
  • median. Clone plot A and use 50 as the value.
  • p90. Clone plot B and use 90 as the value.

This illustration shows what such a chart might look like.


To see specific values, hover over different points on the chart or display the data table.

Showing Top or Bottom N lists 🔗

Top or bottom N charts are great for showing simple outliers or rankings.

  • Enter a metric for plot A. We chose disk.utilization.
  • Select List as your chart type.
  • Apply the analytics function Top or Bottom, then choose either the number of values you want to see in the list or the percentage range you want to see. We chose Top 5 and specified Count.
  • To reduce redundant data on the chart, use the Data table columns option in the Chart Options tab to hide the plot name.
  • Sort Top N charts by descending value, or Bottom N by ascending value.


To make the chart even easier to read, use the Data table columns option to hide more fields. In this illustration, the only field being displayed is host.


Seeing changes in distribution 🔗

A histogram is a good way to look at the distribution of a population at a single point in time. SignalFx provides histograms so you can look at the change in that distribution over time. This is useful for surfacing unexpected changes, e.g. in the latencies of requests served by a cluster.

  • Select a metric that is being sent from a relatively large number of sources. In this case, we chose demo.trans.latency.
  • Choose the histogram graph type.


Smoothing out peaks and valleys 🔗

Do you want to smooth out peaks and valleys in your data, to see general patterns from one period to the next? If you can’t tell at a glance if a value is generally steady, rising, or falling, you want to see data normalized in a moving average format, from one time period to the next. To do this, use the Transformation option instead of Aggregation. The Transformation option is available with the following analytics functions: Mean, Minimum / Maximum, Percentile, Sum, and Variance. For Mean, Minimum, Maximum, and Sum, you can specify either a moving window (the past number of minutes, hours, etc.) or a calendar time window (over the past day, week, month, etc.)

  • Determine an appropriate interval for applying a moving average.
  • Use the Mean analytics function, select the Transformation option, then select the appropriate time window option.
  • Enter your interval, e.g. 5m.

In the following illustration, values and moving averages are displayed for disk.utilization as follows:

  • Actual values -grey
  • 5-minute moving average - magenta
  • 30-minute moving average - green
  • 1-hour moving average - orange

Of course, you can also hide plot lines to make the chart easier to read:


What’s next? 🔗

For details about all available analytics functions, see the Analytics Reference Guide.

Once you have developed charts to help you proactively monitor your system, the natural next step is to want to view and receive alerts when values reach certain criteria. For information on how to do this, see Detectors and Alerts.