「LinkStation」タグアーカイブ

ネットワーク機器の監視

ファイルサーバーの監視もSNMP経由でMRTGで纏めてやってみようと思い
ファイルサーバー側のSNMPの設定を行ってみました。
繋がりません・・・
色々なサイトを見て設定は間違っていないと思うのですが。

試しにsnmpwalk で値が取得できるか試してみました。

snmpwalk -v 1 localhost -c pubilic

ちゃんと取得できます。

snmpwalk -v 1 192.168.X.X -c pubilic

IPだと取得できません・・・

hostsからIPが漏れていたので追加するとIPでも動きました。
しかしhostsにWebサーバーのIPを追加してもTimeout: No Response from 192.168.X.X
と表示されるだけで値は返って来ません。
ちゃんとネット経由用の設定も追加したのに何故だろうか?

※追記
snmpのバージョンアップで基本的に127.0.0.1からしか繋がらないようになったようです。
恐らく殆どのサイトがバージョンアップ前の古い記事でこの設定が書かれていないようです。
この設定を解除するには以下のファイルに手を加えます。

/etc/default/snmpd

#SNMPDOPTS=’-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1′
SNMPDOPTS=’-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid’

単純にSNMPDOPTSの127.0.0.1を外すだけで良いようです。
この後snmpdを再起動してあげれば無事ネット経由での取得が可能になりました。

ちなみに-u snmp オプションを消すと自前で登録したスクリプトなどをroot権限で動かすことが可能になります。
逆に言えばroot権限で実行させたい場合は外す必要があります。

ネットワーク経由のシャットダウン

UPSのランタイムも正常になったのでネットワーク経由で
バックアップ用のNASにもapcupsdをインストールし
ネットワーク経由でのシャットダウン環境を構築します。

設定に関しては詳しいサイトがあったのでそちらを参考にしました。
http://tejix.jp/cgi-bin/tex/wiki.cgi?APCUPSD
※既にリンク先のサイトはなくなっているようです

ただここに書いてある設定では私の環境では動かなかったので少しだけ補足を。
マスターもスレーブも以下の設定にしないと動きませんでした。

NETIP 0.0.0.0
NISPORT 3551 (参考サイトではマスターは3552となっていました)

とりあえずこれで正常に動いているようです。

また、MRTGにUPSのロードキャパシティとバッテリー電圧の項目も追加しました。
あとは同じUPSに繋がってるWindowsXPも同じようにスレーブ設定してあげれば
ネット経由でのUPS電源連動は完了となります。
(マシン完のハブもUPSに繋がないと停電時は全く意味を持たないので注意が必要です)

※追記
Windows版も導入してみました。
Windows版はインストール先をC直下にしないとうまくconfファイルを読んでくれないようです・・・
またNETPORTがdebian版と違って6666になっているので忘れずに変更しましょう。
私は忘れて暫くconfファイルとにらめっこしてしまいました(笑)

#—————————————————————–
# UPS Load Capacity & Battery Voltage
#—————————————————————–
Target[upsLoadcapacity]: `/sbin/apcaccess status | awk ‘/^LOADPCT/ {print $3*10} /^BATTV/{print $3*10}’ && uname -n`
Maxbytes[upsLoadcapacity]: 1500
Options[upsLoadcapacity]: gauge, growright, absolute, nopercent, noinfo, unknaszero
YTicsFactor[upsLoadcapacity]: 0.1
Factor[upsLoadcapacity]: 0.1
YLegend[upsLoadcapacity]: UPS LCapa BVolt
ShortLegend[upsLoadcapacity]:
LegendI[upsLoadcapacity]: Capa(%)
LegendO[upsLoadcapacity]: Volt(V)
Legend1[upsLoadcapacity]: Load Capacity [LOADPCT]
Legend2[upsLoadcapacity]: バッテリー電圧 [BATTV]
Unscaled[upsLoadcapacity]: ymwd
Title[upsLoadcapacity]: UPS Load Capacity & Battery Voltage
PageTop[upsLoadcapacity]:

UPS Load Capacity & Battery Voltage for SmartUPS 700J

System:APC SmartUPS 700J
Maintainer:Root

ランタイム時間の較正

ランタイム較正を数度行うもUPSの残時間は変わらず・・・
(バッテリーに負荷が掛かって痛むんですよね)

色々調べてみたんですがとにかくコアな部分の情報が少ないですね。
APC smart protocolを隅々まで読んでいくとBatteryConstantsという項目があります。
このBatteryConstantsを使用して残時間を計算するらしいです。
SU700Jのデフォルト値は96みたいなのですがacptestで見てみると36になってます・・・
これが原因ですね。

しかしBatteryConstantsの変更方法が分かりません。
コマンドから0を打っても36が表示されるだけで変更は出来ません。
原因が特定出来たのに変更方法が分からないとは。
(このUPS中古で買ったんですが色々と値が変になってる。前の持ち主はどんな使い方してたのか(笑))

更に色々と調べてみるとapc-fixというソフトで規定値に戻せるそうです。
apc-fixをダウンロードしてWindowsから動かしてみるとメニューにoption項目があり
その中に書き戻してくれるオプションがあったのでチェックしてみる。
あれ、何も動かない・・・
何か良く分からないが一旦apc-fixを終了して再起動するとパラパラと36から96まで数字が変わっていった。
起動時に有効になる仕様ですか!!

本当に変わってるのか疑わしかったのでLinuxマシンに繋ぎ変えてapctestで再確認してみたらちゃんと変わっているようです。
ランタイム時間もload10%程度で120分と正常になったようです。
これでやっとランタイム時間の計算も正常になりました。
めでたし、めでたし。

UPSと通信してみる!

UPSの通信ケーブルが届いたので実際に通信を行ってみました。

まずは設定済みのconfでapctesが実行できるか?です。
apctestを実行してみるとあっさりと繋がりました。
EEPROMのバッテリー交換日付を書き換えてランタイム較正を実行。
ランタイム較正が終わってもランタイム時間が短い・・・
バッテリーの不良かと思い実際にUPSのコンセントを抜いてみる。
確かにバッテリーメーターの最低目盛までは4分程度で到達(負荷40%程度)
しかしそこから実際に電源が落ちるまでは20分近く持つのでした。

これってバッテリーの電圧低下が実残量があっても早いってことなんだろうな。
純正に使われているメーカーではなくFiam社製のバッテリーと交換したのが仇になったのだろうか?
UPSがバッテリーの残量を電圧で検知している以上はどうしようもないのだろうか・・・
負荷10%程度だと40分くらいと表示されるが実際は1時間半くらい持つんですが。

とりあえずUPSとの通信は正常に行われるのでこの辺は今後の課題ということにして終了。
apcupsdを実行するとwebから見るCGIもMRTGも正常に値が取得出来ています。

UPSの状態をMRTGで表示する!

まだUPSのケーブルは届いてません・・・
しかし先に設定しちゃいます(笑)

とりあえずUPS監視に必要なパッケージをインストールします。
今回はapcupsdを使用します。
apt-get install apcupsd
apt-get install acpupsd-cgi
二つ目の奴はUPSの状態をCGIで表示するためのものです。
debianではapache2のCGIディレクトリにうまくインストールされました。

apcupsdの設定は沢山サイトがあるのでそれを参考にさせてもらいました。

そしてMRTGの設定に入ります。
こちらもサイトを参考に設定しました。
実際にMRTGのページを表示してみましたがまだUPSとケーブルで繋がっていないので
当然ながら全て0で表示されます・・・
あとはUPSのケーブルが届くのを待つばかりです。

#—————————————————————–
# UPS温度、容量
#—————————————————————–
Target[upsTemperature_Charge]: `/sbin/apcaccess status | awk ‘/^ITEMP/ {print $3*10} /^BCHARGE/ {print $3*10}’ && uname -n`
MaxBytes[upsTemperature_Charge]: 1200
Options[upsTemperature_Charge]: gauge, growright, absolute, nopercent, noinfo, unknaszero
YTicsFactor[upsTemperature_Charge]: 0.1
Factor[upsTemperature_Charge]: 0.1
YLegend[upsTemperature_Charge]: UPS Capa.&Char.
ShortLegend[upsTemperature_Charge]:
LegendI[upsTemperature_Charge]: 容量(%)
LegendO[upsTemperature_Charge]: 温度(deg.)
Legend1[upsTemperature_Charge]: バッテリィ容量 [BCHARGE]
Legend2[upsTemperature_Charge]: 温度 [ITEMP]
Title[upsTemperature_Charge]: UPS温度、容量
PageTop[upsTemperature_Charge]:

UPS温度、容量 for SmartUPS 700J

System:APC SmartUPS 700J
Maintainer:Root

#—————————————————————–
# UPS入、出力電圧
#—————————————————————–
Target[upsVoltage]: `/sbin/apcaccess status | awk ‘/^LINEV/ {print $3*10} /^OUTPUTV/ {print $3*10}’ && uname -n`
Maxbytes[upsVoltage]: 1200
Options[upsVoltage]: gauge, growright, absolute, nopercent, noinfo, unknaszero
YTicsFactor[upsVoltage]: 0.1
Factor[upsVoltage]: 0.1
YLegend[upsVoltage]: UPS Voltage(v)
ShortLegend[upsVoltage]: V
LegendI[upsVoltage]: IN
LegendO[upsVoltage]: OUT
Legend1[upsVoltage]: 入力電圧 [LINEV]
Legend2[upsVoltage]: 出力電圧 [OUTPUTV]
Title[upsVoltage]: UPS入、出力電圧
PageTop[upsVoltage]:

UPS入、出力電圧 for SmartUPS 700J

System:APC SmartUPS 700J
Maintainer:Root

USB-シリアル変換ケーブルを認識

前回の妄想から2日。
秋月電子からUSB・シリアル変換ケーブルが届きました。

kernelも前もってコンパイルしていたので早速USBに挿してみると・・・
認識しました!
usbserial_generic 2-1:1.0: usb_probe_interface – got id
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
pl2303 2-1:1.0: usb_probe_interface
pl2303 2-1:1.0: usb_probe_interface – got id
pl2303 2-1:1.0: pl2303 converter detected
usb 2-1: pl2303 converter now attached to ttyUSB0
usbcore: registered new driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver

ただ色々調べてた時にkernel標準ドライバはコマンドの送信が出来なくてパッチが必要と複数のサイトに書いてあった。
なんでも秋月電子で売ってる変換ケーブルのチップはPL-2303ではなくPL-2303XとXが付くらしいです。
そこでkernel標準のPL-2303ドライバでコマンド送信が可能か試してみることに。
しかしクロスのシリアルケーブルが家にありません・・・
UPSのシリアルケーブルもまだ届いてません・・・
どうやって確認するか悩みましたがシリアル接続のモデムがあったのでそれで試すことに!

まずcuコマンドが使えるように apt-get install cu
ttyUSB0のパーミッションを変更しときます。
テストなので適当に・・・ chmod 777 /dev/ttyUSB0
モデムの電源を入れていざ接続開始!

# cu -l /dev/ttyUSB0
Connected.
at[ENTER]
OK
at+fmfr?[ENTER]
ROCKWELL

OK
at+fmdl?[ENTER]
AC/K56

OK
~.[ENTER]

Disconnected.

※参考:オモイノホカ日々徒然
※既にリンク先のサイトはなくなっているようです

ATコマンドの送受信が出来ますね。
kernel2.6.16.16のPL-2303ドライバはPL-2303Xでもパッチなしで動くようです。
USB-シリアル変換ケーブルの動作確認はこれにて終了!