Templating variables for metrics dashboards (deprecated)

Version history
caution
This feature is in its end-of-life process. It is deprecated in GitLab 14.7, and is planned for removal in GitLab 16.0.

Templating variables can be used to make your metrics dashboard more versatile.

templating is a top-level key in the dashboard YAML. Define your variables in the variables key, under templating. The value of the variables key should be a hash, and each key under variables defines a templating variable on the dashboard, and may contain alphanumeric and underscore characters.

A variable can be used in a Prometheus query in the same dashboard using the syntax described in Using Variables.

text variable type

caution
This variable type is an Experiment, and is subject to change at any time without prior notice!

For each text variable defined in the dashboard YAML, a free text field displays on the dashboard UI, allowing you to enter a value for each variable.

The text variable type supports a simple and a full syntax.

Simple syntax

This example creates a variable called variable1, with a default value of default value:

templating:
  variables:
    variable1: 'default value'     # `text` type variable with `default value` as its default.

Full syntax

This example creates a variable called variable1, with a default value of default. The label for the text box on the UI is the value of the label key:

templating:
  variables:
    variable1:                       # The variable name that can be used in queries.
      label: 'Variable 1'            # (Optional) label that will appear in the UI for this text box.
      type: text
      options:
        default_value: 'default'     # (Optional) default value.

custom variable type

caution
This variable type is an Experiment, and is subject to change at any time without prior notice!

Each custom variable defined in the dashboard YAML creates a dropdown list selector on the dashboard UI, allowing you to select a value for each variable.

The custom variable type supports a simple and a full syntax.

Simple syntax

This example creates a variable called variable1, with a default value of value1. The dashboard UI displays a dropdown list with value1, value2 and value3 as the choices.

templating:
  variables:
    variable1: ['value1', 'value2', 'value3']

Full syntax

This example creates a variable called variable1, with a default value of value_option_2. The label for the text box on the UI is the value of the label key. The dashboard UI displays a dropdown list with Option 1 and Option 2 as the choices.

If you select Option 1 from the dropdown list, the variable is replaced with value option 1. Similarly, if you select Option 2, the variable is replaced with value_option_2:

templating:
  variables:
    variable1:                           # The variable name that can be used in queries.
      label: 'Variable 1'                # (Optional) label that will appear in the UI for this dropdown.
      type: custom
      options:
        values:
          - value: 'value option 1'        # The value that will replace the variable in queries.
            text: 'Option 1'               # (Optional) Text that will appear in the UI dropdown.
          - value: 'value_option_2'
            text: 'Option 2'
            default: true                  # (Optional) This option should be the default value of this variable.

metric_label_values variable type

caution
This variable type is an Experiment, and is subject to change at any time without prior notice!

Full syntax

This example creates a variable called variable2. The values of the dropdown list are all the different values of the backend label in the Prometheus series described by up{env="production"}.

templating:
  variables:
    variable2:                           # The variable name that can be interpolated in queries.
      label: 'Variable 2'                # (Optional) label that will appear in the UI for this dropdown.
      type: metric_label_values
      options:
        series_selector: 'up{env="production"}'
        label: 'backend'