Search code examples
grafanaprometheus

How do I write a Prometheus query that returns the value of a label?


I'm making a Grafana dashboard and want a panel that reports the latest version of our app. The version is reported as a label in the app_version_updated (say) metric like so:

app_version_updated{instance="eu99",version="1.5.0-abcdefg"}

I've tried a number of Prometheus queries to extract the version label as a string from the latest member of this time series, to no effect.

For example, the query

count(app_version_updated) by (version)

returns a {version="1.5.0-abcdefg"} element with a value of 1. When put in a Grafana dashboard in a single value panel, this doesn't display the version string but instead the count value (1).

How can I construct a Prometheus query that returns the version string?


Solution

  • My answer tries to elaborate on Carl's answer. I assume that the GUI layout may have changed a little since 2016, so it took me while to find the "name" option.

    Assuming you have a metric as follows:

    # HELP db2_prometheus_adapter_info Information on the state of the DB2-Prometheus-Adapter
    # TYPE db2_prometheus_adapter_info gauge
    db2_prometheus_adapter_info{app_state="UP"} 1.0
    

    and you would like to show the value of the label app_state.

    Follow these steps:

    • Create a "SingleStat" visualization.
    • Go to the "Queries" tab:
      • Enter the name (here db2_prometheus_adapter_info) of the metric.
      • Enter the label name as the legend using the {{[LABEL]}} notation (here {{app_state}}).
      • Activate the "instant" option.

    Settings in Queries Tab

    • Go to the "Visualization" tab:
      • Choose the value "Name" under "Value - Stat".

    Setting in Visualization Tab

    Note on the "Instant" setting: This setting switches from a range query to a simplified query only returning the most recent value of the metric (also see What does the "instant" checkbox in Grafana graphs based on prometheus do?). If not activated, the panel will show an error as soon as there is more than one distinct value for the label in the history of the metric. For a "normal" metric you would remedy this by choosing "current" in the "Value - Stat" option. But doing so here prevents your label value to be shown.