не срабатывает блокировка опроса конфигурации ноды - 5.2.8 ... 6.2.0

Started by eugene1, February 23, 2026, 08:55:56 AM

Previous topic - Next topic

eugene1

Quote from: Victor Kirhenshtein on June 14, 2026, 07:34:18 PMСделал исправление в сервере, должно исправить падение. Войдет в следующий релиз.
не срабатывает, все равно опрашивает и заново добавляет все VLAN при открытии, версия 6.2.0
из плюсов: при удалении всех VLAN одной операцией теперь ошибок не возникает, сервер не останавливается.

Alex Kirhenshtein

Самое простое решение - добавить в Hook::CreateInterface:

if (($1.name == "ISW001") and ($1->name ~= "^VLAN.*"))
{
    return false;   // не создавать VLAN-интерфейсы
}
return true;

eugene1

Quote from: Alex Kirhenshtein on July 09, 2026, 10:29:51 PMСамое простое решение - добавить в Hook::CreateInterface:
что то тоже не срабатывает - при ручном запуске опроса конфигурации в логе нет сообщений о блокировке(?) создания интерфейса. Компилятор ошибок на синтаксис не выдает.

Полагаю должно быть так ?
if (($node.name == "ISW001" or $node.name == "ISW002" or $node.name == "ISW003") and ($1.name ~= "^VLAN.*"))
{
    return false;   // не создавать VLAN-интерфейсы
}
return true;

Filipp Sudanov

Да, так правильно. Ну или можно чуть более лаконично:

if (($node.name in ["ISW001", "ISW002", "ISW003"]) and ($1.name ~= "^VLAN.*"))
{
    return false;  // не создавать VLAN-интерфейсы
}
return true;

eugene1

Quote from: Filipp Sudanov on July 10, 2026, 01:31:03 PMДа, так правильно. Ну или можно чуть более лаконично:

if (($node.name in ["ISW001", "ISW002", "ISW003"]) and ($1.name ~= "^VLAN.*"))
{
    return false;  // не создавать VLAN-интерфейсы
}
return true;


на одном их трех коммутаторов не срабатывает, и странным образом - добавляются все равно интерфейсы, но не все как ранее - а только последние некоторые, к примеру с 3385 по 3418 как на картинке.

eugene1

более подробно один из интерфейсов VLAN 3385 к примеру

Alex Kirhenshtein

Начиная с 5.2 статусный опрос сам запускает пересинхронизацию интерфейсов, если считает, что устройство перезагрузилось (коммит 4943ddf210, NX-2728). Перезагрузка определяется сравнением вычисленного времени старта системы (текущее время минус sysUpTime), а это значение из-за округления и сетевых задержек гуляет на 1–2 секунды между опросами. Любой сдвиг вперёд трактуется как рестарт — и выполняется полная синхронизация интерфейсов, которая не проверяет галочку запрета опроса конфигурации. Поэтому VLAN'ы возвращаются даже с установленной галочкой, обычно в течение нескольких минут: статусный опрос по умолчанию идёт раз в 60 секунд, отсюда и впечатление, что это происходит при раскрытии ноды.

По ISW002 (VLAN 3385–3418) по коду вижу два возможных пути: либо для этих интерфейсов не удалось запустить хук-скрипт (в этом случае интерфейс сейчас создаётся без проверки), либо они не создавались заново, а обновились по ifIndex — обновление существующего объекта хук не вызывает. Чтобы понять, какой вариант у вас, включите в netxmsd.conf отладку:

DebugTags = poll.status:5,node.iface:7
и после следующего появления VLAN'ов пришлите фрагмент лога по этой ноде — интересуют строки "system restart detected" и "accepted/rejected by filter".

Хук пока оставьте.

Victor Kirhenshtein