Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
13
Help us understand the problem. What is going on with this article?
@kizawa2020

APC社UPSの状態をzabbixで監視する

More than 3 years have passed since last update.

APC(シュナイダーエレクトリック)社UPSの状態をzabbixで監視したいと思います。
通常は電源障害時に発生するログを監視する程度で十分かと思いますが、せっかく採れる情報を有効活用したいと思います。

当方の環境

参考までに当方の環境を説明しますが、
Linuxサーバ(CentOS6)に、SmartUPS™ XL 500をUSB接続で接続しています。
当該サーバにzabbix-agentがインストールされており、v3にバージョンアップ済みです。

apcupsdの導入

インストール

epelリポジトリより、apcupsdをインストールします。
epelリポジトリの有効化方法は割愛します。

# yum --enablerepo=epel install apcupsd

設定

/etc/apcupsd/apcupsd.conf を適切に設定します。
但し(スタンドアロンの場合は)最低限、以下程度の設定を行えば問題ないかと思います。
conf中の説明が丁寧なので、説明通りに設定すれば問題ありません。

  • UPSCABLE : 接続方法の指定
  • UPSTYPE : 接続デバイス名
  • ONBATTERYDELAY : 電源障害発生後、何秒後にイベント動作を開始するか
  • BATTERYLEVEL : バッテリー残容量(%)を下回ったらシャットダウン処理を開始するか
  • MINUTES : バッテリーでの残稼働時間(分)を下回ったらシャットダウン処理を開始するか

状態の確認

設定完了後、apcupsdを起動します。

# service apcupsd start

apcaccessコマンドで状態を取得できるか確認します。

[root@server ~]# apcaccess
APC      : 001,045,1139
DATE     : 2016-10-02 22:14:07 +0900
HOSTNAME : server.example.net
VERSION  : 3.14.12 (29 March 2014) redhat
UPSNAME  : server.example.net
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2016-08-26 00:13:17 +0900
MODEL    : Smart-UPS 500 XL
STATUS   : ONLINE
LINEV    : 102.2 Volts
LOADPCT  : 7.8 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 153.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 102.2 Volts
SENSE    : High
DWAKE    : -1 Seconds
DSHUTD   : 90 Seconds
LOTRANS  : 92.0 Volts
HITRANS  : 108.0 Volts
RETPCT   : 0.0 Percent
ITEMP    : 34.2 C
ALARMDEL : 30 Seconds
BATTV    : 27.3 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Automatic or explicit self test
NUMXFERS : 3
XONBATT  : 2016-10-02 10:29:17 +0900
TONBATT  : 0 Seconds
CUMONBATT: 25 Seconds
XOFFBATT : 2016-10-02 10:29:23 +0900
LASTSTEST: 2016-10-02 10:29:17 +0900
SELFTEST : NO
STESTI   : 14 days
STATFLAG : 0x05000008
MANDATE  : 2011-06-10
SERIALNO : XX0000000000
BATTDATE : 2011-06-10
NOMOUTV  : 100 Volts
NOMBATTV : 24.0 Volts
FIRMWARE : 684.20.A USB FW:11.
END APC  : 2016-10-02 22:14:41 +0900

zabbixでの情報取得

本題に入ります。
上記、apcaccessコマンドの結果には設定値が混ざっていますが、中には有用な情報が含まれていることに気付きます。以下の情報は変動する値と思われ、取得する価値がありそうです。

  • LINEV : 入力(商用電源)電圧(V)
  • OUTPUTV : 出力電圧(V)
  • BATTV : バッテリー電圧(V)
  • LOADPCT : 負荷(%)
  • BCHARGE : バッテリー残容量(%)
  • TIMELEFT : バッテリー稼働時間(分)
  • ITEMP : 内部温度(℃)

UserParameterの設定

追加情報を取得する場合、zabbix-agentdにUserParameterの設定を追加します。
値のみを適切に渡せるよう、/etc/zabbix/zabbix-agentd.confのUserParameterの段落に以下の記載を追記します。

UserParameter=UPS.LINEV,apcaccess -u|grep LINEV|cut -d ':' -f2|cut -d ' ' -f2
UserParameter=UPS.OUTPUTV,apcaccess -u|grep OUTPUTV|cut -d ':' -f2|cut -d ' ' -f2
UserParameter=UPS.BATTV,apcaccess -u|grep ^BATTV|cut -d ':' -f2|cut -d ' ' -f2
UserParameter=UPS.LOADPCT,apcaccess -u|grep LOADPCT|cut -d ':' -f2|cut -d ' ' -f2
UserParameter=UPS.BCHARGE,apcaccess -u|grep BCHARGE|cut -d ':' -f2|cut -d ' ' -f2
UserParameter=UPS.TIMELEFT,apcaccess -u|grep TIMELEFT|cut -d ':' -f2|cut -d ' ' -f2
UserParameter=UPS.ITEMP,apcaccess -u|grep ITEMP|cut -d ':' -f2|cut -d ' ' -f2

設定完了後、zabbix-agentを再起動します。

アイテムの設定

設定したUserParameterを取り込むため、zabbixアイテムの設定を行います。(設定⇒ホスト⇒サーバ名)
item1.png
当方では以下のように設定しました。
アプリケーション名を設定しカテゴライズするとよいでしょう。

UserParameterで設定したキー名 名前 データ型 単位
UPS.LINEV UPS Line Voltage 数値(浮動小数) V
UPS.OUTPUTV UPS Output Voltage 数値(浮動小数) V
UPS.BATTV UPS Battery Voltage 数値(浮動小数) V
UPS.LOADPCT UPS Load Percent 数値(浮動小数) %
UPS.BCHARGE UPS Battery Capacity 数値(浮動小数) %
UPS.TIMELEFT UPS Time Left 数値(浮動小数) min
UPS.ITEMP UPS Internal Temperature 数値(浮動小数)

取得状況の確認

以上の設定で、値が取得できるようになっているはずです。(監視データ⇒最新データ)
また、しばらく取得すればグラフが描かれます。
item2.png

zabbixでの活用

カスタムグラフの作成

上記の設定のみでも単独のパラメータのグラフが確認できますが、視認性を上げるためカスタムグラフの作製をお勧めします。(設定⇒ホスト⇒当該サーバの「グラフ」)
当方では以下3つのカスタムグラフを作成しました。

  • 電圧 : UPS Line Voltage , UPS Output Voltage , UPS Battery Voltage の3つ g-voltage.png

  • 負荷 : UPS Load Percentのみ g-load.png

  • 温度 : サーバの sensorsコマンド(lm_sensors) で取得したCPU温度、サーバ温度とUPS温度の3つをグラフ化 g-temp.png

監視

商用電圧が閾値を下回った際にアラームが鳴るようにします。(設定⇒ホストで、当該ホストにトリガーを作成)
当方では条件式を {server:UPS.LINEV.last(#2)}<80 とし、2分間にわたり80Vを下回る場合に通知するようにしています。

13
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kizawa2020
SIerにてインフラ系のエンジニアを担当しております。 自宅でのLinuxサーバ運用歴15年ほどですが、最近は地味に活動しています。 最近はAWSなどクラウドやDevOps関連、IoTあたりに興味分野を伸ばしています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
13
Help us understand the problem. What is going on with this article?