сводная таблица метрик

Started by andrey_D, March 30, 2021, 06:42:08 AM

Previous topic - Next topic

andrey_D

Есть сводная таблица метрик в которой отображаются данные  с группы коммутаторов cisco с определенного порта. К примеру  мониторинг на наличие линка 5 порта на всех коммутаторах. Есть группа коммутаторов другого вендора на них линк мониторится на других портах на 6. В дашборде в таблице получается основные 3 столбца первый столбец хостнейм коммутатора два других столбца номера порта для каждой группы коммутаторов (2 столбец линк 5 порта для cisco,3 столбец для 20 порта другого вендора) . Как сделать что бы было всего один столбец к примеру для cisco данные по линку брались с порта 5 а для коммутаторов другого вендора c порта 20 но это было отображено в одном столбце?

Filipp Sudanov

Если у этих коммутаторов порты называются как-то по разному, то можно в summary table в свойствах колонки включить использование регулярных выражений и написать регулярку с OR.

Второй путь, более универсальный - делать на этих нодах дополнительный скриптовый DCI. В его скрипте определять модель коммутатора, брать последнее значение DCI соответствующего нужному порту и сохранять. Если история по этому DCI нигде не требуется, то для него можно выбрать время хранения "не сохранять в базу".
Ну или тоже самое можно сделать другим путем - DCI может быть не скриптовым, а push. А скриптоваться в transformation script оригинальных DCI и оттуда делать PushDCIData(node,dciId,value). Но так, возможно, более путанно и чуть хуже по производительности.

andrey_D

#2
А можно подробнее, не силен в скриптах и регулярных выражений. Данные в сводную таблицу заносятся по статусу OID .1.3.6.1.2.1.2.2.1.8.1 это одной группы коммутаторов и к примеру
.1.3.6.1.2.1.2.2.1.8.23 других.

Filipp Sudanov

Просто список возможных OIDов, разделенных |

andrey_D

#4

Создаю таблицу метрик к примеру с двумя значениями. Потом создаю dashboards и мне необходимо вывести эти показания с одного коммутатора, как это сделать?
Необходимо в пределах одного коммутатора мониторить несколько портов и выводить в виде таблицы. При создании дашборда указываешь группу коммутаторов он нормально заполняет таблицу по одному значению с каждого устройства, а с необходимо несколько портов с одного.

Victor Kirhenshtein

Возможно используете не тот элемент на дашборде (DCI summary table судя по описанию) - надо использовать "table value" - он показывает значение конкретной таблицы.

andrey_D

Создал таблицу "table value" теперь данные выводятся с одного коммутатора, а как теперь отфильтровать что бы выводились в таблицу определенные порты а не все?

Victor Kirhenshtein

С этим буде сложнее - функции фильтра для показа у этого элемента нет. Единственный вариант, который приходит в голову - сделать еще один табличный DCI, и в нем transformation script, который будет удалять ненужные строки. И уже этот DCI выводить на дашборд.

andrey_D

а как на примере в transformation script, удалить ненужные строки? к примеру удалить порты в таблице

Filipp Sudanov

В трансформационном скрипте у табличного DCI в $1 будет объект класса Table
https://www.netxms.org/documentation/nxsl-latest/#class-table

У него в частности есть метод deleteRow(rowId)


andrey_D

А есть способ удалить строки по поиску совпадений, например искать в строке GigabitEthernet и что бы все строки где встречается GigabitEthernet удалялись (к примеру GigabitEthernet0/0/1 содержит GigabitEthernet удаляем).

Filipp Sudanov

Вот пример скрипта. Он берет значения из левой колонки (0 в get(r, 0), следующая колонка будет 1 и т.д.).

for(r = 0; r < $1->rowCount; r++)
{
   v = $1->get(r, 0);
   if (v->startsWith("GigabitEthernet"))
   {
      $1->deleteRow(r);
      r--;
   }
}