Dec 072010
 

UPS 모니터링(Monitoring) 오픈소스 프로젝트인 NUT(http://www.networkupstools.org/) 설정방법입니다.
80개 가까운 UPS 모델을 지원해오고 있는 프로젝트입니다.
serial port나 usb port를 지원하는, 원격 모니터링 가능한 ups를 손쉽게 모니터링/제어하는 기능을 제공하며, 많은 viewer(client project) 및 라이브러리도 제공하고 있습니다.
또한 기존 기능에 통합할 수 있도록 daemon을 통해 통신방식으로 원격에서 직접 모니터링/제공할 수 있도록 프로토콜 문서도 공개되어 있습니다.
대부분의 UPS 제조 회사에서는 통신 프로토콜을 공개하지 않고 있는 상황에서도 일일이 테스트해가면 구축된 프로젝트라서 알게 된 게 너무 기분이 좋았습니다 ^^*

필드에 나가있는 서버에 UPS 달아주고 원격 모니터링 & 제어 부분을 솔루션에 통합시키기 위해 테스트해본 결과입니다.
BNT-500AP를 위해 Driver source도 수정해서 테스트해봤는데, 아직까지는 잘됩니다.
그래도 혹시나 싶어서 기존 드라이버 개발자에게 메일로 보내놨습니다.
반영이 되면 많은 분들이 더 편하게 BNT-500AP 모델(현재 시점에서 제일 저가임)을 사용할 수 있을 것입니다.

※설정
#그룹, 사용자 추가
groupadd nut
useradd -g nut ups

#컴파일 & 설치 : 소스 풀어놓은 위치에서 실행
./configure –with-user=ups –with-group=nut
make
make install

#상태 데이타 디렉토리 추가
mkdir -p /var/state/ups
chmod 0770 /var/state/ups
chown root:nut /var/state/ups

#serial 장치 권한 변경(실제 생성되는 장치명으로 해야함)
chmod 0660 /dev/ttyS0
chown root:nut /dev/ttyS0

#/usr/local/ups/etc/ups.conf
#BNT-500AP 인식이 추가된 소스 사용시에만 다음처럼 사용가능
#다른 모델의 경우 소스를 참조해서 설정파일을 만들어야 함
[BNT-500AP]
        driver = powercom
        port = /dev/ttyS0
        manufacturer = PowerCom
        type = BNT-500AP
        modelname = BNT-500AP
        serialnumber = Unknown

#/usr/local/ups/etc/upsd.conf
LISTEN 127.0.0.1 3493
LISTEN 192.168.1.251 3493

#/usr/local/ups/etc/upsd.users
[upsmon]
        password = 암호
        upsmon master

#/usr/local/ups/etc/upsmon.conf
MONITOR BNT-500AP@127.0.0.1 1 upsmon 암호 master
POWERDOWNFLAG /var/state/ups/killpower

#conf파일 권한변경
chown root:nut /usr/local/ups/etc/*.*
chmod 0640 /usr/local/ups/etc/*.*

#방화벽 개방 : 3493번 TCP 추가, 필요시 공유기 포트포워딩에도 추가해야함
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3493 -j ACCEPT

#방화벽 재기동
/etc/rc.d/init.d/iptables restart

※테스트
#ups용 driver 가동
/usr/local/ups/bin/upsdrvctl start

#upsd 실행/중단
가동 : /usr/local/ups/sbin/upsd
중단 : /usr/local/ups/sbin/upsd -c stop

#upsd 동작확인
/usr/local/ups/bin/upsc BNT-500AP@127.0.0.1

#upsmon 실행/중단
가동 : /usr/local/ups/sbin/upsmon
중단 : /usr/local/ups/sbin/upsmon -c stop

#외부 네트워크에서 upsd 동작 확인 : 자세한 명령어는 소스/docs/protocol.txt 참조
telnet 서버ip주소 3493
LIST VAR BNT-500AP –> BEGIN LIST VAR BNT-500AP ~ 데이타값 ~ END LIST VAR BNT-500AP

※부팅시 자동실행 설정 : /etc/rc.d/rc.local에 다음 내용 추가
chmod 0660 /dev/ttyS0
chown root:nut /dev/ttyS0
/usr/local/ups/bin/upsdrvctl start
/usr/local/ups/sbin/upsd
/usr/local/ups/sbin/upsmon

※동작확인
/usr/local/ups/bin/upsc BNT-500AP@127.0.0.1 -> status=OL(On-Line : 전원 연결된 상태)
ups로 가는 전원 차단
/usr/local/ups/bin/upsc BNT-500AP@127.0.0.1 -> status=OB(On-Battery : 배터리 상태), charge가  시간 경과함에 따라 줄어듬
일정 시간 경과 후
/usr/local/ups/bin/upsc BNT-500AP@127.0.0.1 -> status=LB(Low-Battery : 배터리가 Low상태, Low상태 진입시기는 ups마다 다름)
shutdown 시작됨

※참고사항
전원 공급 끊어지자마자 shutdown을 원하는 경우는 upsmon.conf에 NOTIFY관련 옵션 수정 및 upsched 통해서 가능하기는 하지만, 비싼 ups 쓰는 데 굳이 이래야 되냐?라는 FAQ 내용이 있슴, 그래서 OB되자마자 Shutdown되는게 아니라 LB가 되어야 shutdown되기 시작하는 것임
 

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)