Grafana: Alias by (Display name)

Aus Wiki-WebPerfect
Wechseln zu: Navigation, Suche
01-grafana alias-by.png

If you use a InfluxDB datasource with Query Language = InfluxQL, in a Grafana panel there was an option ALIAS BY.
This option is missing when you use a InfluxDB datasource with Query Language = Flux!
In this article I show you how you can change the naming like with ALIAS BY but with Flux.

Change naming like ALIAS BY with map() & group()

In this example we want following naming (like the image to the right): <Description> - <Hostname>: <VMName>

  • Description = Hardcoded description of the measurement "CPU Load Total"
  • Hostname = InfluxDB Tag "host"
  • VMName = InfluxDB Tag "VMName"
..<YOUR_FLUX_QUERY>..
  |> map(fn: (r) => ({ r with 
    display_name: "CPU Load Total - " + r.host + ":" + r.VMName
  }))
  |> group(columns: ["display_name"])
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)


Similar Query from image but in Flux

from(bucket: "telegraf")
  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)
  |> filter(fn: (r) =>
    r._measurement == "hyperv_virtual_processor" and
    r._field == "Percent_Total_Run_Time_mean" and
    r.VMName == "TestRHE01"
  ) 
  |> map(fn: (r) => ({ r with 
    display_name: "CPU Load Total - " + r.host + ":" + r.VMName
  }))
  |> group(columns: ["display_name"])
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)