power / knowledge

TrueNAS의 UPS 그래프가 비어 있을 때

paul 2025.10.07 205words (1m)

TrueNAS를 NUT의 secondary로 붙였는데 Reporting의 UPS 그래프에 아무것도 안 나왔다. UPS 서비스 자체는 붙어 있고 상태도 정상으로 뜨는데 그래프만 비어 있었다.

netdata 로그를 보니 계속 이러고 있었다.

text
charts.d: : nut_ups: command 'upsc -l ' failed with code 1:
 --- BEGIN TRACE ---
Error: Connection failure: Connection refused
 --- END TRACE ---

upsc -l 뒤가 비어 있다. TrueNAS의 netdata가 UPS 목록을 가져올 때 주소 없이 호출하고 있었다. 로컬에 upsd 가 없는 secondary 구성이라 당연히 거절당한다. upsc -l <NUT 서버 주소> 로 불러야 한다.

해결

netdata의 nut 수집기 설정을 직접 만들어서 주소를 박아넣는다.

bash
# /etc/netdata/charts.d/nut_ups.conf

MY_NUT_HOST="<NUT 서버 주소>:3493"

nut_get_all() {
	run -t $nut_timeout upsc -l ${MY_NUT_HOST} || echo "skip-get-values"
}

nut_get() {
  if [ $1 == "skip-get-values" ]; then
    return 0;
  fi

  run -t $nut_timeout upsc "${1}@${MY_NUT_HOST}"

  if [ "${nut_clients_chart}" -eq "1" ]; then
    printf "ups.connected_clients: "
    run -t $nut_timeout upsc -c "${1}@${MY_NUT_HOST}" | wc -l
  fi
}

기본 함수 두 개를 덮어써서 호출마다 주소가 붙게 한다. skip-get-values 는 목록을 못 가져왔을 때 뒤 단계가 이상한 값으로 도는 걸 막는 장치다.

console
$ systemctl restart netdata.service

업데이트하면 다시 만들어야 한다

TrueNAS를 업데이트하면 이 파일이 사라진다. 시스템 데이터셋 밖에 있는 파일이라 업그레이드 때 날아간다. 업데이트 후에 그래프가 다시 비어 있으면 이걸 의심하면 된다.

이 문제는 iXsystems 이슈 트래커에 올라온 내용을 참고했다.