power / knowledge
TrueNAS의 UPS 그래프가 비어 있을 때
TrueNAS를 NUT의 secondary로 붙였는데 Reporting의 UPS 그래프에 아무것도 안 나왔다. UPS 서비스 자체는 붙어 있고 상태도 정상으로 뜨는데 그래프만 비어 있었다.
netdata 로그를 보니 계속 이러고 있었다.
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 수집기 설정을 직접 만들어서 주소를 박아넣는다.
# /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 는 목록을 못 가져왔을 때 뒤 단계가 이상한 값으로 도는 걸 막는 장치다.
$ systemctl restart netdata.service
업데이트하면 다시 만들어야 한다
TrueNAS를 업데이트하면 이 파일이 사라진다. 시스템 데이터셋 밖에 있는 파일이라 업그레이드 때 날아간다. 업데이트 후에 그래프가 다시 비어 있으면 이걸 의심하면 된다.
이 문제는 iXsystems 이슈 트래커에 올라온 내용을 참고했다.