CodingBox Q&A Ask question

Nokia 7705에서 LibreNMS discovery가 Column 'channels' cannot be null로 죽고 DOM을 수집하지 못함

Asked Active Viewed 60 AI translation from English
3

LibreNMS에서 Nokia 7705 애그리게이션 라우터 몇 대를 폴링하고 있는데, 늘 그렇듯 구간이 나빠지는 걸 고객이 알아채기 전에 잡으려고 광 DOM을 받고 싶었습니다. 그런데 이 장비들에서는 discovery가 끝까지 안 갑니다.

  • TiMOS를 구동하는 Nokia 7705
  • LibreNMS 26.3.1
  • 포트에는 일반적인 단일 레인 1G SFP, 벤더는 여러 종류에 일부는 오래된 것
  • SNMP 자체는 정상: 인터페이스, CPU, 메모리, 트래픽 모두 정상적으로 폴링됨

discovery는 매번 여기서 멈춥니다:

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

그 결과 라우터 전체에 트랜시버 항목도 광 센서도 하나도 안 생깁니다 - 포트 하나만 문제고 나머지는 정상인 게 아니라, 장비 전체가 통째로 빈 채로 나옵니다.

시도한 것:

  • 해당 장비 하나만 따로 discovery 재실행, 같은 지점에서 같은 에러
  • 장비를 삭제하고 다시 추가: 생성은 되는데 discovery가 같은 지점에서 죽음
  • 같은 환경의 다른 벤더 장비는 트랜시버와 DOM이 정상적으로 discovery됨, 그러니 제 쪽 데이터베이스가 고장난 것 같지는 않음

이거 TiMOS discovery의 알려진 문제인가요? 이 라우터들의 트랜시버 discovery를 아예 끄는 것 말고 다른 해법이 있을까요?

Comments 3

Accepted answer

알려진 문제이고, 데이터베이스 탓이 아닙니다.

TiMOS discovery 코드는 TIMETRA-PORT-MIB::tmnxPortSFPNumLanes에서 레인 수를 가져와서 받은 값을 그대로 channels 컬럼에 넣는데, 이 컬럼은 NULL을 받지 않습니다. 오래된 단일 레인 광모듈이 주범인 경우가 많습니다. 에이전트가 그런 모듈에 대해서는 그 객체 값을 아예 채우지 않다 보니, 포트가 insert에 null을 넘기고, insert가 터지면서 장애가 해당 장비의 트랜시버 discovery 전체를 끌고 내려갑니다. 특이 모듈이 꽂힌 포트 하나가 아니라 모든 포트를 잃는 이유가 바로 이겁니다.

빠져나갈 방법은 두 가지입니다. 가장 깔끔한 건 LibreNMS를 최신으로 올리는 겁니다 - 업스트림에 반영된 수정이 LibreNMS/OS/Timos.php에서 값을 보호해서, 레인 수가 없거나 비어 있으면 단일 채널로 읽고 그 외의 값은 정수로 강제 변환합니다. 지금 버전에 묶여 있다면 그 파일에 같은 보호 로직을 직접 넣으세요. 몇 줄이면 되지만, 기억해 두지 않으면 다음 업데이트 때 사라집니다.

뭔가 패치하기 전에 라우터에서 TIMETRA-PORT-MIB::tmnxPortSFPNumLanes를 먼저 조회해 보세요. 아무 응답이 없는 포트가 바로 insert를 죽이는 포트이니, 거기 어떤 광모듈이 꽂혀 있는지 확인해 둘 가치가 있습니다.

7 CanadalinkadminCA Show original (English) AI translation

두 가지 다 확인했습니다, 감사합니다.

그 OID를 조회해 보니, 가장 오래된 1G 광모듈이 꽂힌 포트는 레인 수 자체가 아무것도 안 돌아오고, 더 최신 모듈은 전부 1로 응답합니다. 그러니 null은 말씀하신 그대로 제가 물려받은 모듈들에서 나오는 거였습니다.

그 체크가 들어간 빌드로 올리고 나니, 모든 7705에서 discovery가 끝까지 돌고, 트랜시버가 각각 단일 채널로 나타나고, 광 센서도 그래프에 찍히고 있습니다. 라우터 쪽은 아무것도 안 바꿨고, 제외한 포트도 없습니다.

0 Indiawaverunner21IN Show original (English) AI translation

이제 discovery가 끝까지 도니 예상해 둘 만한 게 두 가지 있습니다.

Nokia 장비에서 DDM은 모듈 EEPROM의 capability 플래그로 게이팅됩니다. 이건 제품군 전체에 걸친 공통 방식이고, 7210 SAS 인터페이스 가이드에 가장 분명하게 적혀 있습니다. 플랫폼은 그 플래그를 전혀 세팅하지 않은 모듈에 대해서도 진단값을 아무렇지 않게 찍어내면서, 같은 문단에서 그 수치를 검증하거나 확인한 적이 없다고 말합니다. 사용 중인 장비와는 다르지만 논리는 같습니다 - 서드파티 광모듈에서 그럴듯한 RX/TX 수치가 나온다고 해서 캘리브레이션이 맞다는 증거는 아닙니다.

나머지 절반은 모듈 자체입니다. GLC-SX-MM에는 A2h 페이지가 없어서 어떤 폴러도 읽을 게 없습니다. GLC-SX-MMD에는 있고, 그 D가 diagnostics를 뜻합니다. 그래프 하나가 계속 평평하게 비어 있다면 폴러를 의심하기 전에 그것부터 확인하세요.

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