パワーダウン時にZabbixからサーバーをシャットダウンする [ZABBIX]
Zabbixから他のサーバーをシャットダウンできるようにしましたが、Zabbixの動きがところどころおかしく(バグ?)、忘れないように、メモメモ。
オムロン 無停電電源装置(常時商用給電/正弦波出力) 500VA/300W BY50S
- 出版社/メーカー: オムロン
- メディア: Personal Computers
その時は、VoltageとStatusだけでしたが、充電率を簡易的に得て、特定の容量を下回った場合に、UPSに接続されているサーバーをZabbixからシャットダウンすることにします。
1.BY50Sの充電容量が30%を下回り
かつ
2.BY50Sがオフライン(電源断)
の時にシャットダウンします。
こんな状況です。
AC100V
|
-----------[BY50S]---------
| |
[サーバー:ws]---------------[サーバー:fs]
-Zabbixサーバー -Zabbixエージェント
-nut
1.充電容量の取得
ここに取得方法が記載されています。
battery.voltage - battery.voltage.low
battery.charge = ------------------------------------------------ x 100 %
battery.voltage.high - battery.voltage.low
battery.voltageの最大値と最小値を取得します。
最大値は充電完了後の状態で、battery.voltageを確認します。
# upsc by50s battery.voltage
最小値はBY50Sへの電源供給を止めた状態で、nutが自動的にシャットダウンを実施した時点のbattery.voltageを確認します。
battery.voltage.high=13.6
battery.voltage.low=11.9
これらを、/etc/nut/ups.confに追記します。
[by50s]
driver = blazer_usb
port = /dev/usb/hiddev0
desc = "Omron UPS"
vendorid = 0590
productid = 0081
subdriver = ippon
default.battery.voltage.high = 13.6
default.battery.voltage.low = 10.9
これで、battery.chargeを参照することで、簡易ですが、充電率を取得できます。
# upsc by50s battery.charg
100
# echo 'UserParameter=UPS.charge[*],upsc $1 battery.charge' >> /etc/zabbix/zabbix_agentd.conf
これで、ZabbixからUPSの充電率が見えるようになりました。
2.UPSが電源断がZabbixから判るようにします
じつは、battery.statusで判るのですが、Zabbixのトリガーがテキストの変化を検出できない(バグ?)ので、一旦数値型に書き換えて、その変化で電源断を検出します。
/usr/local/bin/ups-statusを新規作成。
これで、一旦、battery.statusを数値型に書き換えます。
--
#! /bin/sh
if [ ! -x /bin/upsc ]; then
"Couldn't find command upsc"
exit 1
fi
str="initial"
status="0"
str=`/bin/upsc $1 ups.status`
if [ "$str" = "OL BYPASS" ]; then
status="1"
elif [ "$str" = "OB" ]; then
status="2"
elif [ "$str" != "initial" ]; then
status="3"
fi
echo ${status}
exit 0
--
# /usr/local/bin/ups-status by50s1
これで、OK
あとは、Zabbixエージェントの設定と再起動
# echo 'UserParameter=UPS.status[*],/usr/local/bin/ups-status $1 ups.status' >> /etc/zabbix/zabbix_agentd.conf
# service zabbix-agent restart
これでOK
あとは、
3.Zabbixでトリガーの登録
と
4.Zabbixでアクションの登録
です。
3.Zabbixでトリガーの登録
Configuration - Template から作りたい先のテンプレートのtriggerを選択し、そこから、[Create Trigger]ボタンから作成。
テンプレートは、Linux_template内に作成。
Configuretion - Action の [Create Action]から新規作成。
Action Conditions と Action Operations を登録します。
Action ConditionsはTrigger SeverityはDisaster にしました。Trigger名とステータスからTriggerとして検出したかったのですが、Triggerを選択後[select]ボタンからtriggerを選択しても反映されないのでSeverityから検出するようにしました。他のTriggerでDisasterを選択している場合は他のTriggerでもシャットダウンが実行されることになってしまうので、注意が必要です。私の場合は、Disaster=サーバー停止が必要な状態という考えで、これでよしとしました。
Action OperationはOperation typeを"Remote command"に変更し、Remote command欄にシャットダウンコマンドを記載します。
fs:sudo /sbin/shutdown -h 0
:の前はシャットダウンしたい(Zabbix内でのサーバー名です。
ただ、Zabbixではshutdownコマンドを実行する権限がないので、シャットダウンしたいサーバーで/etc/sudoerを編集します。
$ sudo visudo
で
zabbix ALL=NOPASSWD: /sbin/shutdown
を追記して、保存します。
以上。。
あとは実際に、アンプラグしてみて、ちゃんとシャットダウンされるか確認します。
電源断の状態でかつ充電率が30%を下回っていると、シャットダウンされたサーバーの電源をonにしても、zabbix agentが立ち上がった段階で再度シャットダウンが実行されますよ。
Zabbix統合監視「実践」入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plusシリーズ)
- 作者: 寺島 広大
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 大型本
AVAHIがうるさいので、だまらせることに [Netatalk]
以前から、Avahi daemonがログでうるさかったのが気になっていたのですが、どうもバグっぽいので、/var/log/syslogから他へ捨てることに。
# service rsyslog restart
Apr 16 17:36:51 fs avahi-daemon[836]: Invalid query packet.
Apr 16 17:37:28 fs avahi-daemon[836]: last message repeated 2 times
Apr 16 17:45:06 fs avahi-daemon[836]: Invalid query packet.
Apr 16 17:46:29 fs avahi-daemon[836]: last message repeated 2 times
Apr 16 17:49:45 fs avahi-daemon[836]: Invalid query packet.
Apr 16 17:50:59 fs avahi-daemon[836]: last message repeated 2 times
Apr 16 19:34:10 fs avahi-daemon[836]: Invalid query packet.
Apr 16 19:35:35 fs avahi-daemon[836]: last message repeated 11 times
Apr 16 19:57:38 fs avahi-daemon[836]: Invalid query packet.
Apr 16 19:59:07 fs avahi-daemon[836]: last message repeated 3 times
Apr 16 20:00:57 fs avahi-daemon[836]: Invalid query packet.
Apr 16 20:02:07 fs avahi-daemon[836]: last message repeated 6 times
Apr 16 20:10:58 fs avahi-daemon[836]: Invalid query packet.
Apr 16 20:12:07 fs avahi-daemon[836]: last message repeated 6 times
Apr 16 20:23:32 fs avahi-daemon[836]: Invalid query packet.
Apr 16 20:24:38 fs avahi-daemon[836]: last message repeated 6 times
Apr 16 20:25:38 fs avahi-daemon[836]: last message repeated 7 times
Apr 16 20:40:18 fs avahi-daemon[836]: Invalid query packet.
Apr 16 20:41:39 fs avahi-daemon[836]: last message repeated 2 times
# vi /etc/rsyslog.d/40-avahi.conf
--
:programname, contains, "avahi-daemon" /var/log/avahi/avahi.log
:programname, contains, "avahi-daemon" ~
--
を新規で作成。
# vi /etc/logrotate.d/avahi
--
/var/log/avahi/avahi.log {
rotate 1
daily
missingok
notifempty
compress
delaycompress
}
--
これも新規で作成。
これで静かになる。対処療法的ですが。。。
apt-cache コマンド [Linux コマンド・設定 Memo]
インストールされているパッケージのバージョンや依存関係を知りたい時に利用します。
便利。
# apt-cache show avahi-daemon
Package: avahi-daemon
Priority: optional
Section: net
Installed-Size: 400
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
Architecture: amd64
Source: avahi
Version: 0.6.25-1ubuntu6.2
Depends: libavahi-common3 (>= 0.6.16), libavahi-core6 (>= 0.6.24), libc6 (>= 2.4), libcap2 (>= 2.10), libdaemon0 (>= 0.12), libdbus-1-3 (>= 1.1.1), libexpat1 (>= 1.95.8), upstart-job, adduser, dbus (>= 1.2.16-0ubuntu3), lsb-base (>= 3.0-6), bind9-host | host
Recommends: libnss-mdns
Suggests: avahi-autoipd
Filename: pool/main/a/avahi/avahi-daemon_0.6.25-1ubuntu6.2_amd64.deb
Size: 65204
MD5sum: 9d3449a755bb55700464eb0db478df5a
SHA1: 23e4310fddacc5707d9ca52c4c4e221e7887c069
SHA256: d3538191f5ae0dbfe76a0de4f02b74c1450b410a007e8a5030ebbbc93447eaa6
Description: Avahi mDNS/DNS-SD daemon
Avahi is a fully LGPL framework for Multicast DNS Service Discovery.
It allows programs to publish and discover services and hosts
running on a local network with no specific configuration. For
example you can plug into a network and instantly find printers to
print to, files to look at and people to talk to.
.
This package contains the Avahi Daemon which represents your machine
on the network and allows other applications to publish and resolve
mDNS/DNS-SD records.
Homepage: http://avahi.org/
Origin: Ubuntu
Supported: 5y
Task: ubuntu-desktop, eucalyptus-cloud, eucalyptus-cluster, eucalyptus-node, eucalyptus-storage, eucalyptus-walrus, print-server, kubuntu-desktop, kubuntu-netbook, edubuntu-desktop, xubuntu-desktop, ubuntu-netbook
Package: avahi-daemon
Priority: optional
Section: net
Installed-Size: 392
Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
Architecture: amd64
Source: avahi
Version: 0.6.25-1ubuntu6
Depends: libavahi-common3 (>= 0.6.16), libavahi-core6 (>= 0.6.24), libc6 (>= 2.4), libcap2 (>= 2.10), libdaemon0 (>= 0.12), libdbus-1-3 (>= 1.1.1), libexpat1 (>= 1.95.8), upstart-job, adduser, dbus (>= 1.2.16-0ubuntu3), lsb-base (>= 3.0-6), bind9-host | host
Recommends: libnss-mdns
Suggests: avahi-autoipd
Filename: pool/main/a/avahi/avahi-daemon_0.6.25-1ubuntu6_amd64.deb
Size: 64914
MD5sum: 9f4bb4b08a4c427899b648d7ef5922d7
SHA1: 148bbacf83e21d716250f9524e9e369b5c98e3c5
SHA256: ce31df3aa3d7d383c74ec57ae50e6dde6c73c1360789e72366d3b84d9c723076
Description: Avahi mDNS/DNS-SD daemon
Avahi is a fully LGPL framework for Multicast DNS Service Discovery.
It allows programs to publish and discover services and hosts
running on a local network with no specific configuration. For
example you can plug into a network and instantly find printers to
print to, files to look at and people to talk to.
.
This package contains the Avahi Daemon which represents your machine
on the network and allows other applications to publish and resolve
mDNS/DNS-SD records.
Homepage: http://avahi.org/
Origin: Ubuntu
Supported: 5y
Task: ubuntu-desktop, eucalyptus-cloud, eucalyptus-cluster, eucalyptus-node, eucalyptus-storage, eucalyptus-walrus, print-server, kubuntu-desktop, kubuntu-netbook, edubuntu-desktop, xubuntu-desktop, ubuntu-netbook