Как стать автором
Обновить

Комментарии 4

Отличная статья, спасибо!

Но есть один вопрос. Каким образом можно преобразовать макросы, собираемые в процессе дискаверинга?

Например: есть discovery[{#PONDX},dot3adAggPortActorOperKey,{#IFALIAS},ifAlias,{#IFNAME},ifName]

Т.к. некое оборудование, не будем тыкать в него пальцами, почему-то в snmp отдает значения OID dot3adAggPortActorOperKey уменьшенными на единицу, то необходимо инкрементировать значение макроса {#PONDX}, не трогая при этом остальные. Возможно ли это и как?

Спасибо)
Конечно, можно.

JS препроцессинг, принять все, что отдало дискавери:
var a = JSON.parse(value);

потом перебрать весь массив через forEach (не помню только, есть там 'data' в ответе ключа discovery или нет):
a.data.forEach(function(b) {b['{#PONDX}']++});

и вернуть
return a;
Большое спасибо за ответ.
Сделал вот такой JS
var a = JSON.parse(value);
a.data.forEach(function(b) {b['{#PONDX}']++});
return a;


На что Zabbix сругнулся вот такими нехорошими словами:
Preprocessing failed for: [{"{#SNMPINDEX}":«436396032»,"{#PONDX}":«3»,"{#IFALIAS}":«RU-KURGAN-HQT12-DIST02|Te2/1|10.145.9.2…
1. Failed: TypeError: cannot read property 'forEach' of undefined
at [anon] (duktape.c:56522) internal
at [anon] (function:2) preventsyield


Подскажите, плиз, что не так? Или где можно посмотреть ключи вывода? В wiki Zabbix.com не нашел такого…
Добился результата таким скриптом:
obj = JSON.parse(value);
for (var i=0; i<obj.length; i++){
++obj[i]["{#PONDX}"];
}
return JSON.stringify(obj); 


Спасибо Вам за вдохновение и подсказки!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий