UPS 모니터링 · 7 min read · Oct 16, 2025
여러 OpenSuSE 10.3 서버에서 Network UPS Tools (NUT) 2.2.0을 사용하여 UPS 전원 상태 모니터링
여러 OpenSuSE 10.3 서버에서 Network UPS Tools (NUT) 2.2.0을 사용하여 UPS 전원 상태 모니터링
Network UPS Tools는 UPS 하드웨어를 모니터링하고 관리하기 위한 공통 인터페이스를 제공하는 프로그램 모음입니다.
Network UPS Tools (NUT) 프로젝트의 주요 목표는 UPS 하드웨어의 신뢰할 수 있는 모니터링을 제공하고 연결된 시스템의 안전한 종료를 보장하는 것입니다.
이는 다양한 UPS 하드웨어를 모니터링하기 위한 개발 프로젝트입니다. 많은 모델이 뒷면에 포트를 가지고 있어 다른 장치가 상태를 확인할 수 있습니다. 전원 및 배터리 상태에 대한 기본 정보를 제공하면, 큰 어려움 없이 지원될 수 있습니다. 고급 기능이 있는 고급 모델도 지원되어 온도 및 전압과 같은 값을 시간에 따라 추적할 수 있습니다.
네트워크 통신을 사용하여 여러 시스템이 단일 물리적 UPS를 모니터링하고 필요할 경우 특별한 “공유 하드웨어” 없이 함께 종료할 수 있습니다.
사전 설치
서버에서 모든 것이 작동하기 전에 UPS를 전원 콘센트에 연결하고 신호 케이블(직렬 또는 USB)을 upsd를 실행할 서버에 연결하십시오. NUT의 작동 방식과 하드웨어와의 상호작용에 자신이 생길 때까지 UPS의 콘센트에 서버 전원 케이블을 연결하지 마십시오. UPS를 테스트할 때 램프와 같은 더미 부하를 사용하는 것이 좋습니다. 이렇게 하면 UPS가 전원을 공급할 때와 꺼질 때를 보여주어 안전하게 실험하고 명령어에 대한 자신감을 얻을 수 있습니다.
설치
nut RPM 패키지를 설치하십시오. YaST2를 사용하는 경우 필요한 패키지가 자동으로 추가됩니다. 명령줄에서 다음을 사용할 수 있습니다.
yast2 -i nut루트로.
OpenSuSE 10.3에서는 nut 2.2.0이 설치됩니다.
이렇게 하면 필요한 모든 바이너리가 경로에 배치되고 구성 파일의 스켈레톤 세트가 생성됩니다. UPS 하드웨어를 정의하기 위해 루트로 파일을 편집해야 합니다.
구성
로컬 연결 UPS 구성
루트 셸을 열거나 예를 들어
sudo vi를 사용하여 구성 파일을 편집하십시오.
파일 /etc/ups/ups.conf에는 기본값이 포함된 더미 섹션이 있습니다. 다음과 같이 보입니다:
[myups]
driver = undefined
port = /dev/undefined
desc = "Local UPS"파일을 편집하고 드라이버를 UPS에 대한 올바른 드라이버를 가리키도록 설정하고, 신호 케이블을 연결한 포트와 설명을 추가하십시오. 지원되는 브랜드 및 모델 목록은 /usr/share/nut/driver.list를 참조하십시오.
다음은 직렬 포트에 연결된 APC SmartUPS 1400에 대한 내 항목입니다.
[apc_smartups_1400]
driver = apcsmart
port = /dev/ttyS0
desc = "APC SmartUPS 1400"사용자 및 권한을 구성하려면 /etc/ups/upsd.users 파일을 수정해야 합니다. 비밀번호는 설치 중에 자동으로 생성되므로 원하시면 이러한 임의의 값으로 설정된 상태로 두어도 됩니다. 기억할 수 있는 비밀번호를 사용하려면 파일을 편집하십시오. 기본 파일에는 두 개의 항목이 있으며, 명령줄에서 UPS를 보정하고 테스트할 수 있도록 관리자 사용자도 추가했습니다.
이 사용자들은 localhost에서만 연결할 수 있으므로 현재로서는 보안이 큰 문제가 아닙니다. 원격 슬레이브와 함께 사용할 경우, 이 예제에서 사용한 것보다 더 고급 비밀번호를 사용하는 것이 좋습니다.
다음은 /etc/ups/upsd.users 파일에 정의된 세 개의 사용자입니다.
[upsmaster]
password = masterpass123
allowfrom = localhost
upsmon master
[upsslave]
password = slavepass123
allowfrom = localhost
upsmon slave
[upsadmin]
password = upspass
allowfrom = localhost
actions = SET
instcmds = ALLupsd 데몬은 UPS를 폴링할 뿐이며, 상태를 확인하기 위해 다른 프로그램이 필요합니다. 이들의 구성 파일을 편집하여 UPS의 새 이름과 로그인 및 비밀번호를 반영하십시오.
/etc/ups/upsmon.conf# MONITOR myups@localhost 1 upsmaster 67fc9377aa master
MONITOR apc_smartups_1400@localhost 1 upsmaster masterpass123 master원격으로 작업하는 경우 전원이 복원될 때 “wall” 알림을 받는 것을 선호합니다. 다음 줄을 변경하십시오:
NOTIFYFLAG ONLINE SYSLOG다음으로:
NOTIFYFLAG ONLINE SYSLOG+WALL/etc/ups/upsmon.conf 파일에서.
/etc/ups/hosts.conf는 포함된 CGI 프로그램 전용이지만, 여기에도 올바른 정보를 추가할 수 있습니다.
/etc/ups/hosts.conf# MONITOR myups@localhost "Local UPS"
MONITOR apc_smartups_1400@localhost "APC SmartUPS 1400"이제 모든 프로그램을 시작할 수 있습니다:
rcupsd startlinux:~ # rcupsd start
NUT UPS 드라이버 시작 중… 완료
NUT UPS 서버 시작 중… 완료
NUT UPS 모니터 시작 중… 완료
작동 중인지 확인하고 UPS에서 저장된 값을 읽을 수 있는지 확인하십시오. 먼저 사용 가능한 장치를 나열하십시오:
upsc -l… 그런 다음 모든 값을 읽으십시오:
upsc linux:~ # upsc -l
apc_smartups_1400
linux:~ # upsc apc_smartups_1400
battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.restart: 00
[…]
테스트
서버를 전원에 연결하기 전에 UPS 장치의 전원 코드를 뽑아 현실적인 전원 장애를 테스트하십시오. 배터리로 전환되고 경고 메시지가 표시되어야 합니다. KDE에서 로그인하고 실행 중인 경우 KWrited에서 다음과 같은 메시지가 포함된 팝업이 표시됩니다:
Broadcast Message from upsd@linux
(어딘가) at 22:51
UPS apc_smartups_1400@localhost on battery
케이블을 다시 연결하고 전원이 복원되었다는 안심 메시지를 관찰하십시오.
Broadcast Message from upsd@linux
(어딘가) at 22:51
UPS apc_smartups_1400@localhost on line power
이것이 작동하면 서버를 종료하고 전원 코드를 UPS에 연결할 수 있습니다. 전원 장애가 발생하면 테스트 중에 보았던 메시지를 받게 됩니다. 배터리 충전이 너무 낮아 UPS가 “저전압” 신호를 보내면 NUT가 서버를 종료합니다. 이 임계값을 UPS 레지스터에서 설정할 수 있거나, UPS가 배터리로 전환되면 다음과 같은 스크립트를 작성해야 할 수 있습니다:
shutdown -h -t(
shutdown -c(정지 취소) 모든 UPS 장치가 이 “복원” 메시지를 보내지는 않습니다. 이 부분은 테스트하고 사용자 정의해야 합니다.
UPS에서 장비 실행
서버가 이제 배터리 전원으로 실행되고 있습니다. 배터리가 방전될 때까지 서버를 실제로 실행해 보기를 원할 수 있습니다. 대부분의 UPS 장치는 부하와 배터리 충전 비율을 표시할 수 있습니다. UPS는 정말 중요한 작업을 수행할 때 짧은 전압 상승이나 브라운아웃이 발생할 때 유용하며, 장시간 정전 시 배터리가 낮을 때 기계를 일시 중지, 절전 또는 종료할 수 있습니다.
BIOS를 설정하여 전원이 복원될 때 자동으로 기계를 시작하도록 설정하면 전원이 복원되면 자동으로 부팅됩니다. 반복적인 전원 장애가 발생하는 경우 서버를 계속 실행하고 배터리를 소모하고 싶지 않습니다. UPS를 전압 상승 및 스파이크로부터 보호하는 장치로 생각하고, 전원 장애 시 안전한 종료를 제공할 수 있습니다. 배터리로 서버를 실행할 수 있다고 해서 그렇게 하지 마십시오. UPS의 배터리는 방전되도록 설계되지 않았으며, 전원이 복원되면 일반적으로 완전 충전까지 몇 시간이 걸립니다. 정전 직후 안전망 없이 서버를 실행하고 싶지 않습니다 - 배터리가 충분히 남아 있는 상태에서 서버를 종료하고 전원이 복원된 후 모든 장치가 동시에 시작되어 전력을 소모하는 힘든 시기를 대비하여 배터리를 절약하십시오. 같은 이유로, UPS에 중요한 서버만 유지하십시오. 네트워크 장비, KVM 및 전원 장애 시 서버를 운영하는 데 필요한 모니터와 같은 필수 지원 하드웨어를 추가하는 것을 잊지 마십시오. 프린터와 대부분의 워크스테이션을 UPS 전원으로 실행하는 것을 피하십시오. 서버실에 비상 조명을 두어 정상 조명이 꺼졌을 때 작업할 수 있도록 하십시오. 자체 전원 공급 장치(예: 발전기)로 서버를 일정 시간 실행하는 경우, 방이 과열되는 것을 피하기 위해 HVAC도 같은 전원으로 유지하는 것이 좋습니다.
모든 장비가 동시에 전력을 소모하기 시작할 때 - 서버와 워크스테이션이 동시에 부팅되고 모든 모니터와 조명이 켜지고 레이저 프린터가 예열되면 - 퓨즈가 나갈 것으로 예상해야 합니다. 그러면 정전이 연장됩니다. 전원 장애 동안 모든 비필수 장비가 꺼져 있는지 확인하고, 이후 수동으로 다시 켜십시오.
원격 클라이언트
원격 클라이언트 허용
이제 로컬 UPS가 제대로 작동하고 있다는 것을 알았으므로 - 서버를 전원으로 유지하고 직렬 포트 또는 USB를 통해 OS에 알림을 보내고 - 나머지 전원 콘센트에 더 많은 서버를 연결하고 싶을 수 있습니다. 그러나 USB 또는 직렬 케이블은 하나뿐입니다. 이때 직렬 케이블이 있는 머신에서 NUT upsd 데몬이 다른 서버에 네트워크를 통해 알림을 보내야 합니다.
/etc/ups/upsd.conf를 편집하여 클라이언트를 허용하는 것으로 시작하십시오. 여기서는 전체 서브넷이 허용되며, 더 세분화하여 특정 IP만 포함하도록 할 수 있습니다.
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACL upsnet 192.168.1.0/24
ACCEPT localhost
ACCEPT upsnet
REJECT all이제 /etc/ups/upsd.users에서 이 네트워크에서 슬레이브가 연결할 수 있도록 허용하십시오:
[upsslave]
password = slavepass123
allowfrom = localhost upsnet
upsmon slave변경 사항을 반영하기 위해 upsd 데몬을 다시 시작하십시오.
rcupsd restartlinux:~ # rcupsd restart
NUT UPS 모니터 종료 중… 완료
NUT UPS 서버 종료 중… 완료
NUT UPS 드라이버 종료 중… 완료
NUT UPS 드라이버 시작 중… 완료
NUT UPS 서버 시작 중… 완료
NUT UPS 모니터 시작 중… 완료
더 나은 방법은 구성을 다시 로드하는 것입니다. 이는 드라이버 설정을 제외한 모든 설정을 재구성할 때 데몬을 다시 시작하는 것보다 훨씬 빠릅니다.
rcupsd reloadlinux:~ # rcupsd reload
NUT UPS 서비스 재로드(upsdrvctl 제외)… 완료
그리고 방화벽을 통해 클라이언트를 허용하십시오(기본적으로 OpenSuSE는 SuSEfirewall이라는 iptables 방화벽을 실행합니다). upsd는 TCP 포트 3493에서 수신하며, 기본적으로 모든 인터페이스에서 수신합니다.
SuSEfirewall2 서비스 정의를 생성하십시오. RPM에 포함되지 않았습니다. /etc/sysconfig/SuSEfirewall2.d/services/upsd라는 새 파일을 만들고 다음 내용을 추가하십시오:
# Service description for upsd, the UPS daemon from NUT
# (Network UPS Tools)
#
## Name: NUT upsd
## Description: Allows remote monitoring of UPS power status
# space separated list of allowed TCP ports
TCP="3493"
# space separated list of allowed UDP ports
UDP=""
# space separated list of allowed RPC services
RPC=""
# space separated list of allowed IP protocols
IP=""
# space separated list of allowed UDP broadcast ports
BROADCAST=""이제 시작하십시오.
YaST루트로 “보안 및 사용자” -> “방화벽”을 선택하십시오. 올바른 네트워크를 선택하고 드롭다운 목록에서 NUT upsd를 선택하십시오. 서비스를 추가하고 다음 버튼을 클릭하십시오. 이렇게 하면 /etc/sysconfig/SuSEfirewall2 구성 스크립트의 FW_CONFIGURATIONS_EXT 변수에 upsd가 허용된 서비스 목록에 추가됩니다. 이제 포트 3493이 iptables 방화벽을 통해 허용됩니다.
원격 클라이언트 구성
원격 머신에 nut을 설치하십시오. 이 머신의 이름은 linux64입니다.
/etc/ups/ups.conf의 모든 내용을 주석 처리하십시오. 로컬 UPS가 연결되어 있지 않기 때문입니다:
#[myups]
# driver = undefined
# port = /dev/undefined
# desc = "Local UPS"/etc/ups/upsmon.conf를 편집하여 UPS가 연결된 서버를 모니터링하십시오:
#MONITOR myups@localhost 1 upsmaster 04fb251a3f master
MONITOR apc_smartups_1400@linux 1 upsslave slavepass123 slaveUPS 서버를 /etc/ups/hosts.conf에 추가하십시오:
#MONITOR myups@localhost "Local UPS"
MONITOR apc_smartups_1400@linux "APC SmartUPS 1400"이제 upsd 서비스를 시작하십시오. 실제 upsd 및 UPS 드라이버는 구성되지 않았으므로 무시하고 upsmon만 시작합니다.
rcupsd startlinux64:~ # rcupsd start
NUT UPS 모니터 시작 중… 완료
연결이 작동하는지 확인하고 원격 UPS 서버의 상태 값을 읽을 수 있는지 확인하십시오.
upsc apc_smartups_1400@linuxlinux64:~ # upsc apc_smartups_1400@linux
battery.alarm.threshold: 0
battery.charge: 094.0
battery.charge.restart: 00
[…]
UPS를 다시 테스트하고 새 클라이언트가 메시지를 수신하는지 확인하십시오.
Broadcast Message from upsd@linux64
(어딘가) at 0:13 …
UPS apc_smartups_1400@linux on battery
이 서버의 전원 케이블을 UPS에 연결하고 이제 두 대의 서버가 정전으로부터 보호되고 있으며 모두 전원 상태를 모니터링하고 있습니다.
참고 문헌
- Network UPS Tools (NUT) 홈페이지
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.