
Stas
20.09.2017
07:10:17

Vladimir
20.09.2017
07:10:39

Stas
20.09.2017
07:11:16

Vladimir
20.09.2017
07:11:32

Google

Stas
20.09.2017
07:12:20
Парсеры на c++ и Oracle, хотелось бы nifi+Java парсер+clickhouse

Vladimir
20.09.2017
07:12:42
И вставлять в кх по нативному протоколу
С нуллами как есть

Stas
20.09.2017
07:13:49

Vladimir
20.09.2017
07:14:11
От парсера сейчас
Вопрос лишь в том чтобы делать конвертацию в бинарный вид в парсере

Stas
20.09.2017
07:15:01
Не вижу сильных отличий
Почему же? Так мы имеем парсер который надо дорабатывать каждый раз, а так мы имеем узкую таблицу в которую гарантировано придут метрики и надо поправить только запрос на вьюшку по созданию широкой таблицы
+ если изначально делать широкие таблицы - надо их часто делать alter с добавлением колонок...

Sergey
20.09.2017
07:18:16
кафка? :)

Vladimir
20.09.2017
07:18:34

Google

Vladimir
20.09.2017
07:18:36
Инты там
Флоаты

Stas
20.09.2017
07:19:53
Флоаты
В качестве значений могут быть:
Число положительное - результат замера
0 - замер произведён но например трафика нет
NULL - замер не произведён
Массив из того что выше - когда внутри группа измеряемых объектов
Так то string :(

Vladimir
20.09.2017
07:20:44
Или даже просто массив, по-моему он может быть пустым

Stas
20.09.2017
07:21:33

Vladimir
20.09.2017
07:21:41
Не надо в базу пихать строки

Stas
20.09.2017
07:22:12

Vladimir
20.09.2017
07:22:14
Когда ожидаются потом числа
Вот совсем не надр
А почему?
Ну потому что ты сложную логику пытаешься на базу переложить
Даже больше
Логику на которую база не рассчитана
Ну плюс тебя будет ждать расплата в виде очень медленных запросов на чтение
Ну относительно того же по интам
Возможно даже стоит уйти от массива в сторону колонки с Id измерения
Например

Stas
20.09.2017
07:26:10

Google

Vladimir
20.09.2017
07:26:28

Stas
20.09.2017
07:26:51

Vladimir
20.09.2017
07:27:11
Но это какая то ересь
Имхо
И так делать нельзя

Stas
20.09.2017
07:27:54
Ок, делай как знаешь
Так ч не хочу как знаю :) за идею с массивами - спасибо - попробую, метрику генерирую не я себе сам, она такая какая приходит и изменить я её не могу

Vladimir
20.09.2017
07:28:16
И уйди от массивов
И подумай ещё раз зачем тебе null и что будет с ними потом

Stas
20.09.2017
07:28:44

Vladimir
20.09.2017
07:29:02
Тебе надо отталкиваться в выборе структуры от того какие запросы будут
А не от того какие данные на входе

Stas
20.09.2017
07:30:29
И подумай ещё раз зачем тебе null и что будет с ними потом
Я знаю что с ним будет: например у нас есть счетчики:
C1,c2,c3
Формула расчета KPI -
C1^2+c2/c3
Но если хоть один счётчик пришёл как NULL - я не должен её расчитывать за полученное время, результат должен быть null что бы дальше при агрегации выкинуть неверный расчёт

Vladimir
20.09.2017
07:31:41
А что с массивами будет?
Вот выяснилось что все три - массивы ещё и разной длины

Stas
20.09.2017
07:32:55

Vladimir
20.09.2017
07:33:30

Google

Stas
20.09.2017
07:34:06

Vladimir
20.09.2017
07:34:15

Stas
20.09.2017
07:34:49
Да
Сегодня формула такая, а завтра - другая + KPI нужен для отчетности а для мониторинга нужны отдельные значения и графики в графане по ним

Vladimir
20.09.2017
07:35:24

Stas
20.09.2017
07:36:05
250gb+ на каждом естественно

Vladimir
20.09.2017
07:37:35


Виталий
20.09.2017
07:38:08
про то, что в телеграфе можно использовать два индекса при опросе таблицы.
[[inputs.snmp.table]]
name ="cbQosCMStatsTable"
oid = "CISCO-CLASS-BASED-QOS-MIB::cbQosCMStatsTable"
[[inputs.snmp.table.field]]
name = "cbQosConfigIndex"
oid = "CISCO-CLASS-BASED-QOS-MIB::cbQosConfigIndex"
is_tag = true
[[inputs.snmp.table.field]]
name = "cbQosParentObjectsIndex"
oid = "CISCO-CLASS-BASED-QOS-MIB::cbQosParentObjectsIndex"
is_tag = true
telegraf -config test.cfg -test
* Plugin: inputs.snmp, Collection 1
* Internal: 5m0s
> cbQosCMStatsTable,cbQosConfigIndex=1593,cbQosParentObjectsIndex=10248624,agent_host=10.1.2.3 cbQosCMPrePolicyPktOverflow=0i,cbQosCMPrePolicyBitRate=0i,cbQosCMDropByte=71674i,cbQosCMNoBufDropPkt=0i,cbQosCMFragmentByteOverflow=0i,cbQosCMFragmentByte=0i,cbQosCMPrePolicyByteOverflow=0i,cbQosCMPrePolicyByte=682036575i,cbQosCMPrePolicyByte64=682036575i,cbQosCMPostPolicyByteOverflow=0i,cbQosCMPostPolicyByte=681964901i,cbQosCMDropPktOverflow=0i,cbQosCMDropByteOverflow=0i,cbQosCMDropBitRate=0i,cbQosCMNoBufDropPkt64=0i,cbQosCMFragmentPktOverflow=0i,cbQosCMFragmentPkt=0i,cbQosCMPrePolicyPkt64=2233815i,cbQosCMPrePolicyPkt=2233815i,cbQosCMPostPolicyByte64=681964901i,cbQosCMPostPolicyBitRate=0i,cbQosCMDropPkt=49i,cbQosCMDropPkt64=49i,cbQosCMDropByte64=71674i,cbQosCMNoBufDropPktOverflow=0i 1505892809000000000


Stas
20.09.2017
07:38:27

Vladimir
20.09.2017
07:40:25
Плюс в кх есть replacingmerge tree

Stas
20.09.2017
07:41:59
Хотелось бы залить сложность разработки железом и мне кажется что CH для этого должен подойти

Vladimir
20.09.2017
07:42:27
В такой формулировке

Stas
20.09.2017
07:43:23

Vladimir
20.09.2017
07:43:31
Я к слову не понимаю почему массивы это сложно, если парсер из XML в нативный формат кх пишется в одно рыло за день

Stas
20.09.2017
07:44:15
Про массивы я уже понял - попробую :)
Чувствую что после реализации можно идти доклад для highload делать

Google


yuyu
20.09.2017
09:03:28
про то, что в телеграфе можно использовать два индекса при опросе таблицы.
[[inputs.snmp.table]]
name ="cbQosCMStatsTable"
oid = "CISCO-CLASS-BASED-QOS-MIB::cbQosCMStatsTable"
[[inputs.snmp.table.field]]
name = "cbQosConfigIndex"
oid = "CISCO-CLASS-BASED-QOS-MIB::cbQosConfigIndex"
is_tag = true
[[inputs.snmp.table.field]]
name = "cbQosParentObjectsIndex"
oid = "CISCO-CLASS-BASED-QOS-MIB::cbQosParentObjectsIndex"
is_tag = true
telegraf -config test.cfg -test
* Plugin: inputs.snmp, Collection 1
* Internal: 5m0s
> cbQosCMStatsTable,cbQosConfigIndex=1593,cbQosParentObjectsIndex=10248624,agent_host=10.1.2.3 cbQosCMPrePolicyPktOverflow=0i,cbQosCMPrePolicyBitRate=0i,cbQosCMDropByte=71674i,cbQosCMNoBufDropPkt=0i,cbQosCMFragmentByteOverflow=0i,cbQosCMFragmentByte=0i,cbQosCMPrePolicyByteOverflow=0i,cbQosCMPrePolicyByte=682036575i,cbQosCMPrePolicyByte64=682036575i,cbQosCMPostPolicyByteOverflow=0i,cbQosCMPostPolicyByte=681964901i,cbQosCMDropPktOverflow=0i,cbQosCMDropByteOverflow=0i,cbQosCMDropBitRate=0i,cbQosCMNoBufDropPkt64=0i,cbQosCMFragmentPktOverflow=0i,cbQosCMFragmentPkt=0i,cbQosCMPrePolicyPkt64=2233815i,cbQosCMPrePolicyPkt=2233815i,cbQosCMPostPolicyByte64=681964901i,cbQosCMPostPolicyBitRate=0i,cbQosCMDropPkt=49i,cbQosCMDropPkt64=49i,cbQosCMDropByte64=71674i,cbQosCMNoBufDropPktOverflow=0i 1505892809000000000
И что потом с этими абстрактными индексами в тегах делать? Их же ещё надо как-то в человеческие названия policy-map, классов и т.п. превратить. А если они ещё и вложенные, то веселее вдвойне.


Виталий
20.09.2017
09:12:13
имя политик не нужны. нужны только счетчики в классах. уже не имеет значения вложенность.
cbqos-show.sh | grep VIDEO
10.1.2.3|Gi0/2|15259361|VIDEO|10371104|LAN-C2
10.1.2.3|Gi0/2|15259361|VIDEO|1837680|LAN-C5
10.1.2.3|Gi0/2|15259361|VIDEO|9545408|LAN-C4
10.1.2.3|Gi0/2|15259361|VIDEO|12302432|LAN-C1
тут 15259361 - cbQosConfigIndex для класса VIDEO. Т.о. можно рисовать счетчики cbQosCMDropPkt для этого класса и группировать по уникальным cbQosParentObjectsIndex (5 столбец)
как бы для примера, на одном интерфейсе 4 политики и в каждой есть класс VIDEO
посмотреть какие видосы идут в каких классах

yuyu
20.09.2017
09:15:16

Виталий
20.09.2017
09:15:46
да, есть ограничения.
плюсы в том, что пишется в базу вся таблица и построить можно в итоге любой график

yuyu
20.09.2017
09:19:25
В общем случае cbqos таблица описывает дерево. И логично бы тогда в качестве тега использовать путь по дереву: имя_интерфейса.имя_политики.имя_класса и т.д.
Ну или отдельно меппинг индексов на имена держать.
Геморройный этот МИБ у киски.


Виталий
20.09.2017
09:20:47
я решил что мне будет достаточно вот этой таблицы cbQosCMStatsTable. тут все счетчики по всем классам. мне нужны дропы и полосу нарисовать.
CISCO-CLASS-BASED-QOS-MIB::cbQosCMDropPkt64.370.5074529 = Counter64: 1781
" а только для определённой структуры cbqos конфига. " для любой, но будет удобнее, если классы в политиках будут использоваться одни и те же, чтобы использовать минимум cbQosConfigIndex
интересно что cbQosConfigIndex для class-default равен 1593. у всех так?
предположу что cbQosConfigIndex генерится из имени класса, т.к. на разных маршрутизаторах у таких класснов одинаковое значение индекса.
поэтому если на всех маршрутизаторах обозвать класс для телефонизма одинаково, то во всей сети можно будет по одному индексу мониторить качество.
группировать по хостам и cbQosParentObjectsIndex капаситор умеет

Andrey
20.09.2017
10:07:57

yuyu
20.09.2017
10:31:54

Виталий
20.09.2017
10:32:53
посмотрите cbQosConfigIndex для class-default равен 1593?