Apcupsd Network Monitoring


以前ホームネットワークの停電対策をした時のメモ。(ホストipは例)

ここで注意したいのは、UPSが供給できる電源容量は単なる目安としてとらえて、できる限り負荷は少なくなるようにすること。
電源異常が起きた場合に急激な負荷がバッテリーにかかるのと、稼働時間が短くなってしまうから。なるべくなら多少の停電にはバッテリー稼働だけで30分くらい持つと不安が少なくなる。
ちなみにうちのマシン場合はピーク時120W/h、アイドル(通常)時45W/hで、マスターの応答がなくなったらスレーブ(バックアップのマシン)が立ち上がるようになってるので、普段はUPS一台にマシン一台の構成。
連続稼働可能時間はブラウザ読みで大体78分・負荷率は11%くらい。

UPS NAME Master Slave
SUA750-1
APC Smart-UPS 750JB
Web Server (main)
192.168.0.100
Web Server (backup)
192.168.0.101
SUA750-2
APC Smart-UPS 750JB
Mail Server (main)
192.168.0.200
Mail Server (backupMX)
192.168.0.201
SUA750-3
APC Smart-UPS 750JB
File Server
192.168.1.100
DB Server
192.168.1.200
SUA750-4
APC Smart-UPS 750JB
Client PC Win
192.168.1.10
DNS/DATA Backup Server
192.168.1.2

基本的には以前セットアップした方法と殆ど変わりがないが、iptablesで必要な通信だけ許可するようにしておく。
ここでの前提として、

  • 同じUPSに繋がれたマスター側とスレーブ側ではネットワークで通信ができている。
  • ブラウザで監視するWebサーバと全てのサーバ・クライアントPCでのネットワーク通信ができている。
  • ここではApcupsdが使用するポートとしてデフォルトの3551のNISポートで行う。

マスター側の設定は以前インストールした方法のままで、ここではスレーブ側の設定をする。
スレーブ側で変更するのは以下の点のみ。

UPSNAME SUA750-1		# 電源コードを繋いでいるUPSNAME
UPSCABLE ether			# マスター側とネットワークケーブルで接続
UPSTYPE net			# ネットワークで監視する
DEVICE 192.168.0.200:3551	# マスター側マシンのipとポート
NETSERVER on			# ネットワークでの監視を有効にする(CGIで見るサーバ)

と簡単な設定ではこれだけでOK。
あとはそれぞれのサーバ・マシンでシャットダウンにかかる時間が違うので良く調べておく。
具体的には、マスターとスレーブを同時にシャットダウンさせるか、それともスレーブを先にシャットダウンさせるかのプランを練る。考慮する点で難しいのはそれぞれのマシンが何か時間のかかる作業をしてる時に停電が起きたら、が問題。

  1. 電源異常が発生してからどのくらい瞬停として様子を見るか。
    • ONBATTERYDELAYの値(秒後)で設定。
      この秒数を過ぎると電源異常(停電)とみなしてApcupsdデーモンがシャットダウンシーケンスに入る。
      ※次のシャットダウン動作をする閾値前に電源が復帰すればシャットダウンシーケンスが解除されてUPSが自動で充電を始める。
  2. マスター・スレーブそれぞれに設定した閾値に達するとApcupsdデーモンがマシンをシャットダウンさせる。
    • BATTERYLEVELの値(%)# バッテリー残量で設定。
    • MINUTESの値(分)# 稼働可能時間で設定。
  3. マシンがシャットダウンする直前にUPSにシャットダウン信号が送られる。
    うちのUPSのデフォルトではマシンがシャットダウンしてから(正確にはマシンから信号を受け取ってから)180秒後にUPSの電源が落ちる。
    • SLEEPの値(秒)で設定。
    • ※当然だが、UPSがシャットダウンするとマシンへの電源供給は断たれるので、シャットダウン後にアフタークーリングをするようなデバイスがある場合、それも止まる。
  4. 電源回復後にUPSの電源が入り、バッテリー残量が閾値以上に達した場合かまたは即時にマシンへ電源を供給。
    • RETURNCHARGEの値(%)で設定。
      電源回復後、この閾値までバッテリー残量が充電されたらマシンへの電源を供給。
    • WAKEUPの値(秒)で設定。
      上記のRETURNCHARGEのバッテリー残量まで達していた場合、電源が回復してから指定した秒後にマシンへ電源を供給する。
      ※0だと即座に電源が供給されるが、再び停電が起こった場合はバッテリーの残容量に注意しないとならない。
  5. 電源が供給されてマシンが起動する。
    • BIOSの設定でAllways ONとしておくと電源回復後自動起動する。
      ※BIOSの設定はそれぞれのマザーボードによって違うので確認しておく。
    • マシンの起動順を設定するのが必要な場合は、Wake ON LANで順番にパケットを投げるようにする。

状態を監視するWebサーバの設定。

$ vi /etc/apcupsd/multimon.conf
# Sample multimon configuration file
#
# This file is not required.  Without it, multimon will use the default
# field layout.
#
# Temperature selection
#
# Pick "TEMPC" for Celsius or "TEMPF" for Fahrenheit.  This will override
# the --enable-celsius setting from the compile.  UPSTEMP (below) will
# use this setting by default.

TEMPC

# Format:
# FIELD <variable> "<field name>" "<field suffix>"
#
# <variable> is either a word from the UPS protocol like battchg (see the
# table in src/cgi/upsfetch.c) or a special word in uppercase.
#
# Special words are:
# MODEL    - Show the model name for this system in cyan
#
# STATUS   - Parse the status for this system using the appropriate color
#
# UPSTEMP and AMBTEMP use the default scale.  This is set to C if you use
# --enable-celsius at compile time *or* if you use "TEMPC" above.
#
# UPSTEMP  - Show the UPS temperature in the default scale (suffix ignored)
# AMBTEMP  - Show the ambient temperature in the default scale (suffix ignored)
#
# UPSTEMPC - Show the UPS temperature in degrees C (suffix ignored)
# UPSTEMPF - Show the UPS temperature in degrees F (suffix ignored)
# AMBTEMPC - Show the ambient temperature in degrees C (suffix ignored)
# AMBTEMPF - Show the ambient temperature in degrees F (suffix ignored)
#
# They're called "special" since they actually understand the content
# being printed and do other things based on what's in there.
#
# <field name> is what you'd like this column to be called on the page.
# Remember that this is HTML, so you can actually embed markup in here.
# This means you can even include images here.  You can include quotes
# (and backslashes!) in the string by escaping them with a backslash (\).
#
# <field suffix> is typically something like % or VAC.  It's useful if
# you want to convey the units that apply to a value.
#
# Example config

FIELD SYSTEM "System" ""
FIELD MODEL "Model" ""
FIELD STATUS "Status" ""
FIELD battpct "Battery Chg" "%"
FIELD utility "Utility" "VAC"
FIELD loadpct "UPS Load" "%"
FIELD UPSTEMP "UPS Temp" ""
FIELD runtime "Batt. Run Time" "min."
FIELD DATA   "Data" "All data"

# These are only useful if you have a Smart-UPS model with the Measure-UPS II
# measurement card.  No other models presently support these features.
#
#FIELD AMBTEMP "Ambient Temp" ""
#FIELD HUMIDITY "Ambient Humidity" "%"

監視するhostを設定する。

$ vi /etc/apcupsd/hosts.conf
# Network UPS Tools - hosts.conf
#
# This file does double duty - it lists the systems that multimon will
# monitor, and also specifies the systems that upsstats is allowed to
# watch.  It keeps people from feeding random addresses to upsstats,
# among other things.  upsimage also uses this file to know who it
# may speak to. upsfstats too.
#
# Usage: list systems running upsd that you want to monitor
#
# MONITOR <address> "<host description>"
#
# Please note, MONITOR must start in column 1 (no spaces permitted)
#
# Example:
# MONITOR 10.64.1.1 "Finance department"
# MONITOR 10.78.1.1 "Sierra High School data room #1"
#
MONITOR 192.168.0.200 "Web Server"
MONITOR 192.168.0.201 "Web Backup"
MONITOR 192.168.0.100 "Mail Server"
MONITOR 192.168.0.101 "Mail Backup"
MONITOR 192.168.1.100 "File Server"
MONITOR 192.168.1.200 "DB Server"
MONITOR 192.168.1.10 "Main PC"
MONITOR 192.168.1.2 "DNS/Backup"

apcupsd用のhosts.confに追記すると反映されて、監視サーバにアクセス(http://監視サーバip/cgiディレクトリ/multimon.cgi)するとそれぞれの状態が見れるようになる。

APC Smart-UPS SUA750JB