I’m using Telegraf SNMP to capture data into Influx,

and I have a SingleStat metric in grafana with this query:
SELECT non_negative_derivative(percentile(“ifHCOutOctets”, 95), 1s) *8 FROM “snmp” WHERE “hostname” =~ /^$Switch$/ AND “ifAlias” =~ /^$Alias$/ AND $timeFilter GROUP BY time($__interval) fill(none)

However percentile function does not seem to work? the value returned is not 95th percentile, infact i changed 95 to 50, and the number stays the same.

Not sure either, you probably need a large group by time to get percentile to get many samples, and looks very strange to do non negative derivative on a percentile

Thanks Torkel, I will have a play, i guess this is something influxdb related anyway?

I looked at a few guides online about playing with bandwidth in grafana, apparently i need to do a non_negative_derivative (ideally) or derivative on Octet counters, otherwise do you have any suggestions? (i don’t really know what derivative does!)

I was hoping Grafana could replace our Cacti software, the only thing missing was the 95th percentile stuff, i’ll see if i can get it working.

Ran into this same issue. In order to generate a percentile value, we had to run an Influx continuous query on the incoming raw data with non_negative_derivative\math like you have, to convert to octets to bits. Once we had a value converted to bits in a new measurement, you can run the percentile function.

Also if you have an existing Cacti setup, there is a plugin to output to the metrics to Influx. Might help instead of converting to Telegraf.

Wow ! Thanks for the hint, I’ll attempt to get it working with the continuous queries. Although i’m guessing I would have to run a seperate query on every interface, which will be a lot !

We were looking into replacing Cacti altogether with Grafana, didn’t know there was a influxdb plugin for Cacti though, that sounds useful aswell for testing Thanks!

You may need to change the time(1m) to time(5m) based on your polling interval.

“CREATE CONTINUOUS QUERY “Interface-Traffic-Conversion” ON cacti BEGIN SELECT non_negative_derivative(mean(value), 1s) * 8 AS bitspersec INTO cacti.autogen.“interface.traffic.rollup” FROM cacti.autogen.“interface.traffic” GROUP BY type, description, namecache, time(1m) END”

And second question : if the value, for example the number of input octets, is catched every 20 secondes, do you know if I need to include this time in the calcul or if the derivative function already includes it ?