Есть сводная таблица метрик в которой отображаются данные с группы коммутаторов cisco с определенного порта. К примеру мониторинг на наличие линка 5 порта на всех коммутаторах. Есть группа коммутаторов другого вендора на них линк мониторится на других портах на 6. В дашборде в таблице получается основные 3 столбца первый столбец хостнейм коммутатора два других столбца номера порта для каждой группы коммутаторов (2 столбец линк 5 порта для cisco,3 столбец для 20 порта другого вендора) . Как сделать что бы было всего один столбец к примеру для cisco данные по линку брались с порта 5 а для коммутаторов другого вендора c порта 20 но это было отображено в одном столбце?
Если у этих коммутаторов порты называются как-то по разному, то можно в summary table в свойствах колонки включить использование регулярных выражений и написать регулярку с OR.
Второй путь, более универсальный - делать на этих нодах дополнительный скриптовый DCI. В его скрипте определять модель коммутатора, брать последнее значение DCI соответствующего нужному порту и сохранять. Если история по этому DCI нигде не требуется, то для него можно выбрать время хранения "не сохранять в базу".
Ну или тоже самое можно сделать другим путем - DCI может быть не скриптовым, а push. А скриптоваться в transformation script оригинальных DCI и оттуда делать PushDCIData(node,dciId,value). Но так, возможно, более путанно и чуть хуже по производительности.
А можно подробнее, не силен в скриптах и регулярных выражений. Данные в сводную таблицу заносятся по статусу OID .1.3.6.1.2.1.2.2.1.8.1 это одной группы коммутаторов и к примеру
.1.3.6.1.2.1.2.2.1.8.23 других.
Просто список возможных OIDов, разделенных |
(https://ie.wampi.ru/2022/04/23/111.png)
Создаю таблицу метрик к примеру с двумя значениями. Потом создаю dashboards и мне необходимо вывести эти показания с одного коммутатора, как это сделать?
Необходимо в пределах одного коммутатора мониторить несколько портов и выводить в виде таблицы. При создании дашборда указываешь группу коммутаторов он нормально заполняет таблицу по одному значению с каждого устройства, а с необходимо несколько портов с одного.
Возможно используете не тот элемент на дашборде (DCI summary table судя по описанию) - надо использовать "table value" - он показывает значение конкретной таблицы.
Создал таблицу "table value" теперь данные выводятся с одного коммутатора, а как теперь отфильтровать что бы выводились в таблицу определенные порты а не все?
С этим буде сложнее - функции фильтра для показа у этого элемента нет. Единственный вариант, который приходит в голову - сделать еще один табличный DCI, и в нем transformation script, который будет удалять ненужные строки. И уже этот DCI выводить на дашборд.
а как на примере в transformation script, удалить ненужные строки? к примеру удалить порты в таблице
В трансформационном скрипте у табличного DCI в $1 будет объект класса Table
https://www.netxms.org/documentation/nxsl-latest/#class-table
У него в частности есть метод deleteRow(rowId)
А есть способ удалить строки по поиску совпадений, например искать в строке GigabitEthernet и что бы все строки где встречается GigabitEthernet удалялись (к примеру GigabitEthernet0/0/1 содержит GigabitEthernet удаляем).
Вот пример скрипта. Он берет значения из левой колонки (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--;
}
}