CodingBox Q&A Ask question

Обнаружение LibreNMS на Nokia 7705 падает с Column 'channels' cannot be null и не собирает DOM

Asked Active Viewed 60 AI translation from English
3

Опрашиваем несколько маршрутизаторов агрегации Nokia 7705 в LibreNMS, и я хотел получить с них оптический DOM по обычной причине - ловить деградацию линии раньше, чем о ней сообщит клиент. Обнаружение на этих устройствах никогда не завершается.

  • Nokia 7705 под управлением TiMOS
  • LibreNMS 26.3.1
  • обычные одноканальные SFP на 1G в портах, разные вендоры, некоторые старые
  • SNMP в остальном здоров: интерфейсы, CPU, память и трафик опрашиваются нормально

Обнаружение каждый раз останавливается здесь:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'channels' cannot be null

и в результате нет ни одной записи трансивера и ни одного оптического датчика для всего маршрутизатора - не один плохой порт при остальных рабочих, а всё устройство возвращается пустым.

Что пробовал:

  • перезапустил обнаружение только для этого устройства отдельно, та же ошибка в том же месте
  • удалил и заново добавил устройство: оно создаётся, а затем обнаружение падает в том же месте
  • другие вендоры в той же инсталляции обнаруживают трансиверы и DOM нормально, так что не похоже на сломанную базу данных с моей стороны

Это известная проблема обнаружения TiMOS, и есть ли что сделать, кроме как выключить обнаружение трансиверов для этих маршрутизаторов?

Comments 3

Accepted answer

Известная проблема, и дело не в вашей базе данных.

Код обнаружения TiMOS вытаскивает число линий из TIMETRA-PORT-MIB::tmnxPortSFPNumLanes и кладёт то, что получил, прямо в столбец channels, который не принимает NULL. Обычные виновники - более старая одноканальная оптика: агент никогда не заполняет этот объект для неё, так что порт передаёт в insert null, insert падает, и сбой утаскивает за собой обнаружение трансиверов на всём устройстве. Вот почему вы теряете каждый порт, а не только тот, где стоит нестандартный модуль.

Два выхода. Самый чистый - обновить LibreNMS: принятое апстримом изменение защищает значение в LibreNMS/OS/Timos.php, так что отсутствующее или пустое число линий читается как один канал, а всё остальное принудительно приводится к целому числу. Если застряли на текущем релизе, вставьте ту же защиту в этот файл вручную; это пара строк, хотя она исчезнет при следующем обновлении, если забудете, что она там есть.

Прежде чем что-либо патчить, пройдитесь по TIMETRA-PORT-MIB::tmnxPortSFPNumLanes на маршрутизаторе. Какие бы порты ни отвечали пустотой - именно они убивают insert, и стоит знать, какая оптика в них стоит.

7 CanadalinkadminCA Show original (English) AI translation

Подтвердилось по обоим пунктам, спасибо.

Пройдясь по этому OID: порты с самой старой оптикой на 1G вообще ничего не возвращают для числа линий, всё более новое отвечает единицей. То есть null приходит именно от унаследованных модулей, в точности как описано.

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

0 Indiawaverunner21IN Show original (English) AI translation

Две вещи, которых теперь стоит ожидать, раз обнаружение завершается.

DDM на оборудовании Nokia закрывается флагом возможностей в EEPROM модуля. Это общий подход по всем линейкам, и наиболее прямо он прописан в руководстве по интерфейсам 7210 SAS: платформа с готовностью выведет диагностику для модуля, который никогда не выставляет этот флаг, при этом в том же абзаце указывая, что она не проверяла и не подтверждала эти цифры. Другая коробка, чем у вас, та же логика - правдоподобные цифры RX/TX со сторонней оптики не доказывают, что калибровка верна.

Вторая половина - сам модуль. У GLC-SX-MM нет страницы A2h, так что там просто нечего читать любому опросчику; у GLC-SX-MMD есть, D означает диагностику. Один график, постоянно плоский и пустой - проверьте это раньше опросчика.

2 Netherlandsoptichub40NL Show original (English) AI translation
Log in to comment. Log in