On 7/27/16 7:47 PM, [email protected] wrote:
Hello!
I’ve got a few counters for different iptables rules (collected with collectd).
Using Grafana, I can plot rates (bytes/s) for these byte counters like that:
SELECT non_negative_derivative(sum("value"), 1s)
FROM "iptables_value" WHERE
"type" = 'ipt_bytes' AND
"type_instance" = "$host" AND
"instance" = 'filter-INPUT' AND
$timeFilter
GROUP BY time($interval) fill(null)
$host here is Grafana’s templating parameter. It can be one/many/all hosts, but
that’s irrelevant, host selection works.
Above query indeed returns bytes/s — as long as Grafana’s time $interval is ≤
10s. (I’m measuring at 10s intervals in collectd).
I’m using sum() because the user can choose not only one, but many hosts in one
query (Grafana will automagically change the WHERE part of the query to contain
appropriate ORs).
As long as $interval ≤ 10s, buckets contain only *one* value from any given
host. E.g. with 20s buckets, there are *two* values of each host in the bucket,
and, in the result, reported rate is 2× higher that it really was.
Now, on the plots that plot only *one* host’s data, I do use mean() instead of
sum(), and that works. But I also need “total” plots…
The query should be:
SELECT non_negative_derivative(sum(series_mean("value")))
… but that’s really not possible…
I hate to do a "me too!" but this is something I would *really* like to
be able to do. A possible workaround may be to have a continuous query
that translates the data in iptables_value into something like
iptables_value_rates_10s to create bins of the average number of bytes
per second in each 10s window. Something like this might work:
CREATE continuous query iptables_rate_ipt_bytes_s_10s ON gpfs
BEGIN
SELECT non_negative_derivative(last(value), 1s) as value
INTO iptables_rate_10s
FROM "iptables_value"
WHERE "type" = 'ipt_bytes'
GROUP by time(10s), * fill(null)
END
(not sure of the exact syntax). You could then re-write your queries to
do something like this:
SELECT sum("value")
FROM "iptables_rate_10s" WHERE
"type" = 'ipt_bytes' AND
"type_instance" = "$host" AND
"instance" = 'filter-INPUT' AND
$timeFilter
GROUP BY time($interval) fill(null)
I'm not quite sure if this works but it's what I've been toying about
doing for my use case and have tested parts of it. I think the general
idea will work, though.
What to do? I cannot define a Continuous Query for every possible combination
(subset) of hosts that the user can use. That would be 2^n CQs for n hosts… =)
--
Aaron Knister
NASA Center for Climate Simulation (Code 606.2)
Goddard Space Flight Center
(301) 286-2776
--
Remember to include the InfluxDB version number with all issue reports
---
You received this message because you are subscribed to the Google Groups "InfluxDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/influxdb.
To view this discussion on the web visit
https://groups.google.com/d/msgid/influxdb/e7d2aa4a-c38c-604c-bef2-1152150a39ad%40nasa.gov.
For more options, visit https://groups.google.com/d/optout.