Live Stream with Telegraf

I am trying to use the Grafana Live Measurements feature rolled out in Grafana 7.4. I am using Grafana version 8.0. I am sending data to Grafana via Telegraf (UDP messages).

I am having issues with how the data is displayed in the panel. It should be showing 30s of live stream data, but instead it is only graphing maybe 1s-100ms of data and then not showing the rest of the older data points:

grafana_live_plugin_bug1

Has encountered this and if so were you able to resolve it?

Here is the data that should be showing (this is not using the live plugin):

Thank you,

Person

Hi @person

quick question: did you by any chance follow this tutorial of ours? If not, I’d be curious to know if that configuration would work on your machine…

And have you tried this on any other panel, or is the issue specific to the stat panel?

Tried live streaming with G8 and because data is not being saved on a tsdb like influx/prometheus, then grafana only shows the last read from telegraf.
It is a query over a tsdb that shows a trace/graph continuous.
Now I’m trying to use Status Panel pluging to use more like a “semaphore” traffic lights. To use it with ping polling input pluging on telegram.

Did this ever get fixed? I am currently having this issue

Grafana Live is a PUB/SUB system → it only broadcasts the current incoming value and does not store any historical data. So when your panel asks for “last 30 seconds,” there is no buffer to pull from → it only shows whatever arrived since you opened the panel. This is why you see only 1s-100ms of data instead of the full 30 seconds.

Set up Grafana Live | Grafana documentation

For the graph/trace use case

Route your Telegraf data into InfluxDB first, then query InfluxDB as your Grafana data source. Here is the Telegraf config that works:

toml

[[outputs.influxdb_v2]]
  urls = ["http://localhost:8086"]
  token = "your-token-here"
  organization = "your-org-id"
  bucket = "your-bucket"

Then in Grafana add InfluxDB as datasource with Flux query language and use:

flux

from(bucket: "your-bucket")
  |> range(start: -5m)
  |> filter(fn: (r) => r._measurement == "cpu")
  |> filter(fn: (r) => r._field == "usage_user")
  |> filter(fn: (r) => r.cpu == "cpu-total")

This gives you a full continuous time-series trace

For the Semaphore/Traffic light use case

If you only need to display current live value (not a graph), use a Stat panel with this query:

flux

from(bucket: "your-bucket")
  |> range(start: -1m)
  |> filter(fn: (r) => r._measurement == "ping")
  |> filter(fn: (r) => r._field == "percent_packet_loss")
  |> filter(fn: (r) => r.url == "your-target-ip")
  |> last()

Then set thresholds in panel settings:

  • Base → Green (0 packet loss = healthy)
  • 1+ → Red (packet loss = problem)
  • Color mode → Background

This gives you a proper green/red semaphore traffic light display.

Grafana Live is only suitable for displaying the latest single value. For any graph or time-range visualization, routing through InfluxDB is required