Grafana: Alias by (Display name): Unterschied zwischen den Versionen

Aus Wiki-WebPerfect
Wechseln zu: Navigation, Suche
Zeile 4: Zeile 4:
 
In this article I show you how you can change the naming like with ''ALIAS BY'' but with 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() ==
+
== Change naming like ''ALIAS BY'' with map() & group() ==
 
In this example we want following naming (like the image to the right): '''<Description> - <Hostname>: <VMName>''' <br>
 
In this example we want following naming (like the image to the right): '''<Description> - <Hostname>: <VMName>''' <br>
 
*'''Description''' = Hardcoded description of the measurement "CPU Load Total"
 
*'''Description''' = Hardcoded description of the measurement "CPU Load Total"
 
*'''Hostname''' = InfluxDB Tag "host"
 
*'''Hostname''' = InfluxDB Tag "host"
 
*'''VMName''' = InfluxDB Tag "VMName"
 
*'''VMName''' = InfluxDB Tag "VMName"
 
  
 
<pre>
 
<pre>
Zeile 21: Zeile 20:
  
  
 +
 +
=== Similar Query from image but in Flux ===
 +
<pre>
 +
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)
 +
</pre>
  
  

Version vom 8. September 2021, 10:19 Uhr

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)