CodingBox Q&A Ask question

LibreNMS에서 ZXA10 OLT: 포트 페이지에 트랜시버 dBm이 안 나오고 팬이랑 PSU 센서까지 사라짐

Asked Active Viewed 101 AI translation from English
5

LibreNMS로 ZTE ZXA10 OLT 여러 모델을 섞어서 폴링하고 있는데 두 가지가 잘못됐어요. 서로 관계없는 문제일 것 같긴 한데, 확신은 없어요.

  • ZTE ZXA10 C300, V2.1.0, 오래된 POP에서 아직 서비스 중
  • ZTE ZXA10 C620, V2.0.30, 거기에 C650이랑 C650E도
  • 예전엔 멀쩡했던 ZTE ZXA10 C320 한 대
  • SFP, SFP+ 업링크, 그 아래에 GPON 카드들

첫 번째 문제: 포트 페이지에 트랜시버 센서가 아예 없어요. dBm 단위 수신/송신 파워도, 모듈 온도도, 공급 전압도, 레이저 바이어스 전류도 없어요. 가입자들이 전화하기 전에 더러운 커넥터를 잡아내려면 이 수치들이 필요한데 말이죠.

두 번째 문제: C320에서는 잘 되던 상태 센서들, 팬이랑 전원공급장치랑 카드 상태가 재검색(rediscovery) 후에 조용히 사라졌어요. 로그에 에러도 없고 뭐가 실패한 것도 아닌데, 그냥 장치에서 사라져 있어요.

장비를 손으로 직접 walk해보면 광 데이터가 MIB 어딘가에 분명히 있긴 한데, 한 플랫폼에서 응답하는 OID가 다른 플랫폼에서는 아무것도 안 돌려줘요:

snmpwalk -v2c -c <community> <olt> .1.3.6.1.4.1.3902.1015.3.1.13.1

지금까지 해본 것:

  • 모든 장치에서 재검색이랑 전체 폴링을 다시 해봤어요
  • 같은 OID에서 C650이 돌려주는 값이랑 C300이 돌려주는 값을 비교해봤어요
  • 빈 케이지 때문에 discovery가 포기하는 건 아닌지 확인해봤어요

ZXA10 계열에서 광 수치는 실제로 어디에 있는 건가요? 그리고 뭐 때문에 상태 센서가 로그 하나 안 남기고 discovery에서 사라지는 걸까요?

Comments 5

Accepted answer

둘 다 알려진 문제고, 짐작하신 대로 서로 관계없어요.

어떤 광 테이블을 쓰는지는 플랫폼에 따라 달라지고, 한 장비에 둘이 같이 있는 경우는 없어요. 여기서 V2.1.0으로 테스트해본 구형 C300은 zxAnOpticalModuleMonTable을 노출해요:

snmpwalk -v2c -c <community> <olt> .1.3.6.1.4.1.3902.1015.3.1.13.1

V2.0.30의 C620, 그리고 C650이랑 C650E는 대신 zxAnOpticalModuleInfoTable을 노출하고요:

snmpwalk -v2c -c <community> <olt> .1.3.6.1.4.1.3902.1082.30.40.2.4.1

어느 테이블이든 똑같이 네 가지 값을 줘요: dBm 단위 rx/tx 파워, 모듈 온도, 공급 전압, 레이저 바이어스 전류요. 원시값에는 0.001 스케일링이 필요하고요. sentinel 값 두 개도 걸러줘야 하는데, 안 그러면 섀시의 빈 케이지마다 다 알람이 울려요: 지원 안 되는 포트나 채워지지 않은 케이지는 2147483647을 돌려주고, 신호 없는 포트는 -80000을 돌려줘요. 카드 존재 여부는 애초에 광 폴링에 속하는 게 아니라, 비어 있는 슬롯은 건너뛰는 별도의 operational-status 상태 센서예요.

사라진 팬, PSU, 카드 상태는 다른 버그예요. 플랫폼 YAML의 상태 항목들에 value: 키가 빠져 있었고, 그게 없으면 discovery가 테이블 이름을 컬럼인 것처럼 읽다가 쓸 만한 게 없어서 아무 에러도 없이 그냥 센서를 조용히 버려요. 그래서 그냥 없어진 것처럼만 보였던 거예요. 여기서는 그 키를 다시 넣었더니 C320 테스트 장비에서 센서 여섯 개가 돌아왔어요.

이걸 염두에 두고 계획 세우기 전에 미리 말씀드리면: 이건 머지된 게 아니라 아직 오픈된 변경사항에 실려 있고, 리뷰 과정에서 이더넷 에러 모니터링은 이미 범위 밖이라고 빠졌어요. 기다리면 나올 수정이 아니라 직접 들고 다니는 패치라고 생각하세요.

4 Brazilopticnerd31BR Show original (English) AI translation

그 장비들이 각각 보고하는 sysDescr을 좀 보여주세요. 광 MIB 기준으로는 C300, C320, C620, C650, C650E가 한 계열이 아니라서, 일부에서는 응답하고 나머지는 조용한 OID가 나오는 건 결함이 아니라 예상된 동작이에요.

가장 차이가 큰 두 장비, C300이랑 C650 중 하나에서, 이미 시도해본 그 OID로 walk한 결과 끝부분을 올려주세요. 하나는 응답하고 하나는 비어 있으면 그게 얘기의 전부고, 수정은 플랫폼별로 따로 해야 해요.

그리고 두 문제는 계속 따로 떼어서 보세요. 팬이랑 PSU 센서가 없어진 건 discovery 정의 문제고, OLT가 어떤 광 테이블을 구현하는지랑은 아무 상관이 없어요.

1 RussianetadminRU Show original (English) AI translation

반대편에서도 이 공백을 확인해드릴게요. 저도 25.8.0-dev에서 같은 계열에 대해 물어본 적이 있어요: C320 GPON OLT였는데, 제가 원했던 건 OLT랑 ONU 양쪽 GPON 포트의 그래프였어요 - rx/tx 파워 레벨, 각 링크 거리 측정값, 포트별 사용률까지요 - 그리고 이 계열용 템플릿이 어딘가 이미 있는지도요.

아무도 OID나 walk 결과나 방법을 올리지 않은 채로 그냥 닫혔고, 그래서 남은 건 C320 계열의 기본 지원이 부분적이라는 사실뿐이에요. 돌이켜보면 요청할 때 walk 결과를 같이 첨부했어야 했어요. 어차피 이걸 만드실 거라면, ONU 광 레벨은 아직 아무도 안 한 부분이라 저희 중에서도 쓸 사람이 많을 거예요.

3 Indonesiasfpeng49ID Show original (English) AI translation

저희 장비들도 똑같이 그러네요. C300은 .1.3.6.1.4.1.3902.1015.3.1.13.1에는 응답하고 다른 OID에는 아무것도 안 주고, C620이랑 C650은 반대고, C650E는 C650이랑 똑같이 동작해요.

값은 설명하신 대로 0.001 스케일링이 필요한 정수로 돌아와요. 처음엔 쓰레기 값처럼 보였던 것들이 이제 이해가 되네요: 한 번도 채운 적 없는 케이지에서는 2147483647이 나오고, 반대편이 꺼져 있는 포트 두 개에서는 -80000이 나와요. 여기서도 두 sentinel 값 다 실제로 나오니까, 원시값에 바로 임계값을 걸면 알림이 엄청 시끄러워질 거예요.

플랫폼 YAML도 확인해봤는데 저희 쪽에도 value: 키가 똑같이 빠져 있어요. 변경사항이 아직 오픈 상태니까 로컬에서 그대로 들고 갈게요. 처음부터 제가 잘못 생각했던 부분은 두 문제를 나눠서 봐야 했다는 거였어요.

0 South KoreanetrunnerKR Show original (English) AI translation

이거 만드실 때 하나 염두에 두시면 좋은 게, DOM 데이터가 일부만 있는 건 ZTE만의 얘기가 아니에요.

SONiC에서는 CISCO-AVAGO AFBR-89CDDZ-CS3 QSFP28의 EEPROM이 문제없이 읽히고, TRANSCEIVER_INFO, TRANSCEIVER_DOM_SENSOR, TRANSCEIVER_STATUS 전부 identity에 온도, 전압, 레인별 바이어스와 파워까지 채워지는데, control이랑 status 그룹은 아예 없어요: get_rx_los, get_tx_fault, get_tx_disable, get_lpmode, get_power_override가 데이터베이스 뷰에서 아무것도 안 돌려주니까, 그 값들이 필요하면 플랫폼 API에 직접 물어봐야 해요.

방화벽 쪽에서도 같은 교훈이 있어요. PAN-OS에서는 show transceiver-detail all이 진단 블록을 출력하는데, 제일 먼저 봐야 하는 필드가 diagnostic-monitor예요. 거기 No라고 나오면 그 모듈은 digital optical monitoring을 구현 안 한 거라 모든 값이 N/A로 나와요. 거기는 고장이 아니라 그냥 읽을 게 없는 거예요. DOM 없는 모듈이 죽은 포트처럼 보이지 않게 그 구분을 알림 로직에 넣어두는 게 좋아요.

0 CanadalantechCA Show original (English) AI translation
Log in to comment. Log in