Docs » Charts » Plotting Metrics and Events in the Chart Builder

Plotting Metrics and Events in the Chart Builder


Need some context?   Planning and Creating Charts     Chart Terminology Quick Reference


Charts are highly customizable. To get an overview of the tools and options available, familiarize yourself with the Chart Builder.

../_images/chart-builder-with-legend.png

If you are editing an existing chart, you may want to start by configuring plot lines already on the chart (see Setting basic plot options and Setting options in the plot configuration panel).

Tip

This document describes how to use the Chart Builder to display metric data and events on charts. To easily create one or more simple charts, see Create Simple Charts and Dashboards; use the Chart Builder only if you are familiar with SignalFx charts and are ready to dive into its more advanced features.

Specifying a signal for a plot line

A signal is the metric you want to plot on the chart, to which you might add filters and/or apply analytics. Plot lines, or plots, are the building blocks of charts. A chart has one or more plots, and each plot is composed of the metric time series represented by the signal and its properties and dimensions, any filters, and any analytics applied.

Note

Instead of a metric, you can also enter a time series expression to create a composite or derived metric, or specify an event to be displayed on the chart.

Entering a metric name or tag

If you know the name of the metric you want to view, you can simply type its name directly into the signal field. SignalFx will use type-ahead search to show you any metrics that match what you are typing.

../_images/signal-typeahead.png

SignalFx lets you build a chart to plot a signal for which you have not yet started sending data. Just type in the name of the metric you expect to plot and press Enter. When data starts arriving for that signal, it will be displayed on the chart.

Using wildcards

You can use wildcards when entering a metric name into the Signal field.

  • If your metrics follow the naming conventions for Graphite metrics, see Graphite options for plots for information on using Graphite wildcards and node aliasing.
  • If you have integrated SignalFx with New Relic, see New Relic options for plots for information on identifying and using New Relic metrics in SignalFx.

Using the Metrics Sidebar to find a metric

You can also choose the signal by using the Metrics Sidebar to search for metric names, instead of typing one in directly. Click Browse next to the signal field (shown below) to display the Metrics Sidebar.

../_images/browse.png

In the Metrics Sidebar, select the Metrics checkbox to search for metrics. (Using the Events checkbox is discussed in Displaying events as they occur.) Using the Metrics Sidebar is the same as described in Finding metrics and events, except that each selected metric is added as a plot in the chart (instead of as one or more new charts).

Entering a time series expression instead of a signal

Another valid entry in the signal field is a time series expression: a mathematical expression that depends on one or more of the other plots in the chart. Expressions are useful for ratios, rates of change, or any other composite or derived metric you can think of that can be specified using a formula.

For example, suppose you want to display the percentage of cache hits for a system. If plot A displays a count of cache hits, and plot B displays a count of cache misses, you can use the following formula in plot C to display the percentage of cache hits:

(A/(A+B)) * 100

Tip

To see only the composite metric (in this case, C, the percentage value) on the chart, click the eye icon to the left of plots A and B to hide them from the display.

Determining the kind of entry a plot is displaying

If there is any potential for confusion about whether a text entry is an expression, a metric or an event, SignalFx will display different icons to help you disambiguate. A ruler represents a metric; a calculator, a mathematical expression; a diamond, a custom event; and a warning triangle, an alert (event triggered by a detector).

Working with multiple plots

Of course, a chart can contain many plots. After adding multiple plots, you might want to reorder them to make the chart more readable, or to control how they are displayed in the chart. For more information, see Configuring plot order in a chart.

You might also want different plots to have different colors or other visualization settings. For more information on customizing a plot, see Setting options in the plot configuration panel.

Filtering the signal

Once you have selected a signal, you need to determine the scope of what you want to look at. SignalFx makes this easy by allowing you to filter down the signal using metrics metadata.

For example, you may want to look at the latencies for a service, but only for the production environment. In SignalFx, the latency is your metric, and the service and environment names are both likely to be part of the metadata associated with the metric.

As filters are applied, the data shown in the chart will update in real-time, as a way of helping you confirm that you are making the desired selection. For more information on specifying filters, including specifying NOT filters and using multiple filters, see Filters; the instructions for filtering a signal are the same as those for specifying a filter override.

Note

If you choose to allow data matching the filter condition or missing the property, as discussed in Choosing what data to allow, data missing the property will be excluded if you apply an analytics function and then group by that property.

../_images/filter-dropdown-plot-line.png

As you filter a signal, tokens representing the filter options are added to the plot editor display. If the token is grey instead of the default blue, this indicates that the filter option is being overridden by a dashboard variable or filter that has propagated down to the chart.

In the following illustration, you can see the dashboard filter in the Overrides section of the chart at upper right, and the grey token with the conflicting filter in the plot line.

../_images/filter-overridden.png

Tip

If you add or edit any of the Override values, the values will be applied to every chart in this chart’s dashboard when you close the chart. For more information, see Specifying Settings for All Charts in a Dashboard.

Applying analytics

You can apply analytics to the time series on this plot. When you click on Analytics, a list of available functions appears. SignalFx supports not only more basic functions, like Sum, Count, and Mean, but also more useful and powerful functions like Percentile, Timeshift, Top/Bottom, and Exclude. You can hover over a function to see a brief description.

If you know the name of the analytics function you want to apply, you can simply type it directly into the analytics field. SignalFx will use type-ahead search to show you a list of terms that match. Alternatively, simply scroll and choose a function from the list.

If you apply a function, it will appear as a token.

Single analytics function per signal

For a very simple example, consider the chart below. Plot line A has no analytics applied. It shows one line displaying disk space used for each of the hundreds of time series reporting.

../_images/disk-01.png

In plot line B on the same chart, the Sum function is applied. Now there is only a single line on the chart, which represents the total disk space used.

../_images/disk-02.png

Multiple analytics functions per signal

You can specify more than one analytics function for each plot line, and they will be applied in the order in which they appear. You can modify the order by dragging and dropping the tokens.

More powerful analytics

SignalFx analytics can do much more than display simple metric values as shown above. Analytics can take your chart from a display of raw metrics to a powerful tool that lets you compare historical data with current data, or show you trending data so you can proactively monitor system health. For more information, see Gaining Insight Through Analytics.

Viewing detailed metric data

When you hover over a chart, the plot line for the time series you are focused on is highlighted, and information about the datapoint is displayed.

../_images/details-hover.png

To see detailed information about datapoints in a chart, you can click the Data Table tab. If you haven’t pinned a point on the chart, values for the most recent data in the chart are displayed.

Or, if you click in the chart to pin a point in time, as shown below, the data table is automatically displayed.

../_images/data-table-pin.png

Tip

If you edited a plot name or specified display units in the Chart Builder, this information is displayed when you hover over the chart and in the data table. For example, instead of seeing 250 as a value, you might see 250 ms (where you specified ms as a suffix) or $250/millisecond (where you specified $ as a prefix and /millisecond as a suffix).

When you move the cursor through different areas on a chart, the plot line under the cursor is highlighted, and the detail line for that plot line is highlighted. (You may have to scroll through the data table to find the highlighted information.) If you have pinned a value, that value is displayed in the leftmost column of the data table, and you can compare other values to it as you move the cursor.

Just as hovering over a plot line highlights a line in the data table, hovering over a line in the data table highlights the corresponding plot line on the chart.

As you hover over dimensions in the data table, an Actions menu icon is displayed. Menu options let you add a filter to the chart’s overrides bar based on the value of the dimension. For more information on filtering an entire chart (as opposed to individual plot lines), see Filters.

../_images/quick-filter-menu.png

Use the Chart Options tab to specify which columns to display in the data table.

You can export data from the Data Table to a CSV file; click the Export as CSV icon at the top right of the tab.

../_images/export-as-csv.png

Seeing events on a chart

Displaying event markers on a chart can help you see correlations between events that occur (such as a detector triggering an alert) and metrics displayed on the chart. For example, you may discover that CPU % Utilization spikes when the number of concurrent users approaches a specific value. You can use this information to tune your system in some way to minimize excessive CPU load as the number of users increases.

For background information on events, see View Additional Data with Events.

Displaying events as they occur

The process for adding an event triggered by a detector, or occurrences of a custom event, is essentially identical to specifying a metric as a signal. The only real difference is that if you use the Metrics Sidebar, you must select the Events checkbox to search for detector or custom event names.

Note

If you deselect the Metrics checkbox to search only for events, none of the other search options in the Metrics Sidebar are available; you must enter text manually to find matching detector or custom event names. Similarly, if you add a filter, you can search only for metrics, not for events.

About event markers

Event markers are shown along the chart’s X-axis. If you open the Events tab, you will see instructions on how to display a list of events, or create a new custom event.

../_images/events-tab.png

You can hover over an event marker to see the event count in that time window, grouped by severity. Custom events are shown as hollow diamonds, and alerts generated by detector events are triangles, color-coded to display the severity of the alert. Solid triangles indicate the event was triggered and hollow triangles indicate the event cleared. (Custom events are always shown as an hollow grey diamond.)

../_images/event-marker-hover.png

You can click near an event marker to see a list of events for that time interval in the Events tab. The “Type” column in that list indicates alert status as Triggered or Cleared, and displays the event type for custom events. You will also see information on when the event occurred, how long it took for an alert to clear (or if it is ongoing), and information about the detector that triggered the event.

In the following illustration, we clicked near an event marker to see a list of events for that time interval in the Events tab. The “Status” column in that list indicates alert status as Triggered or Cleared, and displays the event type for custom events.

../_images/events-list.png

Note

If an alert and a custom event occur during the same interval, only the alert marker is displayed. However, as shown above, any custom events will be listed in the events list.

To make it easier to spot correlations between events and metric values, you can display a vertical line along with the event marker, as shown above. This line is color-coded just like the event marker at the bottom of the chart. To add vertical lines to the markers on the chart, select Show events as lines in the Chart Options tab.

../_images/event-lines.png

Tip

You can also overlay event markers onto charts that are displayed on a dashboard.

Manually adding custom events

To manually add a custom event to a chart, display the Events tab. If you want to add an event at a time that is visible on the chart, click on the chart to pin that time.

  • If there are events displayed in the events list, click the Add new event icon new-event in the far right column.
  • If there are no events listed, click Add new event in the message that is displayed at the top of the event list (shown in this illustration).

If you have pinned a time, that time will be displayed in the Create Event modal window. Otherwise, the current time will be displayed.

In the Create Event dialog box, you can start typing to see a list of event types to choose from, or you can create a new event type.

../_images/create-event.png

Note the time and any other details you’d like to add; you can use Markdown as well as plain text in the description of the event.

Then click Create to generate an event for the selected event type.

Note

If you have created a new event type, you are creating both the event type (which you can re-use in the future) and an instance of that event type.

In the Plot Editor tab, you will see that a new event plot line has been added to your chart for this event type. If the new event time is visible on the chart, you will also see the new event in the chart, as well as all other events for the event type that occurred in the current chart time range.

Viewing and managing event information

You can see more information on an event by clicking on the event in the Events tab. If the notification for an event was muted, that will be indicated.

You can click on a custom event to edit it or mark it for deletion.

../_images/edit-custom-event-02a.png

Note that editing and deleting only applies to custom events, not events generated when a detector triggers an alert.

Setting basic plot options

You can set some basic options for the plot by using features available on the signal line and in the Axes tab. (For other options available, see Setting options in the plot configuration panel ).

Visibility of plot lines

Clicking on the “eye” icon on the far left of the plot line will toggle its appearance on or off in the chart. (This option is not available for Text charts and Event Feeds.) In all chart types except Heatmap, multiple plot lines can be displayed.

Note

In the Single value chart, if multiple plots are visible, the value on the chart reflects the first visible plot in the plot list.

To hide all plot lines except one, alt-click (or option-click) on the eye icon for the plot line you want to display. This can be useful when a chart contains multiple plots and you need to focus on just one. To return to the previous view, alt-click again on the eye icon for the visible plot line.

To show or hide all plot lines, click the eye icon above the plot lines and choose All or None.

Plot name

By default, plots are assigned letters of the alphabet to distinguish them from one another, and the plot name specifies the text displayed in List charts, detector signals, the Data Table, etc. By default, the name is the metric or event name plus any analytics applied. To change the plot name, click the name and enter the desired text.

You can also use plot names to ensure that plots representing similar metrics and dimensions are displayed in different colors. For more information, see Color by metric.

Left and right Y-axes

By default, all plots in a chart make use of the Y-axis values displayed on the left side of a chart. If you have multiple plots, it may be useful to make use of a second Y-axis, with values displayed on the right side of the chart. Click on the axis selector for the plot, and then select left or right. For line charts, a plot that uses the left Y-axis is displayed with solid lines, and the right Y-axis displayed with dotted lines (shown in the second illustration below).

Tip

If you are using the Stack chart option for an area or column chart, all plots should use the same Y-axis.

Specifying two Y-axes can make chart data look very different. Compare the following two illustrations. In the first, both plots use the same Y-axis. In the second, they use different Y-axes. SignalFx adjusts axis values of both axes to enhance the display of the data.

The use of a single Y-axis lets you compare absolute values of the plots, as shown below.

../_images/1-y-axis.png

The use of two Y-axes lets you compare the patterns of the values, as shown in the second illustration below. In this case, the axis on the left specifies values for plot A (in blue) and the axis on the right specifies values for plot B (in magenta). (A custom Plot Color was specified for plot B to make the chart easier to read.)

../_images/2-y-axes-after.png

When you hover over a plot in a chart that has two Y-axes, the Y-axis that is not being used for that plot is dimmed, so it is easy to see which Y-axis values apply to the plot.

../_images/dim-y-axis.png

Using the Axes tab

Additional options for Y-axes are available on the Axes tab. This tab is enabled when chart type is Line, Area, Column, or Histogram. If you have specified both left and right Y-axes, you’ll see the same options for each axis.

../_images/config-y-axes.png

Label

Specify text that you want to display vertically along the left and right sides of a chart.

Min/max values

By default, SignalFx automatically selects minimum and maximum Y-axis values based on the plots visible in the chart window and whether or not the Stacked chart option is enabled in the Chart Options tab. You can specify values to override this behavior. Setting values here may override the Include zero on Y-Axis setting in the Chart Options tab.

Low and high watermarks

Watermarks are constant values and will appear as straight lines at the specified Y-axis values; watermark lines for the right y-axis are shown as dotted lines. If you specify watermark labels, they will appear near the watermark lines; watermark labels for the right y-axis are shown on the right side of the chart.

../_images/watermark.png

Precision

You can choose the number of digits that are used for Y-axis values by specifying a number in the axis precision field. The default value used by SignalFx is 3, but if the values plotted in your chart are very close together - say, 0.0004 and 0.0005 - then 3 digits is not enough, and you should increase axis precision accordingly.

Setting options in the plot configuration panel

The plot configuration panel lets you set options in addition to those you can set on the signal line. To display the panel, click the Gear icon next to the Actions menu at the far right of the plot line.

../_images/plot-config.png

The options that are available depend on the type of chart; no chart type supports all the available options.

Display units

A number displayed on a chart could be anything from a raw number (such as bits or seconds) to transactions per second to the total dollar value of sales made in the last month. You can use the Display Units options to help viewers understand what the values on a chart represent and to control how values are displayed. You can specify the unit associated with the metric (bit, byte, ms, etc.) or select Custom to enter a plain text prefix and/or suffix (such as $ and per hour).

All display units are shown when you are:

Specifying the metric unit

Size and time metrics (kb, Gib, ms, w, etc.) are available from the Display Units dropdown menu. In addition to being displayed in the data table or when hovering over a chart, the unit you specify will be shown on the y-axis associated with the metric and will be automatically scaled as appropriate. For example, if you are measuring a value in seconds and the values range from 10 seconds to 2 minutes, the y-axis might show increments such as 20s, 40s, 1m, 1.5m, and 2m.

Tip

For auto-scaling to work as expected, metrics in all plots that share the same y-axis should be of the same unit. For more information on using multiple y-axes, see Using the Axes tab.

Adding a prefix and/or suffix

Unlike specifying the actual unit associated with the metric, the prefix and suffix are simply text fields that you add to clarify the chart display. They don’t have any intrinsic relationship to the metric on the plot line and are not automatically scaled.

The following illustration shows how setting a prefix and suffix affects the display of a single-value chart.

../_images/plot-config-prefix-suffix.png

Using display units can also provide information that would not otherwise be apparent. For example, this illustration indicates that the value represents the 95th percentile.

../_images/plot-config-suffix-p95.png

It can sometimes be useful to apply the Scale analytics function when setting a suffix. For example, if a value is measured in seconds but you want to display the output in minutes, scale the value to 60 and change the suffix from per second to per minute. (You can also use characters, such as /s or /second, instead of per second.)

../_images/plot-config-scale.png

Visualization type

For graphs, plots default to a visualization style that has been selected for the chart as a whole (line, area, column, or histogram). For example, new plots created on a column chart will appear initially as additional columns. However, you can change this setting so a plot will use a different chart display type than the chart default.

For example, if the chart is an area chart, you can choose to display one of its plots as a line.

../_images/plot-two-vis-types.png

If you specify a visualization type, a small icon on the plot line indicates the selected type. The illustration below indicates that a plot is configured to display as a line instead of the chart default.

../_images/plot-vis-type.png

Event color

You can select the color to be used for custom events on a chart. Click on a color swatch to apply it to the event; the swatch will be displayed with a white checkmark. Click on a marked color to deselect it and have SignalFx re-apply a default color to the event.

If you specify a color, a small icon on the plot line indicates the selected color.

../_images/event-color.png

Plot color

SignalFx chooses plot colors automatically to allow at-a-glance differentiation between metrics or time series with different dimension values. You can manually override this selection.

Click on a color swatch to apply it to the current plot; the swatch will be displayed with a white checkmark. Click on a marked color to deselect it and have SignalFx re-apply a default color to the plot.

If you specify a color, a small icon on the plot line indicates the selected color.

../_images/plot-color.png

You can also use plot names to ensure that plots representing similar metrics and dimensions are displayed in different colors. For more information, see Color by metric.

Note that if you have set thresholds using the Color by value chart option, any color you specify here is ignored.

Rollup

Rollups are a way to summarize data, and they enable SignalFx to render charts or perform computations for longer time ranges quickly, without compromising the accuracy of the results. Depending on whether the metric you’ve chosen is a gauge, counter or cumulative counter, SignalFx uses a different default rollup. In some cases, you may wish to use a non-default rollup. For more information, see Rollups.

If you want to be able to see the rollup without opening the options screen, select Always show rollup setting in plot lines. Note that this setting shows the rollup setting on every plot line for all charts that you open. It is a per-user setting and won’t affect anyone else viewing the same charts.

Extrapolation policy and Max extrapolations (missing datapoints)

If a datapoint isn’t sent to SignalFx within the expected time frame, by default it is considered to be NULL and is excluded from all data calculations. Depending on the metric type and rollup, you may want to specify a value other than NULL. You can also specify the number of consecutive extrapolated datapoints for which the selected extrapolation policy will apply.

For more information, see Missing datapoints.

Aliasing

If a plot uses Graphite or New Relic style wildcards, options for node aliasing are displayed below Visualization options.

Enter in the aliases you would like that correspond to the node place values. To make it easier, SignalFx provides examples of the dimension values that correspond to the nodes in question.

../_images/graphite-03.png

For more information, see Node aliasing for Graphite-style metrics.

Configuring plot order in a chart

Plot order determines how data appears on an area or column chart for which you are using the Stack chart option. The values displayed reflect the order of the plots in the chart. For example, if there are three plots in the chart (A, B, and C), the values will be stacked with A on top, then B, then C on the bottom.

However, you might want to change the order in which plots are listed in a chart for other types of charts as well. For example, consider the following plots, which could be on a line chart. The formula in plot D refers to plots A and C.

../_images/reorder-before.png

To move a plot, hover over it to display a “drag” icon on the right. In the illustration below, plot B has been dragged to be below plot D, so the formula (A+C) is now directly below the two plots it references. This change makes the plot order more logical and easier to read.

../_images/reorder-01.png

However, having the plots out of alphabetical order is probably not desirable. To reset the plots to be in alphabetical order, select Resequence Plots from the chart’s Actions menu. Any formulas in the chart will be updated to reflect changes in plot letters. As shown below, the formula is now A+B instead of A+C.

../_images/reorder-after.png

Handling delayed or missing datapoints

Datapoints being sent to SignalFx can be delayed, or not arrive at all, for a variety of reasons. You can set parameters for how SignalFx determines if a datapoint is delayed, and for how to extrapolate missing datapoints in a plot line.

Delayed datapoints

As a general rule, when using a streaming analytics system, the more ‘on time’ datapoints are, the better. In other words, the delta between logical time (the time stamp that accompanies the datapoints, i.e. when the measurements are actually taken) and wall time (the time at which the datapoints actually arrive at SignalFx) should be as low as possible.

The impact of delayed datapoints on a streaming analytics system can be illustrated using the following example. Let’s say you have a chart that is displaying the average of the CPU utilization metrics from 10 servers, and let’s say that 9 of the servers report every 10 seconds and are on time. One laggard, backed up for whatever reason, submits data with a gap between wall time and logical time that is 10 minutes long. So even though that machine is sending one datapoint every 10 seconds, those datapoints are all arriving after a 10‑minute delay.

The Max Delay parameter specifies the maximum time that the SignalFx analytics engine will wait for data to arrive for a specific chart. E.g, if Max Delay is set to 5 minutes, the computation will wait for no more than 5 minutes after time t for data that has been timestamped with time t. The leading edge of the CPU utilization chart will be no more than 5 minutes behind the current time, and the laggard will not be considered for the purpose of calculating the average in the streaming chart. (When it does arrive, it will be stored properly, such that any re-calculation of the average will take it into account.) As such, Max Delay allows users to control the trade-off between correctness and timeliness.

When Max Delay is set to the default, ‘Auto’, the timeliness of the reporting time series are sampled to determine an appropriate value. The value is chosen to accommodate most (if not all) data by adopting the maximum observed lag after discarding substantial laggards.

You can permanently override the default setting for a chart by choosing a Max Delay value in the Chart Options tab. You can temporarily override the default by setting a max delay override on the dashboard that contains the chart. The upper limit is 15 minutes.

Missing datapoints

Time series data can be sparse due to collection policies, failures or network conditions. If your calculated lists do not contain the elements you expect, or if it looks like you have gaps in a chart, it is often because the datapoint was never received by SignalFx.

By default, SignalFx inserts a NULL value for any datapoint that is missing for a certain period. In certain situations, you may want to use a different policy for one or more plots in a chart. The policy you choose should complement the metric and rollup type. For example, a counter metric with a sum rollup is probably best served with a Zero extrapolation, whereas a Last Value extrapolation might be better for a gauge with a mean rollup.

Extrapolation Policy Behavior
Null (the default policy) Inserts a NULL value for missing datapoints
Zero Inserts a zero (0) value for missing datapoints
Last Value Uses the last reported value until the next datapoint arrives

Note that a Last Value extrapolation will not extrapolate any values prior to the first real value, nor will it extrapolate values for inactive time series (i.e. metrics that have not reported for a long period of time).

In addition, extrapolated values are not used for charts whose visualization is based on the most recent datapoint received (list chart, single-value chart, and heatmap charts); that is, only actual values are represented in these chart types, not extrapolated values. For list and single-value charts, if a datapoint is missing, the chart displays a NULL indicator until an actual value is received.

The Max Extrapolations parameter indicates the number of consecutive datapoints for which the selected policy will apply. The default value of Infinity means that the extrapolation policy will apply indefinitely.

To specify the extrapolation policy and max extrapolations for a time series, use the plot configuration panel for its plot.

Working with SignalFlow

As discussed in SignalFlow Analytics Language, the heart of the SignalFx platform is a streaming, real-time analytics engine that executes computations written in a flexible language named SignalFlow. A stream is a request for data, like data or an expression that references another assigned stream.

As shown in the illustrations below, a stream is represented as a plot line in the graphical plot-builder UI. You can view and edit the SignalFlow underlying a chart by by clicking View SignalFlow while on the Plot Editor tab.

../_images/click-to-view-signalflow.png

You will see a screen like this one:

../_images/viewing-signalflow.png
  • To show or hide a sidebar that displays the plot label, click the sidebar/caret icon at far right.
  • To show or hide plot configuration options when viewing the sidebar, click the plot label or the Settings icon.
  • To return to the graphical plot-builder view, click View builder.

By default, when any chart is opened in the Chart Builder, SignalFx will first attempt to render it in graphical plot-builder mode. The Chart Builder will only open in SignalFlow mode if the chart cannot be represented in the graphical plot-builder.

Converting a chart from SignalFlow to the graphical plot-builder may change the formatting of the SignalFlow. For example, extra spaces might be removed, or parentheses might be added.

When you edit the SignalFlow that powers a chart, or when you create a chart by writing SignalFlow, you must follow the guidelines below to ensure that the chart editor can be edited in the graphical plot-builder mode as well. If any element of the SignalFlow in a chart does not follow these guidelines, attempting to convert to graphical plot-builder mode by clicking View Builder will result in an error.

Convertible SignalFlow can consist only of streams, with each stream assigned to a capital letter from A to ZZZZZZ.

Assign each stream to its own capital letter, from A to ZZZZZZ. Multiple requests for data in a single assignment won’t be convertible to the plot-builder UI. Expression-type logic can include only variables and numbers.

Will convert
A = data('cpu.utilization').(label='A')
B = data('cpu.utilization').publish(label='B')
C = (A/B+10).publish(label='C')
Won’t convert
A = data('cpu.utilization').publish(label='A')
B = (A/data('cpu.utilization')+10).publish(label='B')

Each stream can have up to one corresponding publish statement.

publish statements are used to make data visible in a chart. publish statements also support labels, which are used for styling and naming of plots in the UI. SignalFx recommends that each publish statement include a label, and that the label match the stream variable assignment. If a publish statement does not have a label, an arbitrary label will be assigned when you convert to graphical plot-builder mode.

If publish is present, it must be the last method in a stream statement. More than one publish per stream is not allowed.

Will convert
A = data('cpu.utilization').publish(label='A')
B = (A).mean().publish(label='avg')
Won’t convert
A = data('cpu.utilization').publish().mean().publish(label='avg')

You can’t convert from SignalFlow to plot-builder mode if the chart includes features or functions that you can’t access in plot-builder mode.

Features that you can specify in SignalFlow, but that are not representable in plot-builder mode, include:

  • Comments
  • Any SignalFlow functions that aren’t accessible from the plot-builder
  • Programming constructs like loops, imports, or variables.
  • Any variable assignments, other than streams assigned to capital letters. This means that variable constants may not be used as arguments to stream functions.
Will convert
A = data('cpu.utilization', filter=filter('aws_availability_zone', 'us-east-1a')).publish(label='A')
Won’t convert
myfancyfilter=filter('aws_availability_zone', 'us-east-1a')
A = data('cpu.utilization', filter=myfancyfilter).publish(label='A')

If a filter block contains OR conditions, all of the options must be defined inside the filter statement.

This matches the way that the graphical plot-builder represents filters.

Will convert
filter("aws_availability_zone", "us-east-1a", "us-west-1a")
filter("aws_availability_zone", "us-east-1a", "us-west-1a") AND filter("aws_instance_type", "i3.2xlarge")
Won’t convert
filter("aws_availability_zone", "us-east-1a") OR filter("aws_availability_zone", "us-west-1a")
filter("aws_availability_zone", "us-east-1a") OR filter("aws_instance_type", "i3.2xlarge")

Graphite options for plots

Using Graphite-style wildcards

Many Graphite users have become accustomed to its wildcard conventions, and use them actively to generate the custom charts that they want. SignalFx supports the use of those conventions in the signal (metric or event) field of the SignalFx Chart Builder UI, including asterisks, character lists and ranges, or value lists.  This distinction is made because Graphite wildcards are different from regular wildcards. For example, for a regular wildcard query, “jvm.*” will return anything that starts with “jvm.”, even if there are subsequent dots in the name; with “jvm.*”, jvm.foo, jvm.foo.bar and jvm.foo.bar.foo would all be returned. For Graphite wildcards, “jvm.*” will only return something that has no subsequent dots in the name: for “jvm.*”, jvm.foo would be returned, but jvm.foo.bar and jvm.foo.bar.foo would not.

To use the Graphite wildcard, simply enter the appropriate Graphite syntax into the signal field, then select the Graphite wildcard option. If you are using the Metrics Sidebar, enter any search term with an asterisk between two dot (.) characters, then select Graphite wildcard from the search results list. Alternately, you can use the wildcard in conjunction with the tab completion feature in the Metrics Sidebar to more efficiently search for Graphite-style metrics.

Note also that when the Graphite wildcard option is selected, the ability to filter plots by using dimensions is removed. Graphite naming conventions encapsulate dimension values into dot-separated strings, and are in effect selected through the use of wildcards.

Node aliasing for Graphite-style metrics

Tip

The information in this section also applies to New Relic style metrics.

One of the most powerful features in SignalFx is its use of dimensions to filter metrics or perform group‑by aggregations. For example, you can filter in or out time series that match datacenter:snc, or calculate the average value of the metric cpu.total.user across multiple hosts, grouped by role.

In Graphite, metric names typically contain multiple dot-separated dimension values, such assnc.role1.server3.cpu.total.user. (The dimension keys - e.g. datacenter, role and host - are implicit.) To use the dimensions in Graphite metric names as if they were native SignalFx dimensions, you can simply apply on-the-fly dimension aliasing to the chart you’re constructing. This allows you to treat the nodes in a Graphite metric name as if they were dimensions in SignalFx, and you can also assign aliases to the implicit dimension keys to make it easier to use and easier to understand.

Before applying aliasing, you can use the node place values as dimension or property values, e.g. for the purpose of analytics:

../_images/graphite-01.png

After aliasing, you can use the node aliases instead of the node place values in analytics functions.

../_images/graphite-04.png

The aliases are also used in the data table.

For information on how to apply aliases, see Aliasing.

New Relic options for plots

This section includes information that can help you build SignalFx charts from New Relic data.

Recognizing New Relic metrics in SignalFx

Metrics from New Relic are composed of strings delimited by the slash character “/”. Examples of New Relic metrics in SignalFx include the following:

  • WebTransaction/average_call_time/12345678
  • WebTransaction/Expressjs/GET//*/average_call_time/12345678

Note that sometimes, as in this example, the delimiter “/” appears in the metric name to denote a URL path (“/*”). SignalFx does not distinguish between “/” characters used as delimiters, and “/” characters used in paths.

SignalFx has made two changes to the names of metrics as we collect them from New Relic, in order to enhance the ability to perform wildcard searches:

  • All New Relic metrics have their appropriate object id appended to the metric name. For metrics from the Applications module, this is an application ID. For metrics from the Servers module, this is a server ID. The same value can be found in the id dimension associated with that metric.
  • Server metrics have their account ID prepended in front of the metric name. This only occurs for Server metrics because account ID information is only available for Server metrics. The same value can be found in the account dimension.

Example of New Relic application metric in SignalFx

New Relic application metric as obtained from API:

Apdex/Expressjs/GET//*/score

As it appears in SignalFx with application id 12345678 appended:

Apdex/Expressjs/GET//*/score/12345678

Example of New Relic server metric in SignalFx

New Relic server metric as obtained from API:

System/CPU/System/percent/average_exclusive_time

As it appears in SignalFx, with account id 7654321 prepended and server id 12345678 appended:

7654321/System/CPU/System/percent/average_exclusive_time/12345678

To help you compose charts with New Relic metrics, SignalFx supports two kinds of wildcard searching: ordinary SignalFx wildcard mode, and New Relic wildcard mode.

Using wildcards with New Relic metrics

New Relic mode appears as an option only after a New Relic integration has been set up in your SignalFx organization. Regular SignalFx dimensions are not available in New Relic mode. You cannot dynamically filter a chart that uses New Relic mode.

New Relic mode

Use New Relic mode when you’re comparing detailed metrics about applications or servers, and can make individual static dashboards about specific applications or servers. You need to filter or aggregate by detailed information that’s only available in the metric name, like transaction endpoint or process name.

This mode is different from a regular wildcard query using “*” because it treats the slash “/” character as a special delimiter. The New Relic wildcard search “System/*” will only return a metric that has no subsequent slash characters in the name. See the next section for an example.

In New Relic mode, you can filter and aggregate metrics based only on the contents of the metric name. To help with this, SignalFx supports on-the-fly dimension aliasing in New Relic mode. Node aliasing allows you to assign names to the slash-delimited components of a metric name, and use the value of each component for aggregation and analytics. When using New Relic mode, you can find aliasing controls in the Y-axis configuration menu in the Chart Builder. For more information about aliasing, see Node aliasing for Graphite-style metrics.

Regular wildcard mode

Use this mode when you’re comparing general data across applications or across accounts, or need to dynamically filter an entire dashboard. The information that you will filter or aggregate by is captured in dimensions like application (the name of the New Relic application) and host (the hostname of the server hosting a New Relic application).

In normal wildcard mode you can use “*” for wildcarding, and the wildcard applies to the entire metric name. For example, in a regular wildcard query, “System/*” will return any metric beginning with “System/”, even if there are subsequent slash characters in their metric names.

Example: Comparing Regular wildcard mode to New Relic wildcard mode

In this example, we’ve input the search string “System/*” into the Signal field in the Chart Builder.

In Regular wildcard mode, this search returns the following example metrics:

  • System/foo
  • System/bar
  • System/foo/bar

In contrast, a New Relic wildcard search for the same string returns a different list:

  • System/foo
  • System/bar

Note that in New Relic wildcard mode, searching for “System/*” does not return the metric System/foo/bar. This is because the search returns only those metrics that have exactly one slash-delimited node after “System”. System/foo/bar contains two nodes after “System”: foo and bar, and so does not match the search.

What’s next?

After you have created a chart to monitor one or more signals, you might want to adjust various options regarding how the chart is configured (see Specifying Chart Options in the Chart Builder) or share the chart with others.

Once you have built and configured some useful charts, learn how to use additional analytics functions to expand a chart’s contents from data into information.

You can also create detectors based on the chart that will trigger alerts when certain thresholds are met. See Creating a detector from a chart in Set Up Detectors to Trigger Alerts.

Note that sometimes the metrics data that you are sending does not reach the SignalFx service, or is delayed. Because SignalFx is streaming data visualizations and analytics in real time, you need to decide how you want SignalFx to interpret those gaps and delays. For more information, see Delayed datapoints and Missing datapoints.