Я возился с панелью управления Grafana для моей домашней сети, и у меня возникли некоторые проблемы с графическим отображением пропускной способности сети. Я собираю данные в виде октетов ввода / вывода из моего EdgeRouter Lite с помощью SNMP (через Telegraf) и сохраняю их в InfluxDB.
Для некоторой предыстории данных: я сопоставляю SNPM OID IF -MIB :: ifInOctets
в поле "in"
в InfluxDB, и ifOutOctets
в "out"
.
Вот как выглядит мой график: Конфигурация графика и запроса . Вы можете увидеть странный отрицательный всплеск около 13:03 по центральноевропейскому времени и запрос, который я использовал для графика. Необработанный запрос выглядит так:
SELECT derivative(mean("in"), 1s) * 8 FROM "interfaces" WHERE "agent_host" = 'erl-0' AND "interface" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)
Необработанные данные из InfluxDB выглядят так:
time agent_host interface alias in out
1473678126000000000 erl-0 eth0 WAN 3205308591 319785590
1473678136000000000 erl-0 eth0 WAN 3321553117 353290530
1473678147000000000 erl-0 eth0 WAN 3445036903 392119701
1473678156000000000 erl-0 eth0 WAN 3581558041 425580762
1473678166000000000 erl-0 eth0 WAN 3672208729 443676764
1473678176000000000 erl-0 eth0 WAN 3788670837 466220844
1473678187000000000 erl-0 eth0 WAN 3919232023 492503082
1473678196000000000 erl-0 eth0 WAN 4049747221 519032038
1473678206000000000 erl-0 eth0 WAN 4175388518 542356489
1473678216000000000 erl-0 eth0 WAN 4267330205 555825188
1473678226000000000 erl-0 eth0 WAN 92739158 574152376
1473678236000000000 erl-0 eth0 WAN 214850117 592841397
1473678247000000000 erl-0 eth0 WAN 368351063 615091793
1473678257000000000 erl-0 eth0 WAN 471647935 629344345
1473678268000000000 erl-0 eth0 WAN 561029600 640088389
1473678295000000000 erl-0 eth0 WAN 853931068 683745372
Я совсем не разбираюсь в графиках и математике, поэтому мне трудно понять, где возникает эта ошибка - это ли исходные данные странные, или расчет неверный? Что я могу сделать, чтобы это исправить? Ответ
mzhaase помог мне разобраться в проблеме. Я также узнал, что InfluxDB имеет функцию non_negative_derivative ()
, которая дает мне результат, который мне нужен.
Вы вычисляете производную. Таким образом, вы фактически не получаете пропускную способность, вы получаете изменение пропускной способности, как это делают производные. Вы можете видеть, что до отрицательного всплеска у вас было 4 или 5 точек данных около 100 Мбит - это означает, что до всплеска ваша пропускная способность медленно увеличивалась с 0 до примерно 500 Мбит. Таким образом, когда он упадет до нуля, вы получите отрицательное значение 500 Мбит.