Unix

APC UPS SMC1500I-2UC 설정

ForceCore 2022. 9. 3. 22:57

APC 메뉴얼도 구리고 소프트웨어도 구려서 설정하는데 애먹었다.

 

매뉴얼

쓸모없음

수작업으로 self-test 시작하는 방법도 알려줄법도 한데 그런것도 안 적혀있음

 

https://www.youtube.com/watch?v=17LFCegFg8M 

테스트는 위 동영상을 참고.

Smart Connect

쓸모없음. 되는게 없다. 구독모델인 것 같은데 기본적 기능까지 구독으로 해버린 느낌임. 그래도 장비를 등록하면 배터리모드로 전환될 때 이메일 정도는 오는 것 같다.

 

IP주소 심기

https://www.apc.com/ca/en/faqs/FA321794/

 

How to assign a fixed IP address to SmartConnect enabled Smart-UPS | APC Canada

 

www.apc.com

모델따라 다른데, 이 모델은 못 심는다. DHCP가 필수임. 다행히도 synology nas에서 dhcp서버를 쉽게 돌릴 수 있어서 그거는 좋았는데... IP주소가 있어도 할 수 있는 것이 없다. (뭐야 이 물건) SNMP로 엑세스 안 됨.

내가 만져본 모델은 위 링크의 설명에 "라우터 들어가서 ip주소를 심어라"고 되어있다. 즉, nas에서 static ip 설정이 불가능하다.

To set a fix IP address for the embedded SmartConnect network port you must log into the router the UPS is connected to via the network. Find the mac address of the UPS that has registered with the router. The mac address is the product ID number. It will be found on the sticker on top or the back of the UPS. 

 

되는 설정

사용방법에 대한 소개가 끝났으니 이제 내가 한 세팅을 적는다. ups에 서버 3대, 네트워크 스위치 1개가 연결되어있다. 스위치는 신경쓸 것 없고 서버 3대가 정전시 battery low event가 ups로부터 오면 gracefully shutdown하는 설정인데, ups는 1대, 서버는 다수인 상황임. 위에, 네트워크로는 ups가 전혀 반응이 없다고 했다. 그러면 어떻게 했느냐?

 

이 그림처럼 되어있다.

1. 전원은 모두 ups에 연결됨.

2. 네트웍으로 연결은 안 되지만 usb는 되어서, 서버 1에 연결함

3. 서버 2, 3은 서버 1에 NUT라는 서비스로 연결되어 통신해서 ups 상태를 알아냄.

 

왜 NUT이냐! APCUPSD 라는 프로그램도 있기는 한데, 서버1이 synology nas이기 때문이고, 시놀로지 나스에서는 NUT이 기본으로 깔려있기 때문에 나머지 서버들을 NAS에 맞추는게 편하게 완성할 수 있는 세팅이라 이렇게 갔다.

 

https://networkupstools.org/ nut 홈페이지. 검색을 해도 자료가 워낙 없으니 홈페이지 매뉴얼을 잘 보자.

 

그리고 이게, 네트워크 UPS 서버 활성화를 체크해서 서버 2, 3이 접속할 수 있게 만들어주는 것이 포인트다. 허용된 Synology NAS 장치가 마치 synology nas만 되는 것 처럼 보이는데 딱히 그렇진 않고 서버 2, 3 ip주소를 등록해주자.

 

서버 2, 3은 우분투이다.

sudo apt install nut

로 nut을 설치.

 

/etc/nut/ups.conf 를 수정:

maxretry = 3  # 원래 이렇게 적혀있고 그 밑에다 아래 추가:

[NAS_HOSTNAME]
        driver = "nutclient"
        port = "ups@NAS_IP_ADDRESS"

NAS_HOSTNAME, NAS_IP_ADDRESS는 각자 알아서 자기 환경에 맞게 바꿔준다.

 

- ups monitoring 대몬을 설정하고 띄우자.
    - sudo vi /etc/nut/nut.conf, MODE는 netclient로 설정
    - sudo vi /etc/nut/upsmon.conf
    - MONITOR ups@NAS_HOSTNAME 1 monuser secret slave (MONITOR envvar 수정)
        - user, passwd는 master인 NAS의 /etc/ups/upsd.users 를 보면 적혀있다. default값에서 수정하지 않음. webui에선 id 비번을 따로 설정하는 메뉴가 있진 않다. (/etc/nut이 아니라 /etc/ups 폴더임을 주의)
    - NOTIFYCMD /home/ubuntu/usr/bin/slack_send_cron.sh : 슬랙에 curl을 이용해 notification을 보냄
    - NOTIFYFLAG 가 여러개가 있는데 +EXEC를 붙여줘야만 slack_send_cron.sh 가 실행됨.
        - NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
    - systemctl start nut-monitor.service 로 slack-monitor만 켜면 된다. 대몬이 세개인가 있을건데 클라이언트인 서버 2, 3에서는 이것만 돌리면 된다.

이렇게 하면 켜지고, ups에서 batter low flag가 오면 셧다운으로 설정된 명령어가 실행이 될 것이다.

설정파일이 환경변수로서 작동한다니, nut은 아주 원시적인 툴인 듯.

 

 

/etc/nut/upsmon.conf (코멘트 다 제거한 액기스)

MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"

# non-default
NOTIFYCMD /home/ubuntu/usr/bin/slack_send_cron.sh

POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower

# non-defaults
NOTIFYFLAG ONLINE       SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT       SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT      SYSLOG+WALL+EXEC
NOTIFYFLAG FSD  SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK       SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD      SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN     SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT     SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM       SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT     SYSLOG+WALL+EXEC

RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

설정 잡기 시행착오가 필요해서 어려웠다.

 

self-test는 짧아서 그런가, 실제로 슬랙으로 메시지가 오는 테스트를 수행할 수 없다. 그러니 UPS 전원을 직접 손으로 뽑아서 체크를 꼭 하자.

 

upsc라는 것이 있으니 디버그때 유용하게 쓰자

$ upsc ups@NAS_HOST_NAME
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.runtime: 4096
battery.runtime.low: 150
battery.type: PbAc
battery.voltage: 26.2
battery.voltage.nominal: 24.0
device.mfr: American Power Conversion
device.model: Smart-UPS_1500
device.serial: AS2210260475
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 5
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: DSM7-1-42464-211216
driver.version.data: APC HID 0.96
driver.version.internal: 0.41
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: UPS 04.1 / ID=1018
ups.mfr: American Power Conversion
ups.mfr.date: 2022/03/08
ups.model: Smart-UPS_1500
ups.productid: 0003
ups.serial: AS2210260475
ups.status: OL
ups.timer.reboot: -1
ups.timer.shutdown: -1
ups.vendorid: 051d

hmmm